Compare commits

...

2 Commits

Author SHA1 Message Date
Jef Roosens 15b687fd61
feat(cli): added "aur add" command 2022-06-22 16:39:35 +02:00
Jef Roosens 60adb903d6
feat(cli): add aur search command 2022-06-22 16:19:07 +02:00
5 changed files with 70 additions and 1 deletions

3
.gitignore vendored
View File

@ -27,3 +27,6 @@ gdb.txt
# Generated docs
_docs/
/man/
# VLS logs
vls.log

View File

@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
URL to a PKGBUILD
* Targets with kind 'url' can provide a direct URL to a PKGBUILD instead of
providing a Git repository
* CLI commands for searching the AUR & directly adding packages
### Changed

View File

@ -0,0 +1,62 @@
module aur
import cli
import console
import client
import vieter_v.aur
import vieter_v.conf as vconf
struct Config {
address string [required]
api_key string [required]
}
// cmd returns the cli module for interacting with the AUR API.
pub fn cmd() cli.Command {
return cli.Command{
name: 'aur'
description: 'Interact with the AUR.'
commands: [
cli.Command{
name: 'search'
description: 'Search for packages.'
required_args: 1
execute: fn (cmd cli.Command) ? {
c := aur.new()
pkgs := c.search(cmd.args[0])?
data := pkgs.map([it.name, it.description])
println(console.pretty_table(['name', 'description'], data)?)
}
},
cli.Command{
name: 'add'
usage: 'repo pkg-name [pkg-name...]'
description: 'Add the given AUR package(s) to Vieter. Non-existent packages will be silently ignored.'
required_args: 2
execute: fn (cmd cli.Command) ? {
config_file := cmd.flags.get_string('config-file')?
conf := vconf.load<Config>(prefix: 'VIETER_', default_path: config_file)?
c := aur.new()
pkgs := c.info(cmd.args[1..])?
vc := client.new(conf.address, conf.api_key)
for pkg in pkgs {
vc.add_target(
kind: 'git'
url: 'https://aur.archlinux.org/$pkg.package_base' + '.git'
repo: cmd.args[0]
) or {
println('Failed to add $pkg.name: $err.msg()')
continue
}
println('Added $pkg.name' + '.')
}
}
},
]
}
}

View File

@ -7,6 +7,7 @@ import console.targets
import console.logs
import console.schedule
import console.man
import console.aur
import cron
fn main() {
@ -31,6 +32,7 @@ fn main() {
logs.cmd(),
schedule.cmd(),
man.cmd(),
aur.cmd(),
]
}
app.setup()

View File

@ -1,6 +1,7 @@
Module {
dependencies: [
'https://git.rustybever.be/vieter-v/conf',
'https://git.rustybever.be/vieter-v/docker'
'https://git.rustybever.be/vieter-v/docker',
'https://git.rustybever.be/vieter-v/aur'
]
}