feat(cli): added "aur add" command
ci/woodpecker/pr/docs Pipeline was successful Details
ci/woodpecker/pr/lint Pipeline was successful Details
ci/woodpecker/pr/build Pipeline was successful Details
ci/woodpecker/pr/docker Pipeline was successful Details
ci/woodpecker/pr/man Pipeline was successful Details
ci/woodpecker/pr/test Pipeline was successful Details

pull/263/head
Jef Roosens 2022-06-22 16:38:53 +02:00 committed by Chewing_Bever
parent 487b235727
commit 1a940f2f98
Signed by: Jef Roosens
GPG Key ID: B75D4F293C7052DB
2 changed files with 37 additions and 0 deletions

View File

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

View File

@ -2,8 +2,16 @@ module aur
import cli import cli
import console import console
import client
import vieter_v.aur 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 { pub fn cmd() cli.Command {
return cli.Command{ return cli.Command{
name: 'aur' name: 'aur'
@ -21,6 +29,34 @@ pub fn cmd() cli.Command {
println(console.pretty_table(['name', 'description'], data)?) 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' + '.')
}
}
},
] ]
} }
} }