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