Merge pull request 'AUR tools' (#263) from Chewing_Bever/vieter:aur-tools into dev

Reviewed-on: vieter-v/vieter#263
Jef Roosens 2022-07-17 13:53:49 +02:00
commit 8a2b121cc7
14 changed files with 85 additions and 16 deletions

3
.gitignore vendored
View File

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

View File

@ -7,7 +7,7 @@ platform: ${PLATFORM}
pipeline:
install-modules:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
commands:
- export VMODULES=$PWD/.vmodules
@ -16,7 +16,7 @@ pipeline:
event: [push, pull_request]
debug:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
commands:
- export VMODULES=$PWD/.vmodules
- make
@ -26,7 +26,7 @@ pipeline:
exclude: [main]
prod:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
environment:
- LDFLAGS=-lz -lbz2 -llzma -lexpat -lzstd -llz4 -lsqlite3 -static
commands:
@ -44,7 +44,7 @@ pipeline:
event: [push, pull_request]
upload:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
secrets: [ s3_username, s3_password ]
commands:
# https://gist.github.com/JustinTimperio/7c7115f87b775618637d67ac911e595f

View File

@ -11,7 +11,7 @@ pipeline:
- make docs
api-docs:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
group: 'generate'
commands:

View File

@ -8,7 +8,7 @@ skip_clone: true
pipeline:
prepare:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
secrets: [ s3_username, s3_password ]
commands:

View File

@ -5,7 +5,7 @@ platform: 'linux/amd64'
pipeline:
lint:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
commands:
- make lint

View File

@ -9,7 +9,7 @@ skip_clone: true
pipeline:
generate:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
commands:
- curl -o vieter -L "https://s3.rustybever.be/vieter/commits/$CI_COMMIT_SHA/vieter-linux-amd64"

View File

@ -9,7 +9,7 @@ platform: ${PLATFORM}
pipeline:
install-modules:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
commands:
- export VMODULES=$PWD/.vmodules
@ -18,7 +18,7 @@ pipeline:
event: [pull_request]
test:
image: 'chewingbever/vlang:latest'
image: 'chewingbever/vlang:0.3'
pull: true
commands:
- export VMODULES=$PWD/.vmodules

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

@ -1,4 +1,4 @@
FROM chewingbever/vlang:latest AS builder
FROM chewingbever/vlang:0.3 AS builder
ARG TARGETPLATFORM
ARG CI_COMMIT_SHA

View File

@ -5,9 +5,9 @@ pkgbase='vieter'
pkgname='vieter'
pkgver='0.3.0'
pkgrel=1
pkgdesc="Vieter is a lightweight implementation of an Arch repository server."
pkgdesc="Lightweight Arch repository server & package build system"
depends=('glibc' 'openssl' 'libarchive' 'sqlite')
makedepends=('git' 'vieter-v')
makedepends=('git' 'vlang')
arch=('x86_64' 'aarch64')
url='https://git.rustybever.be/vieter-v/vieter'
license=('AGPL3')

View File

@ -5,9 +5,9 @@ pkgbase='vieter-git'
pkgname='vieter-git'
pkgver=0.2.0.r25.g20112b8
pkgrel=1
pkgdesc="Vieter is a lightweight implementation of an Arch repository server."
pkgdesc="Lightweight Arch repository server & package build system (development version)"
depends=('glibc' 'openssl' 'libarchive' 'sqlite')
makedepends=('git' 'vieter-v')
makedepends=('git' 'vlang')
arch=('x86_64' 'aarch64')
url='https://git.rustybever.be/vieter-v/vieter'
license=('AGPL3')

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'
]
}