mirror of
https://github.com/mudler/luet.git
synced 2025-07-13 07:04:19 +00:00
Fixes a small issue with the Spinner which prevented to update the spinner style. Also respect the temp folders of the output when extracting the rootfs.
85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
// Copyright © 2019 Ettore Di Giacinto <mudler@gentoo.org>
|
|
//
|
|
// This program is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License along
|
|
// with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
|
|
. "github.com/mudler/luet/pkg/logger"
|
|
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
var cfgFile string
|
|
var Verbose bool
|
|
|
|
// RootCmd represents the base command when called without any subcommands
|
|
var RootCmd = &cobra.Command{
|
|
Use: "luet",
|
|
Short: "Package manager for the XXth century!",
|
|
Long: `Package manager which supports Gentoo and Entropy packages`,
|
|
}
|
|
|
|
// Execute adds all child commands to the root command sets flags appropriately.
|
|
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
|
func Execute() {
|
|
if err := RootCmd.Execute(); err != nil {
|
|
Error(err)
|
|
os.Exit(-1)
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
cobra.OnInitialize(initConfig)
|
|
RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.luet.yaml)")
|
|
RootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
|
|
}
|
|
|
|
// initConfig reads in config file and ENV variables if set.
|
|
func initConfig() {
|
|
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
|
if err != nil {
|
|
Error(err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
viper.SetConfigName(".luet") // name of config file (without extension)
|
|
if cfgFile != "" { // enable ability to specify config file via flag
|
|
Info(">>> cfgFile: ", cfgFile)
|
|
viper.SetConfigFile(cfgFile)
|
|
configDir := path.Dir(cfgFile)
|
|
if configDir != "." && configDir != dir {
|
|
viper.AddConfigPath(configDir)
|
|
}
|
|
}
|
|
|
|
viper.AddConfigPath(dir)
|
|
viper.AddConfigPath(".")
|
|
viper.AddConfigPath("$HOME")
|
|
viper.AutomaticEnv() // read in environment variables that match
|
|
|
|
// If a config file is found, read it in.
|
|
if err := viper.ReadInConfig(); err == nil {
|
|
Info("Using config file:", viper.ConfigFileUsed())
|
|
} else {
|
|
Warning(err)
|
|
}
|
|
|
|
}
|