From 8051912b35242869959402214e5223dfd44f124a Mon Sep 17 00:00:00 2001 From: DataHearth Date: Wed, 20 Jul 2022 13:33:04 +0200 Subject: [PATCH] feat(packages): add nala package manager --- cmd/cli.go | 2 ++ internal/configuration/definition.go | 1 + internal/pkgs.go | 20 +++++++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cmd/cli.go b/cmd/cli.go index ea74f81..906ad35 100644 --- a/cmd/cli.go +++ b/cmd/cli.go @@ -69,9 +69,11 @@ func init() { loadCmd.Flags().Bool("disable-files", false, "files will be ignored") loadCmd.Flags().Bool("disable-folders", false, "folders will be ignored") loadCmd.Flags().Bool("pkgs", false, "packages will be installed") + loadCmd.Flags().StringSlice("exclude-pkg-managers", []string{}, "package managers to exclude (comma separated)") viper.BindPFlag("load-disable-files", loadCmd.Flags().Lookup("disable-files")) viper.BindPFlag("load-disable-folders", loadCmd.Flags().Lookup("disable-folders")) viper.BindPFlag("load-enable-pkgs", loadCmd.Flags().Lookup("pkgs")) + viper.BindPFlag("exclude-pkg-managers", loadCmd.Flags().Lookup("exclude-pkg-managers")) saveCmd.Flags().Bool("disable-files", false, "files will be ignored") saveCmd.Flags().Bool("disable-folders", false, "folders will be ignored") diff --git a/internal/configuration/definition.go b/internal/configuration/definition.go index f0ac2d9..62b5fb5 100644 --- a/internal/configuration/definition.go +++ b/internal/configuration/definition.go @@ -43,4 +43,5 @@ type PkgManagers struct { Pip []string `mapstructure:"pip" yaml:"pip"` Npm []string `mapstructure:"npm" yaml:"npm"` Go []string `mapstructure:"go" yaml:"go"` + Nala []string `mapstructure:"nala" yaml:"nala"` } diff --git a/internal/pkgs.go b/internal/pkgs.go index e79c8d3..34160a4 100644 --- a/internal/pkgs.go +++ b/internal/pkgs.go @@ -17,9 +17,18 @@ import ( // InstallPackages install all packages from the configuration file by installation order func InstallPackages(c configuration.PkgManagers) error { color.Blue("\n# Installing packages") + pkgManagers := map[string]bool{} + for _, pkgManager := range viper.GetStringSlice("exclude-pkg-managers") { + pkgManagers[pkgManager] = true + } for _, pkgManager := range c.InstallationOrder { color.Blue("## Installing %s packages", pkgManager) + if _, ok := pkgManagers[pkgManager]; ok { + color.Blue("Skipping %s packages", pkgManager) + fmt.Println() + continue + } var pkgs []string switch pkgManager { @@ -35,6 +44,8 @@ func InstallPackages(c configuration.PkgManagers) error { pkgs = c.Pip case "go": pkgs = c.Go + case "nala": + pkgs = c.Nala default: PrintError("package manager not supported: %s\n", pkgManager) continue @@ -64,7 +75,14 @@ func InstallPackages(c configuration.PkgManagers) error { continue } - cmd := exec.Command(pkgManager, "install") + var cmd *exec.Cmd + // * package managers requiring sudo permission + if pkgManager == "apt" || pkgManager == "nala" { + cmd = exec.Command("sudo", pkgManager, "install", "-y") + } else { + cmd = exec.Command(pkgManager, "install") + } + for _, pkg := range pkgs { if strings.Contains(pkg, " ") { cmd.Args = append(cmd.Args, strings.Split(pkg, " ")...)