summaryrefslogtreecommitdiff
path: root/modes.go
diff options
context:
space:
mode:
authorewy <ewy0@protonmail.com>2026-05-17 02:13:25 +0200
committerewy <ewy0@protonmail.com>2026-05-17 02:13:25 +0200
commit5cfc8bd701037a215c62789916cda283a018d3fd (patch)
treed29c1b65e69314917e15390ce43e8bba0ae2bc2d /modes.go
parenteb340173fe0508240da4bb03d37a5a2fa259c2fd (diff)
add priority to version and completion to reduce start times for those modes
Diffstat (limited to 'modes.go')
-rw-r--r--modes.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/modes.go b/modes.go
index bc9e90f..1d651b6 100644
--- a/modes.go
+++ b/modes.go
@@ -46,13 +46,20 @@ var profileFd *os.File
var UnknownShellError = errors.New("$SHELL not set or empty")
-// statelessModes are program modes which do not require state to operate.
-// like --version and --completion
-var statelessModes = ModeMap[func() error]{
+// uninitializedModes are modes which can run before the program runs initializers
+var uninitializedModes = ModeMap[func() error]{
flags.Version: func() error {
_, err := spool.Print("%s\n", version)
return err
},
+ flags.Completion: func() error {
+ return completion.Echo()
+ },
+}
+
+// statelessModes are program modes which do not require state to operate.
+// like --version and --completion
+var statelessModes = ModeMap[func() error]{
flags.InstallCompletion: func() error {
sh := os.Getenv("SHELL")
if sh == "" {
@@ -61,9 +68,6 @@ var statelessModes = ModeMap[func() error]{
_, sh = filepath.Split(sh)
return completion.Add(sh)
},
- flags.Completion: func() error {
- return completion.Echo()
- },
flags.Profile: func() error {
fd, err := os.Create("pik-profile.out")
if err != nil {