diff --git a/CHANGELOG.md b/CHANGELOG.md index 55e6d65..3e67899 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased](https://git.rustybever.be/vieter-v/vieter/src/branch/dev) -### Added - -* CLI commands for removing packages, arch-repos & repositories - ## [0.5.0-rc.2](https://git.rustybever.be/vieter-v/vieter/src/tag/0.5.0-rc.2) ### Added diff --git a/docs/content/configuration.md b/docs/content/configuration.md index 612c505..45c5de6 100644 --- a/docs/content/configuration.md +++ b/docs/content/configuration.md @@ -59,9 +59,10 @@ configuration variable required for each command. ([GitHub](https://github.com/Menci/docker-archlinuxarm)). This is the image used for the Vieter CI builds. * `max_log_age`: maximum age of logs (in days). Logs older than this will get - cleaned by the log removal daemon. If set to zero, no logs are ever removed. - The age of logs is determined by the time the build was started. - * Default: `0` + cleaned by the log removal daemon. If set to a negative value, no logs are + ever removed. The age of logs is determined by the time the build was + started. + * Default: `-1` * `log_removal_schedule`: cron schedule defining when to clean old logs. * Default: `0 0` (every day at midnight) diff --git a/src/client/logs.v b/src/client/logs.v index 6553837..2ddb2e2 100644 --- a/src/client/logs.v +++ b/src/client/logs.v @@ -1,27 +1,28 @@ module client import models { BuildLog, BuildLogFilter } +import net.http { Method } import web.response { Response } import time // get_build_logs returns all build logs. pub fn (c &Client) get_build_logs(filter BuildLogFilter) ![]BuildLog { params := models.params_from(filter) - data := c.send_request<[]BuildLog>(.get, '/api/v1/logs', params)! + data := c.send_request<[]BuildLog>(Method.get, '/api/v1/logs', params)! return data.data } // get_build_log returns a specific build log. pub fn (c &Client) get_build_log(id int) !BuildLog { - data := c.send_request(.get, '/api/v1/logs/$id', {})! + data := c.send_request(Method.get, '/api/v1/logs/$id', {})! return data.data } // get_build_log_content returns the contents of the build log file. pub fn (c &Client) get_build_log_content(id int) !string { - data := c.send_request_raw_response(.get, '/api/v1/logs/$id/content', {}, '')! + data := c.send_request_raw_response(Method.get, '/api/v1/logs/$id/content', {}, '')! return data } @@ -36,7 +37,7 @@ pub fn (c &Client) add_build_log(target_id int, start_time time.Time, end_time t 'exitCode': exit_code.str() } - data := c.send_request_with_body(.post, '/api/v1/logs', params, content)! + data := c.send_request_with_body(Method.post, '/api/v1/logs', params, content)! return data } diff --git a/src/client/repos.v b/src/client/repos.v deleted file mode 100644 index 9644e9b..0000000 --- a/src/client/repos.v +++ /dev/null @@ -1,16 +0,0 @@ -module client - -// remove_repo removes an entire repository. -pub fn (c &Client) remove_repo(repo string) ! { - c.send_request(.delete, '/$repo', {})! -} - -// remove_arch_repo removes an entire arch-repo. -pub fn (c &Client) remove_arch_repo(repo string, arch string) ! { - c.send_request(.delete, '/$repo/$arch', {})! -} - -// remove_package removes a single package from the given arch-repo. -pub fn (c &Client) remove_package(repo string, arch string, pkgname string) ! { - c.send_request(.delete, '/$repo/$arch/$pkgname', {})! -} diff --git a/src/client/targets.v b/src/client/targets.v index 565832e..da6a9e4 100644 --- a/src/client/targets.v +++ b/src/client/targets.v @@ -1,11 +1,12 @@ module client import models { Target, TargetFilter } +import net.http { Method } // get_targets returns a list of targets, given a filter object. pub fn (c &Client) get_targets(filter TargetFilter) ![]Target { params := models.params_from(filter) - data := c.send_request<[]Target>(.get, '/api/v1/targets', params)! + data := c.send_request<[]Target>(Method.get, '/api/v1/targets', params)! return data.data } @@ -33,7 +34,7 @@ pub fn (c &Client) get_all_targets() ![]Target { // get_target returns the target for a specific id. pub fn (c &Client) get_target(id int) !Target { - data := c.send_request(.get, '/api/v1/targets/$id', {})! + data := c.send_request(Method.get, '/api/v1/targets/$id', {})! return data.data } @@ -50,14 +51,14 @@ pub struct NewTarget { // add_target adds a new target to the server. pub fn (c &Client) add_target(t NewTarget) !int { params := models.params_from(t) - data := c.send_request(.post, '/api/v1/targets', params)! + data := c.send_request(Method.post, '/api/v1/targets', params)! return data.data } // remove_target removes the target with the given id from the server. pub fn (c &Client) remove_target(id int) !string { - data := c.send_request(.delete, '/api/v1/targets/$id', {})! + data := c.send_request(Method.delete, '/api/v1/targets/$id', {})! return data.data } @@ -65,7 +66,7 @@ pub fn (c &Client) remove_target(id int) !string { // patch_target sends a PATCH request to the given target with the params as // payload. pub fn (c &Client) patch_target(id int, params map[string]string) !string { - data := c.send_request(.patch, '/api/v1/targets/$id', params)! + data := c.send_request(Method.patch, '/api/v1/targets/$id', params)! return data.data } diff --git a/src/console/repos/repos.v b/src/console/repos/repos.v deleted file mode 100644 index 729208e..0000000 --- a/src/console/repos/repos.v +++ /dev/null @@ -1,52 +0,0 @@ -module repos - -import cli -import conf as vconf -import client - -struct Config { - address string [required] - api_key string [required] -} - -// cmd returns the cli module that handles modifying the repository contents. -pub fn cmd() cli.Command { - return cli.Command{ - name: 'repos' - description: 'Interact with the repositories & packages stored on the server.' - commands: [ - cli.Command{ - name: 'remove' - required_args: 1 - usage: 'repo [arch [pkgname]]' - description: 'Remove a repo, arch-repo, or package from the server.' - flags: [ - cli.Flag{ - name: 'force' - flag: cli.FlagType.bool - }, - ] - execute: fn (cmd cli.Command) ! { - config_file := cmd.flags.get_string('config-file')! - conf := vconf.load(prefix: 'VIETER_', default_path: config_file)! - - if cmd.args.len < 3 { - if !cmd.flags.get_bool('force')! { - return error('Removing an arch-repo or repository is a very destructive command. If you really do wish to perform this operation, explicitely add the --force flag.') - } - } - - client := client.new(conf.address, conf.api_key) - - if cmd.args.len == 1 { - client.remove_repo(cmd.args[0])! - } else if cmd.args.len == 2 { - client.remove_arch_repo(cmd.args[0], cmd.args[1])! - } else { - client.remove_package(cmd.args[0], cmd.args[1], cmd.args[2])! - } - } - }, - ] - } -} diff --git a/src/main.v b/src/main.v index 8d4ca04..eda38e7 100644 --- a/src/main.v +++ b/src/main.v @@ -8,7 +8,6 @@ import console.logs import console.schedule import console.man import console.aur -import console.repos import cron import agent @@ -49,7 +48,6 @@ fn main() { man.cmd(), aur.cmd(), agent.cmd(), - repos.cmd(), ] } app.setup() diff --git a/src/server/cli.v b/src/server/cli.v index aec93ca..795f764 100644 --- a/src/server/cli.v +++ b/src/server/cli.v @@ -13,7 +13,7 @@ pub: default_arch string global_schedule string = '0 3' base_image string = 'archlinux:base-devel' - max_log_age int [empty_default] + max_log_age int = -1 log_removal_schedule string = '0 0' }