in tools/migration/crosstool_to_starlark_lib.go [433:468]
func getActions(crosstool *crosstoolpb.CrosstoolRelease) (
map[string][]string, map[string]map[string][]string, error) {
actionNameToAction := make(map[string]map[string][]string)
toolchainToActions := make(map[string][]string)
for _, toolchain := range crosstool.GetToolchain() {
id := toolchain.GetToolchainIdentifier()
var actionName string
if len(toolchain.GetActionConfig()) == 0 {
toolchainToActions[id] = []string{}
}
for _, action := range toolchain.GetActionConfig() {
if aName, ok := actionNames[action.GetActionName()]; ok {
actionName = aName
} else {
actionName = strings.ToLower(action.GetActionName())
actionName = strings.Replace(actionName, "+", "p", -1)
actionName = strings.Replace(actionName, ".", "_", -1)
actionName = strings.Replace(actionName, "-", "_", -1)
}
stringAction, err := parseAction(action, 1)
if err != nil {
return nil, nil, fmt.Errorf(
"Error in action_config '%s': %v", action.GetActionName(), err)
}
if _, ok := actionNameToAction[actionName]; !ok {
actionNameToAction[actionName] = make(map[string][]string)
}
actionNameToAction[actionName][stringAction] = append(
actionNameToAction[actionName][stringAction], id)
toolchainToActions[id] = append(
toolchainToActions[id],
strings.TrimPrefix(strings.ToLower(actionName), "action_names.")+"_action")
}
}
return toolchainToActions, actionNameToAction, nil
}