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