@@ -20,39 +20,26 @@ func configPath() string {
2020 return filepath .Join (home , ".apm" , "config.yml" )
2121}
2222
23+ // validConfigKeys is the set of user-settable config keys.
24+ var validConfigKeys = map [string ]bool {
25+ "auto-integrate" : true ,
26+ "temp-dir" : true ,
27+ }
28+
2329// runConfig implements `apm config [OPTIONS] [COMMAND] [ARGS...]`.
2430func runConfig (args []string ) int {
25- for _ , a := range args {
26- if a == "--help" || a == "-h" {
27- fmt .Println ("Usage: apm config [OPTIONS] COMMAND [ARGS]..." )
28- fmt .Println ()
29- fmt .Println (" Configure APM CLI" )
30- fmt .Println ()
31- fmt .Println ("Options:" )
32- fmt .Println (" --help Show this message and exit." )
33- fmt .Println ()
34- fmt .Println ("Commands:" )
35- fmt .Println (" get Get a configuration value" )
36- fmt .Println (" set Set a configuration value" )
37- fmt .Println (" unset Unset a configuration value" )
38- return 0
39- }
40- }
41-
42- if len (args ) == 0 {
43- path := configPath ()
44- data , err := os .ReadFile (path )
45- if err != nil {
46- if os .IsNotExist (err ) {
47- fmt .Printf ("Config file: %s\n " , path )
48- fmt .Println ("(no config file found -- default values apply)" )
49- return 0
50- }
51- fmt .Fprintf (os .Stderr , "[x] Failed to read config: %v\n " , err )
52- return 1
53- }
54- fmt .Printf ("Config file: %s\n " , path )
55- fmt .Println (string (data ))
31+ if len (args ) == 0 || args [0 ] == "--help" || args [0 ] == "-h" {
32+ fmt .Println ("Usage: apm config [OPTIONS] COMMAND [ARGS]..." )
33+ fmt .Println ()
34+ fmt .Println (" Configure APM CLI" )
35+ fmt .Println ()
36+ fmt .Println ("Options:" )
37+ fmt .Println (" --help Show this message and exit." )
38+ fmt .Println ()
39+ fmt .Println ("Commands:" )
40+ fmt .Println (" get Get a configuration value" )
41+ fmt .Println (" set Set a configuration value" )
42+ fmt .Println (" unset Unset a configuration value" )
5643 return 0
5744 }
5845
@@ -71,12 +58,26 @@ func runConfig(args []string) int {
7158}
7259
7360func runConfigSet (args []string ) int {
61+ if len (args ) > 0 && (args [0 ] == "--help" || args [0 ] == "-h" ) {
62+ fmt .Println ("Usage: apm config set [OPTIONS] KEY VALUE" )
63+ fmt .Println ()
64+ fmt .Println (" Set a configuration value" )
65+ fmt .Println ()
66+ fmt .Println ("Options:" )
67+ fmt .Println (" --help Show this message and exit." )
68+ return 0
69+ }
7470 if len (args ) < 2 {
7571 fmt .Fprintln (os .Stderr , "Error: Missing KEY and VALUE arguments." )
7672 fmt .Fprintln (os .Stderr , `Usage: apm config set KEY VALUE` )
7773 return 2
7874 }
7975 key , value := args [0 ], args [1 ]
76+ if ! validConfigKeys [key ] {
77+ fmt .Fprintf (os .Stderr , "[x] Unknown configuration key: '%s'\n " , key )
78+ fmt .Fprintf (os .Stderr , "[>] Valid keys: auto-integrate, temp-dir\n " )
79+ return 1
80+ }
8081 path := configPath ()
8182 if path == "" {
8283 fmt .Fprintf (os .Stderr , "[x] Could not determine config path.\n " )
@@ -91,19 +92,54 @@ func runConfigSet(args []string) int {
9192}
9293
9394func runConfigGet (args []string ) int {
95+ if len (args ) > 0 && (args [0 ] == "--help" || args [0 ] == "-h" ) {
96+ fmt .Println ("Usage: apm config get [OPTIONS] [KEY]" )
97+ fmt .Println ()
98+ fmt .Println (" Get a configuration value" )
99+ fmt .Println ()
100+ fmt .Println ("Options:" )
101+ fmt .Println (" --help Show this message and exit." )
102+ return 0
103+ }
94104 if len (args ) == 0 {
95105 fmt .Fprintln (os .Stderr , "Error: Missing KEY argument." )
96106 return 2
97107 }
98- fmt .Printf ("[i] %s = (not configured)\n " , args [0 ])
108+ key := args [0 ]
109+ if ! validConfigKeys [key ] {
110+ fmt .Fprintf (os .Stderr , "[x] Unknown configuration key: '%s'\n " , key )
111+ fmt .Fprintf (os .Stderr , "[>] Valid keys: auto-integrate, temp-dir\n " )
112+ return 1
113+ }
114+ switch key {
115+ case "auto-integrate" :
116+ fmt .Printf ("auto-integrate: true\n " )
117+ case "temp-dir" :
118+ fmt .Printf ("temp-dir: Not set (using system default)\n " )
119+ }
99120 return 0
100121}
101122
102123func runConfigUnset (args []string ) int {
124+ if len (args ) > 0 && (args [0 ] == "--help" || args [0 ] == "-h" ) {
125+ fmt .Println ("Usage: apm config unset [OPTIONS] KEY" )
126+ fmt .Println ()
127+ fmt .Println (" Unset a configuration value" )
128+ fmt .Println ()
129+ fmt .Println ("Options:" )
130+ fmt .Println (" --help Show this message and exit." )
131+ return 0
132+ }
103133 if len (args ) == 0 {
104134 fmt .Fprintln (os .Stderr , "Error: Missing KEY argument." )
105135 return 2
106136 }
107- fmt .Printf ("[+] Config unset: %s\n " , args [0 ])
137+ key := args [0 ]
138+ if ! validConfigKeys [key ] {
139+ fmt .Fprintf (os .Stderr , "[x] Unknown configuration key: '%s'\n " , key )
140+ fmt .Fprintf (os .Stderr , "[>] Valid keys: auto-integrate, temp-dir\n " )
141+ return 1
142+ }
143+ fmt .Printf ("[+] Config unset: %s\n " , key )
108144 return 0
109145}
0 commit comments