forked from vieter-v/vieter
				
			Migrated rest of cli commands
							parent
							
								
									9dd02426ff
								
							
						
					
					
						commit
						21ef262ede
					
				
							
								
								
									
										84
									
								
								cli.v
								
								
								
								
							
							
						
						
									
										84
									
								
								cli.v
								
								
								
								
							|  | @ -1,84 +0,0 @@ | |||
| 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) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -23,6 +23,28 @@ pub fn cmd() cli.Command { | |||
| 					list(conf) ? | ||||
| 				} | ||||
| 			}, | ||||
| 			cli.Command{ | ||||
| 				name: 'add' | ||||
| 				required_args: 2 | ||||
| 				usage: 'url branch' | ||||
| 				description: 'Add a new repository.' | ||||
| 				execute: fn (cmd cli.Command) ? { | ||||
| 					conf := env.load<Config>() ? | ||||
| 
 | ||||
| 					add(conf, cmd.args[0], cmd.args[1]) ? | ||||
| 				} | ||||
| 			}, | ||||
| 			cli.Command{ | ||||
| 				name: 'remove' | ||||
| 				required_args: 2 | ||||
| 				usage: 'url branch' | ||||
| 				description: 'Remove a repository.' | ||||
| 				execute: fn (cmd cli.Command) ? { | ||||
| 					conf := env.load<Config>() ? | ||||
| 
 | ||||
| 					remove(conf, cmd.args[0], cmd.args[1]) ? | ||||
| 				} | ||||
| 			}, | ||||
| 		] | ||||
| 	} | ||||
| } | ||||
|  | @ -35,3 +57,21 @@ fn list(conf Config) ? { | |||
| 
 | ||||
| 	println(res.text) | ||||
| } | ||||
| 
 | ||||
| fn add(conf Config, url string, branch string) ? { | ||||
| 	mut req := http.new_request(http.Method.post, '$conf.address/api/repos?url=$url&branch=$branch', '') ? | ||||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
| 	res := req.do() ? | ||||
| 
 | ||||
| 	println(res.text) | ||||
| } | ||||
| 
 | ||||
| fn remove(conf Config, url string, branch string) ? { | ||||
| 	mut req := http.new_request(http.Method.delete, '$conf.address/api/repos?url=$url&branch=$branch', '') ? | ||||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
| 	res := req.do() ? | ||||
| 
 | ||||
| 	println(res.text) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue