forked from vieter-v/vieter
				
			Started work on better repos cli
							parent
							
								
									d7f6c87053
								
							
						
					
					
						commit
						f44ce1c17f
					
				|  | @ -3,6 +3,9 @@ module git | |||
| import cli | ||||
| import env | ||||
| import net.http | ||||
| import json | ||||
| import git | ||||
| import response | ||||
| 
 | ||||
| struct Config { | ||||
| 	address string [required] | ||||
|  | @ -28,13 +31,13 @@ pub fn cmd() cli.Command { | |||
| 			cli.Command{ | ||||
| 				name: 'add' | ||||
| 				required_args: 2 | ||||
| 				usage: 'url branch' | ||||
| 				usage: 'url branch arch...' | ||||
| 				description: 'Add a new repository.' | ||||
| 				execute: fn (cmd cli.Command) ? { | ||||
| 					config_file := cmd.flags.get_string('config-file') ? | ||||
| 					conf := env.load<Config>(config_file) ? | ||||
| 
 | ||||
| 					add(conf, cmd.args[0], cmd.args[1]) ? | ||||
| 					add(conf, cmd.args[0], cmd.args[1], cmd.args[2..]) ? | ||||
| 				} | ||||
| 			}, | ||||
| 			cli.Command{ | ||||
|  | @ -58,12 +61,15 @@ fn list(conf Config) ? { | |||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
| 	res := req.do() ? | ||||
| 	data := json.decode(response.Response<map[string]git.GitRepo>, res.text) ? | ||||
| 
 | ||||
| 	println(res.text) | ||||
| 	for id, details in data.data { | ||||
| 		println("${id[..8]}\t$details.url\t$details.branch\t$details.arch") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn add(conf Config, url string, branch string) ? { | ||||
| 	mut req := http.new_request(http.Method.post, '$conf.address/api/repos?url=$url&branch=$branch', | ||||
| fn add(conf Config, url string, branch string, arch []string) ? { | ||||
| 	mut req := http.new_request(http.Method.post, '$conf.address/api/repos?url=$url&branch=$branch&arch=${arch.join(',')}', | ||||
| 		'') ? | ||||
| 	req.add_custom_header('X-API-Key', conf.api_key) ? | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,27 @@ | |||
| module response | ||||
| 
 | ||||
| pub struct Response<T> { | ||||
| 	message string | ||||
| 	data    T | ||||
| } | ||||
| 
 | ||||
| pub fn new_response(message string) Response<string> { | ||||
| 	return Response<string>{ | ||||
| 		message: message | ||||
| 		data: '' | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| pub fn new_data_response<T>(data T) Response<T> { | ||||
| 	return Response<T>{ | ||||
| 		message: '' | ||||
| 		data: data | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| pub fn new_full_response<T>(message string, data T) Response<T> { | ||||
| 	return Response<T>{ | ||||
| 		message: message | ||||
| 		data: data | ||||
| 	} | ||||
| } | ||||
|  | @ -4,6 +4,7 @@ import web | |||
| import git | ||||
| import net.http | ||||
| import rand | ||||
| import response { new_response, new_data_response } | ||||
| 
 | ||||
| const repos_file = 'repos.json' | ||||
| 
 | ||||
|  | @ -15,7 +16,7 @@ fn (mut app App) get_repos() web.Result { | |||
| 
 | ||||
| 	repos := rlock app.git_mutex { | ||||
| 		git.read_repos(app.conf.repos_file) or { | ||||
| 			app.lerror('Failed to read repos file.') | ||||
| 			app.lerror('Failed to read repos file: $err.msg') | ||||
| 
 | ||||
| 			return app.status(http.Status.internal_server_error) | ||||
| 		} | ||||
|  |  | |||
|  | @ -1,27 +0,0 @@ | |||
| module server | ||||
| 
 | ||||
| struct Response<T> { | ||||
| 	message string | ||||
| 	data    T | ||||
| } | ||||
| 
 | ||||
| fn new_response(message string) Response<string> { | ||||
| 	return Response<string>{ | ||||
| 		message: message | ||||
| 		data: '' | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn new_data_response<T>(data T) Response<T> { | ||||
| 	return Response<T>{ | ||||
| 		message: '' | ||||
| 		data: data | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn new_full_response<T>(message string, data T) Response<T> { | ||||
| 	return Response<T>{ | ||||
| 		message: message | ||||
| 		data: data | ||||
| 	} | ||||
| } | ||||
|  | @ -7,6 +7,7 @@ import time | |||
| import rand | ||||
| import util | ||||
| import net.http | ||||
| import response { new_response, new_data_response } | ||||
| 
 | ||||
| // healthcheck just returns a string, but can be used to quickly check if the | ||||
| // server is still responsive. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue