func initInstallCommand(flags *flag.FlagSet, installer, defaultDBPath, defaultProfilesPath string) { initCommon(flags, &installFlags.commonFlagValues, installer, defaultDBPath, defaultProfilesPath) profiles.RegisterTargetAndEnvFlags(flags, &installFlags.target) flags.BoolVar(&installFlags.force, "force", false, "force install the profile even if it is already installed") for _, name := range profilesmanager.Managers() { profilesmanager.LookupManager(name).AddFlags(flags, profiles.Install) } }
func initUninstallCommand(flags *flag.FlagSet, installer, defaultDBPath, defaultProfilesPath string) { initCommon(flags, &uninstallFlags.commonFlagValues, installer, defaultDBPath, defaultProfilesPath) profiles.RegisterTargetFlag(flags, &uninstallFlags.target) flags.BoolVar(&uninstallFlags.allTargets, "all-targets", false, "apply to all targets for the specified profile(s)") flags.BoolVar(&uninstallFlags.verbose, "v", false, "print more detailed information") for _, name := range profilesmanager.Managers() { profilesmanager.LookupManager(name).AddFlags(flags, profiles.Uninstall) } }
func initPackagesCommand(flags *flag.FlagSet, installer, defaultDBPath, defaultProfilesPath string) { initCommon(flags, &packagesFlags.commonFlagValues, installer, defaultDBPath, defaultProfilesPath) profiles.RegisterTargetAndEnvFlags(flags, &packagesFlags.target) flags.BoolVar(&packagesFlags.allPackages, "all", false, "print commands to install all required OS packages, not just those that are missing") flags.BoolVar(&packagesFlags.installPackages, "install", false, "install the requested packages. This may need to be run as root.") for _, name := range profilesmanager.Managers() { profilesmanager.LookupManager(name).AddFlags(flags, profiles.Install) } }
func availableImpl(jirix *jiri.X, cl *availableFlagValues, _ []string) error { if profileInstaller == "" { subcommands := findProfileSubcommands(jirix) if cl.verbose { fmt.Fprintf(jirix.Stdout(), "Available Subcommands: %s\n", strings.Join(subcommands, ", ")) } s := jirix.NewSeq() args := []string{"available"} args = append(args, cl.args()...) out := bytes.Buffer{} for _, sc := range subcommands { if err := s.Capture(&out, nil).Last(sc, args...); err != nil { return err } } if s := strings.TrimSpace(out.String()); s != "" { fmt.Fprintln(jirix.Stdout(), s) } } mgrs := profilesmanager.Managers() if len(mgrs) == 0 { return nil } if cl.verbose { scname := "" if profileInstaller != "" { scname = profileInstaller + ": " } fmt.Fprintf(jirix.Stdout(), "%sAvailable Profiles:\n", scname) for _, name := range mgrs { mgr := profilesmanager.LookupManager(name) vi := mgr.VersionInfo() fmt.Fprintf(jirix.Stdout(), "%s: versions: %s\n", name, vi) } } else { if cl.describe { for _, name := range mgrs { mgr := profilesmanager.LookupManager(name) fmt.Fprintf(jirix.Stdout(), "%s: %s\n", name, strings.Replace(strings.TrimSpace(mgr.Info()), "\n", " ", -1)) } } else { fmt.Fprintf(jirix.Stdout(), "%s\n", strings.Join(mgrs, ", ")) } } return nil }
func allAvailableManagers(jirix *jiri.X) ([]string, error) { names := profilesmanager.Managers() if profileInstaller != "" { return names, nil } subcommands := findProfileSubcommands(jirix) s := jirix.NewSeq() for _, sc := range subcommands { var out bytes.Buffer args := []string{"available"} if err := s.Capture(&out, nil).Last(sc, args...); err != nil { fmt.Fprintf(jirix.Stderr(), "failed to run %s %s: %v", sc, strings.Join(args, " "), err) return nil, err } mgrs := out.String() for _, m := range strings.Split(mgrs, ",") { names = append(names, strings.TrimSpace(m)) } } return names, nil }