(dockerCli command.Cli, cmd *cobra.Command, args, osArgs []string)
| 19 | } |
| 20 | |
| 21 | func processAliases(dockerCli command.Cli, cmd *cobra.Command, args, osArgs []string) ([]string, []string, []string, error) { |
| 22 | var err error |
| 23 | var envs []string |
| 24 | aliasMap := dockerCli.ConfigFile().Aliases |
| 25 | aliases := make([][2][]string, 0, len(aliasMap)) |
| 26 | |
| 27 | for k, v := range aliasMap { |
| 28 | if _, ok := allowedAliases[k]; !ok { |
| 29 | return args, osArgs, envs, fmt.Errorf("not allowed to alias %q (allowed: %#v)", k, allowedAliases) |
| 30 | } |
| 31 | if c, _, err := cmd.Find(strings.Split(v, " ")); err == nil { |
| 32 | if !pluginmanager.IsPluginCommand(c) { |
| 33 | return args, osArgs, envs, fmt.Errorf("not allowed to alias with builtin %q as target", v) |
| 34 | } |
| 35 | } |
| 36 | aliases = append(aliases, [2][]string{{k}, {v}}) |
| 37 | } |
| 38 | |
| 39 | args, osArgs, envs, err = processBuilder(dockerCli, cmd, args, os.Args) |
| 40 | if err != nil { |
| 41 | return args, os.Args, envs, err |
| 42 | } |
| 43 | |
| 44 | for _, al := range aliases { |
| 45 | var didChange bool |
| 46 | args, didChange = stringSliceReplaceAt(args, al[0], al[1], 0) |
| 47 | if didChange { |
| 48 | osArgs, _ = stringSliceReplaceAt(osArgs, al[0], al[1], -1) |
| 49 | break |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | return args, osArgs, envs, nil |
| 54 | } |
no test coverage detected
searching dependent graphs…