Compare commits

...

5 Commits

9 changed files with 82 additions and 5 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

@ -96,6 +96,14 @@ SigLevel = Optional
Afterwards, you can update your system & install the `vieter` package for the
latest official release or `vieter-git` for the latest development release.
### AUR
If you prefer building the packages locally (or on your own Vieter instance),
there's the `[vieter](https://aur.archlinux.org/packages/vieter)` &
`[vieter-git](https://aur.archlinux.org/packages/vieter-git)` packages on the
AUR. These packages build using the `vlang-git` compiler package, so I can't
guarantee that a compiler update won't temporarily break them.
## Building from source
The project [README](https://git.rustybever.be/vieter/vieter#building) contains

View File

@ -4,7 +4,7 @@
#include "archive.h"
struct C.archive {}
pub struct C.archive {}
// Create a new archive struct for reading
fn C.archive_read_new() &C.archive
@ -71,7 +71,7 @@ fn C.archive_filter_code(&C.archive, int) int
#include "archive_entry.h"
struct C.archive_entry {}
pub struct C.archive_entry {}
// Create a new archive_entry struct
fn C.archive_entry_new() &C.archive_entry

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

@ -3,7 +3,7 @@ module db
import sqlite
import time
struct VieterDb {
pub struct VieterDb {
conn sqlite.DB
}

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

@ -4,7 +4,7 @@ import os
import util
// Represents a read archive
struct Pkg {
pub struct Pkg {
pub:
path string [required]
info PkgInfo [required]

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