mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-01-30 12:32:22 -08:00
feat(init): improve performance
This commit is contained in:
parent
05fed0dbab
commit
b73ac4bdc2
|
@ -57,7 +57,7 @@ You can do the following:
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.AddCommand(getCache)
|
RootCmd.AddCommand(getCache)
|
||||||
}
|
}
|
||||||
|
|
||||||
func editFileWithEditor(file string) {
|
func editFileWithEditor(file string) {
|
||||||
|
|
|
@ -40,5 +40,5 @@ You can export, migrate or edit the config.`,
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.AddCommand(configCmd)
|
RootCmd.AddCommand(configCmd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,5 +56,5 @@ var debugCmd = &cobra.Command{
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.AddCommand(debugCmd)
|
RootCmd.AddCommand(debugCmd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,5 +48,5 @@ This command is used to install fonts and configure the font in your terminal.
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.AddCommand(fontCmd)
|
RootCmd.AddCommand(fontCmd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,6 @@ This command is used to get the value of the following variables:
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.AddCommand(getCmd)
|
RootCmd.AddCommand(getCmd)
|
||||||
getCmd.Flags().StringVar(&shellName, "shell", "", "the shell to print for")
|
getCmd.Flags().StringVar(&shellName, "shell", "", "the shell to print for")
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ func init() { //nolint:gochecknoinits
|
||||||
initCmd.Flags().BoolVarP(&strict, "strict", "s", false, "run in strict mode")
|
initCmd.Flags().BoolVarP(&strict, "strict", "s", false, "run in strict mode")
|
||||||
initCmd.Flags().BoolVarP(&manual, "manual", "m", false, "enable/disable manual mode")
|
initCmd.Flags().BoolVarP(&manual, "manual", "m", false, "enable/disable manual mode")
|
||||||
_ = initCmd.MarkPersistentFlagRequired("config")
|
_ = initCmd.MarkPersistentFlagRequired("config")
|
||||||
rootCmd.AddCommand(initCmd)
|
RootCmd.AddCommand(initCmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func runInit(shellName string) {
|
func runInit(shellName string) {
|
||||||
|
|
|
@ -128,5 +128,5 @@ func init() { //nolint:gochecknoinits
|
||||||
printCmd.Flags().StringVar(&command, "command", "", "tooltip command")
|
printCmd.Flags().StringVar(&command, "command", "", "tooltip command")
|
||||||
printCmd.Flags().BoolVarP(&plain, "plain", "p", false, "plain text output (no ANSI)")
|
printCmd.Flags().BoolVarP(&plain, "plain", "p", false, "plain text output (no ANSI)")
|
||||||
printCmd.Flags().BoolVar(&eval, "eval", false, "output the prompt for eval")
|
printCmd.Flags().BoolVar(&eval, "eval", false, "output the prompt for eval")
|
||||||
rootCmd.AddCommand(printCmd)
|
RootCmd.AddCommand(printCmd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,5 +20,5 @@ func init() { //nolint:gochecknoinits
|
||||||
promptCmd.AddCommand(initCmd)
|
promptCmd.AddCommand(initCmd)
|
||||||
promptCmd.AddCommand(debugCmd)
|
promptCmd.AddCommand(debugCmd)
|
||||||
promptCmd.AddCommand(printCmd)
|
promptCmd.AddCommand(printCmd)
|
||||||
rootCmd.AddCommand(promptCmd)
|
RootCmd.AddCommand(promptCmd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ var (
|
||||||
cliVersion string
|
cliVersion string
|
||||||
)
|
)
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
var RootCmd = &cobra.Command{
|
||||||
Use: "oh-my-posh",
|
Use: "oh-my-posh",
|
||||||
Short: "oh-my-posh is a tool to render your prompt",
|
Short: "oh-my-posh is a tool to render your prompt",
|
||||||
Long: `oh-my-posh is a cross platform tool to render your prompt.
|
Long: `oh-my-posh is a cross platform tool to render your prompt.
|
||||||
|
@ -37,7 +37,7 @@ on getting started, have a look at the docs at https://ohmyposh.dev`,
|
||||||
|
|
||||||
func Execute(version string) {
|
func Execute(version string) {
|
||||||
cliVersion = version
|
cliVersion = version
|
||||||
if err := rootCmd.Execute(); err != nil {
|
if err := RootCmd.Execute(); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,8 +49,8 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.PersistentFlags().StringVarP(&config, "config", "c", "", "config (required)")
|
RootCmd.PersistentFlags().StringVarP(&config, "config", "c", "", "config (required)")
|
||||||
rootCmd.Flags().BoolVarP(&initialize, "init", "i", false, "init (deprecated)")
|
RootCmd.Flags().BoolVarP(&initialize, "init", "i", false, "init (deprecated)")
|
||||||
rootCmd.Flags().BoolVar(&displayVersion, "version", false, "version")
|
RootCmd.Flags().BoolVar(&displayVersion, "version", false, "version")
|
||||||
rootCmd.Flags().StringVarP(&shellName, "shell", "s", "", "shell (deprecated)")
|
RootCmd.Flags().StringVarP(&shellName, "shell", "s", "", "shell (deprecated)")
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,5 +18,5 @@ var versionCmd = &cobra.Command{
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() { //nolint:gochecknoinits
|
||||||
rootCmd.AddCommand(versionCmd)
|
RootCmd.AddCommand(versionCmd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,9 +119,6 @@ func loadConfig(env environment.Environment) *Config {
|
||||||
defer env.Trace(time.Now(), "config.loadConfig")
|
defer env.Trace(time.Now(), "config.loadConfig")
|
||||||
var cfg Config
|
var cfg Config
|
||||||
configFile := env.Flags().Config
|
configFile := env.Flags().Config
|
||||||
if _, err := os.Stat(configFile); err != nil {
|
|
||||||
return defaultConfig()
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg.origin = configFile
|
cfg.origin = configFile
|
||||||
cfg.format = strings.TrimPrefix(filepath.Ext(configFile), ".")
|
cfg.format = strings.TrimPrefix(filepath.Ext(configFile), ".")
|
||||||
|
@ -139,7 +136,9 @@ func loadConfig(env environment.Environment) *Config {
|
||||||
})
|
})
|
||||||
|
|
||||||
err := config.LoadFiles(configFile)
|
err := config.LoadFiles(configFile)
|
||||||
cfg.exitWithError(err)
|
if err != nil {
|
||||||
|
return defaultConfig()
|
||||||
|
}
|
||||||
|
|
||||||
err = config.BindStruct("", &cfg)
|
err = config.BindStruct("", &cfg)
|
||||||
cfg.exitWithError(err)
|
cfg.exitWithError(err)
|
||||||
|
|
|
@ -274,9 +274,7 @@ func (env *ShellEnvironment) resolveConfigPath() {
|
||||||
configFile = filepath.Join(env.Home(), configFile)
|
configFile = filepath.Join(env.Home(), configFile)
|
||||||
}
|
}
|
||||||
if !filepath.IsAbs(configFile) {
|
if !filepath.IsAbs(configFile) {
|
||||||
if absConfigFile, err := filepath.Abs(configFile); err == nil {
|
configFile = filepath.Join(env.Pwd(), configFile)
|
||||||
configFile = absConfigFile
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
env.CmdFlags.Config = filepath.Clean(configFile)
|
env.CmdFlags.Config = filepath.Clean(configFile)
|
||||||
}
|
}
|
||||||
|
|
18
src/main_test.go
Normal file
18
src/main_test.go
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"oh-my-posh/cli"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func BenchmarkInit(b *testing.B) {
|
||||||
|
cmd := cli.RootCmd
|
||||||
|
cmd.SetArgs([]string{"init", "fish", "--print", "--config", "err.omp.json"})
|
||||||
|
out := bytes.NewBufferString("")
|
||||||
|
cmd.SetOut(out)
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
_ = cmd.Execute()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue