Skip to content

Commit

Permalink
fixes initialization ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
leucos committed Apr 25, 2022
1 parent 4c4a5af commit 051827d
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 17 deletions.
19 changes: 15 additions & 4 deletions cmd/root.go
Expand Up @@ -21,9 +21,13 @@ func RootCmd() *cobra.Command {
var (
bindir, linkdir, cachedir, confdir string
global, verbose bool
a *app.App
)

a, err := app.New()
if err != nil {
panic(err)
}

rootCmd := &cobra.Command{
Use: "binenv",
Short: "Install binary distributions easily",
Expand All @@ -36,10 +40,19 @@ selected.`,
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
err := initializeConfig(cmd.Root())

fmt.Println("PersistentPreRunE")
a.SetVerbose(verbose)

// Set defaults or explicitely set directories
a.SetBinDir(bindir)
a.SetLinkDir(linkdir)
a.SetConfigDir(confdir)
a.SetCacheDir(cachedir)

// Apply dir changes for global mode
a.SetGlobal(global)

// if options has been changed by flag or env, we apply it
// If some directories have been set explicitely, overwrite them
// otherwise we keep preceding setting
if cmd.Root().PersistentFlags().Lookup("bindir").Changed {
a.SetBinDir(bindir)
Expand Down Expand Up @@ -75,8 +88,6 @@ selected.`,
},
}

a = &app.App{}

rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose operation [BINENV_VERBOSE]")
rootCmd.PersistentFlags().BoolVarP(&global, "global", "g", false, "global mode [BINENV_GLOBAL]")

Expand Down
33 changes: 20 additions & 13 deletions internal/app/app.go
Expand Up @@ -78,28 +78,35 @@ var (
ErrAlreadyInstalled = errors.New("version already installed")
)

// Init prepares App for use
func (a *App) Init(o ...func(*App) error) (*App, error) {
a.mappers = make(map[string]mapping.Remapper)
a.installers = make(map[string]install.Installer)
a.listers = make(map[string]list.Lister)
a.fetchers = make(map[string]fetch.Fetcher)
a.cache = make(map[string][]string)
a.logger = zerolog.New(zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: time.RFC3339,
}).With().Timestamp().Logger()
// New creates a new App
func New() (*App, error) {
a := &App{
mappers: make(map[string]mapping.Remapper),
installers: make(map[string]install.Installer),
listers: make(map[string]list.Lister),
fetchers: make(map[string]fetch.Fetcher),
cache: make(map[string][]string),
logger: zerolog.New(zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: time.RFC3339,
}).With().Timestamp().Logger(),
}

// Default to warn log level
a.logger = a.logger.Level(zerolog.InfoLevel)
return a, nil
}

// Init prepares App for use
func (a *App) Init(o ...func(*App) error) error {
// Apply functional options
for _, f := range o {
if err := f(a); err != nil {
return nil, err
return err
}
}

fmt.Println("init")
a.DumpConfig()

err := a.readDistributions()
Expand All @@ -116,7 +123,7 @@ func (a *App) Init(o ...func(*App) error) (*App, error) {
a.createInstallers()

a.initializeFlags()
return a, nil
return nil
}

// Search show a list returns a list of packages contains string
Expand Down

0 comments on commit 051827d

Please sign in to comment.