forked from vieter-v/vieter
				
			Very basic CLI to update repos
							parent
							
								
									27f59c6664
								
							
						
					
					
						commit
						9f46c27232
					
				|  | @ -0,0 +1,84 @@ | |||
| import os | ||||
| import toml | ||||
| import net.http | ||||
| 
 | ||||
| struct Config { | ||||
| 	address string [required] | ||||
| 	api_key string [required] | ||||
| } | ||||
| 
 | ||||
| fn list(conf Config) ? { | ||||
| 	mut req := http.new_request(http.Method.get, '$conf.address/api/repos', '') ? | ||||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
| 	res := req.do() ? | ||||
| 
 | ||||
| 	println(res.text) | ||||
| } | ||||
| 
 | ||||
| fn add(conf Config, args []string) ? { | ||||
| 	if args.len < 2 { | ||||
| 		eprintln('Not enough arguments.') | ||||
| 		exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	if args.len > 2 { | ||||
| 		eprintln('Too many arguments.') | ||||
| 		exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	mut req := http.new_request(http.Method.post, '$conf.address/api/repos?url=${args[0]}&branch=${args[1]}', '') ? | ||||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
| 	res := req.do() ? | ||||
| 
 | ||||
| 	println(res.text) | ||||
| } | ||||
| 
 | ||||
| fn remove(conf Config, args []string) ? { | ||||
| 	if args.len < 2 { | ||||
| 		eprintln('Not enough arguments.') | ||||
| 		exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	if args.len > 2 { | ||||
| 		eprintln('Too many arguments.') | ||||
| 		exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	mut req := http.new_request(http.Method.delete, '$conf.address/api/repos?url=${args[0]}&branch=${args[1]}', '') ? | ||||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
| 	res := req.do() ? | ||||
| 
 | ||||
| 	println(res.text) | ||||
| } | ||||
| 
 | ||||
| fn main() { | ||||
| 	conf_path := os.expand_tilde_to_home('~/.vieterrc') | ||||
| 
 | ||||
| 	if !os.is_file(conf_path) { | ||||
| 		exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	conf := toml.parse_file(conf_path) ?.reflect<Config>() | ||||
| 
 | ||||
| 	args := os.args[1..] | ||||
| 
 | ||||
| 	if args.len == 0 { | ||||
| 		eprintln('No action provided.') | ||||
| 		exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	action := args[0] | ||||
| 
 | ||||
| 	match action { | ||||
| 		'list' { list(conf) ? } | ||||
| 		'add' { add(conf, args[1..]) ? } | ||||
| 		'remove' { remove(conf, args[1..]) ? } | ||||
| 		else { | ||||
| 			eprintln("Invalid action '$action'.") | ||||
| 			exit(1) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue