Migrated rest of cli commands

main^2
Jef Roosens 2022-04-06 17:16:27 +02:00
parent 9dd02426ff
commit 21ef262ede
Signed by: Jef Roosens
GPG Key ID: B75D4F293C7052DB
2 changed files with 40 additions and 84 deletions

84
cli.v
View File

@ -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)
}
}
}

View File

@ -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)
}