forked from vieter-v/vieter
chore: compile with -skip-unused
parent
dc517c23c5
commit
3342eedfa4
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@ SRC_DIR := src
|
||||||
SOURCES != find '$(SRC_DIR)' -iname '*.v'
|
SOURCES != find '$(SRC_DIR)' -iname '*.v'
|
||||||
|
|
||||||
V_PATH ?= v
|
V_PATH ?= v
|
||||||
V := $(V_PATH) -showcc -gc boehm -W -d use_openssl
|
V := $(V_PATH) -showcc -gc boehm -W -d use_openssl -skip-unused
|
||||||
|
|
||||||
all: vieter
|
all: vieter
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import web
|
||||||
import web.response { new_data_response, new_response }
|
import web.response { new_data_response, new_response }
|
||||||
|
|
||||||
// v1_poll_job_queue allows agents to poll for new build jobs.
|
// v1_poll_job_queue allows agents to poll for new build jobs.
|
||||||
['/api/v1/jobs/poll'; auth; get]
|
['/api/v1/jobs/poll'; auth; get; markused]
|
||||||
fn (mut app App) v1_poll_job_queue() web.Result {
|
fn (mut app App) v1_poll_job_queue() web.Result {
|
||||||
arch := app.query['arch'] or {
|
arch := app.query['arch'] or {
|
||||||
return app.json(.bad_request, new_response('Missing arch query arg.'))
|
return app.json(.bad_request, new_response('Missing arch query arg.'))
|
||||||
|
@ -21,7 +21,7 @@ fn (mut app App) v1_poll_job_queue() web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_queue_job allows queueing a new one-time build job for the given target.
|
// v1_queue_job allows queueing a new one-time build job for the given target.
|
||||||
['/api/v1/jobs/queue'; auth; post]
|
['/api/v1/jobs/queue'; auth; markused; post]
|
||||||
fn (mut app App) v1_queue_job() web.Result {
|
fn (mut app App) v1_queue_job() web.Result {
|
||||||
target_id := app.query['target'] or {
|
target_id := app.query['target'] or {
|
||||||
return app.json(.bad_request, new_response('Missing target query arg.'))
|
return app.json(.bad_request, new_response('Missing target query arg.'))
|
||||||
|
|
|
@ -11,7 +11,7 @@ import models { BuildLog, BuildLogFilter }
|
||||||
|
|
||||||
// v1_get_logs returns all build logs in the database. A 'target' query param can
|
// v1_get_logs returns all build logs in the database. A 'target' query param can
|
||||||
// optionally be added to limit the list of build logs to that repository.
|
// optionally be added to limit the list of build logs to that repository.
|
||||||
['/api/v1/logs'; auth; get]
|
['/api/v1/logs'; auth; get; markused]
|
||||||
fn (mut app App) v1_get_logs() web.Result {
|
fn (mut app App) v1_get_logs() web.Result {
|
||||||
filter := models.from_params<BuildLogFilter>(app.query) or {
|
filter := models.from_params<BuildLogFilter>(app.query) or {
|
||||||
return app.json(.bad_request, new_response('Invalid query parameters.'))
|
return app.json(.bad_request, new_response('Invalid query parameters.'))
|
||||||
|
@ -22,7 +22,7 @@ fn (mut app App) v1_get_logs() web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_get_single_log returns the build log with the given id.
|
// v1_get_single_log returns the build log with the given id.
|
||||||
['/api/v1/logs/:id'; auth; get]
|
['/api/v1/logs/:id'; auth; get; markused]
|
||||||
fn (mut app App) v1_get_single_log(id int) web.Result {
|
fn (mut app App) v1_get_single_log(id int) web.Result {
|
||||||
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ fn (mut app App) v1_get_single_log(id int) web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_get_log_content returns the actual build log file for the given id.
|
// v1_get_log_content returns the actual build log file for the given id.
|
||||||
['/api/v1/logs/:id/content'; auth; get]
|
['/api/v1/logs/:id/content'; auth; get; markused]
|
||||||
fn (mut app App) v1_get_log_content(id int) web.Result {
|
fn (mut app App) v1_get_log_content(id int) web.Result {
|
||||||
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
||||||
file_name := log.start_time.custom_format('YYYY-MM-DD_HH-mm-ss')
|
file_name := log.start_time.custom_format('YYYY-MM-DD_HH-mm-ss')
|
||||||
|
@ -50,7 +50,7 @@ fn parse_query_time(query string) !time.Time {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_post_log adds a new log to the database.
|
// v1_post_log adds a new log to the database.
|
||||||
['/api/v1/logs'; auth; post]
|
['/api/v1/logs'; auth; markused; post]
|
||||||
fn (mut app App) v1_post_log() web.Result {
|
fn (mut app App) v1_post_log() web.Result {
|
||||||
// Parse query params
|
// Parse query params
|
||||||
start_time_int := app.query['startTime'].int()
|
start_time_int := app.query['startTime'].int()
|
||||||
|
@ -121,7 +121,7 @@ fn (mut app App) v1_post_log() web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_delete_log allows removing a build log from the system.
|
// v1_delete_log allows removing a build log from the system.
|
||||||
['/api/v1/logs/:id'; auth; delete]
|
['/api/v1/logs/:id'; auth; delete; markused]
|
||||||
fn (mut app App) v1_delete_log(id int) web.Result {
|
fn (mut app App) v1_delete_log(id int) web.Result {
|
||||||
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
log := app.db.get_build_log(id) or { return app.status(.not_found) }
|
||||||
full_path := os.join_path(app.conf.data_dir, logs_dir_name, log.path())
|
full_path := os.join_path(app.conf.data_dir, logs_dir_name, log.path())
|
||||||
|
|
|
@ -6,7 +6,7 @@ import db
|
||||||
import models { Target, TargetArch, TargetFilter }
|
import models { Target, TargetArch, TargetFilter }
|
||||||
|
|
||||||
// v1_get_targets returns the current list of targets.
|
// v1_get_targets returns the current list of targets.
|
||||||
['/api/v1/targets'; auth; get]
|
['/api/v1/targets'; auth; get; markused]
|
||||||
fn (mut app App) v1_get_targets() web.Result {
|
fn (mut app App) v1_get_targets() web.Result {
|
||||||
filter := models.from_params<TargetFilter>(app.query) or {
|
filter := models.from_params<TargetFilter>(app.query) or {
|
||||||
return app.json(.bad_request, new_response('Invalid query parameters.'))
|
return app.json(.bad_request, new_response('Invalid query parameters.'))
|
||||||
|
@ -17,7 +17,7 @@ fn (mut app App) v1_get_targets() web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_get_single_target returns the information for a single target.
|
// v1_get_single_target returns the information for a single target.
|
||||||
['/api/v1/targets/:id'; auth; get]
|
['/api/v1/targets/:id'; auth; get; markused]
|
||||||
fn (mut app App) v1_get_single_target(id int) web.Result {
|
fn (mut app App) v1_get_single_target(id int) web.Result {
|
||||||
target := app.db.get_target(id) or { return app.status(.not_found) }
|
target := app.db.get_target(id) or { return app.status(.not_found) }
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ fn (mut app App) v1_get_single_target(id int) web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_post_target creates a new target from the provided query string.
|
// v1_post_target creates a new target from the provided query string.
|
||||||
['/api/v1/targets'; auth; post]
|
['/api/v1/targets'; auth; markused; post]
|
||||||
fn (mut app App) v1_post_target() web.Result {
|
fn (mut app App) v1_post_target() web.Result {
|
||||||
mut params := app.query.clone()
|
mut params := app.query.clone()
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ fn (mut app App) v1_post_target() web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_delete_target removes a given target from the server's list.
|
// v1_delete_target removes a given target from the server's list.
|
||||||
['/api/v1/targets/:id'; auth; delete]
|
['/api/v1/targets/:id'; auth; delete; markused]
|
||||||
fn (mut app App) v1_delete_target(id int) web.Result {
|
fn (mut app App) v1_delete_target(id int) web.Result {
|
||||||
app.db.delete_target(id)
|
app.db.delete_target(id)
|
||||||
app.job_queue.invalidate(id)
|
app.job_queue.invalidate(id)
|
||||||
|
@ -64,7 +64,7 @@ fn (mut app App) v1_delete_target(id int) web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1_patch_target updates a target's data with the given query params.
|
// v1_patch_target updates a target's data with the given query params.
|
||||||
['/api/v1/targets/:id'; auth; patch]
|
['/api/v1/targets/:id'; auth; markused; patch]
|
||||||
fn (mut app App) v1_patch_target(id int) web.Result {
|
fn (mut app App) v1_patch_target(id int) web.Result {
|
||||||
app.db.update_target(id, app.query)
|
app.db.update_target(id, app.query)
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import web.response { new_data_response, new_response }
|
||||||
|
|
||||||
// healthcheck just returns a string, but can be used to quickly check if the
|
// healthcheck just returns a string, but can be used to quickly check if the
|
||||||
// server is still responsive.
|
// server is still responsive.
|
||||||
['/health'; get]
|
['/health'; get; markused]
|
||||||
pub fn (mut app App) healthcheck() web.Result {
|
pub fn (mut app App) healthcheck() web.Result {
|
||||||
return app.json(.ok, new_response('Healthy.'))
|
return app.json(.ok, new_response('Healthy.'))
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ pub fn (mut app App) healthcheck() web.Result {
|
||||||
// get_repo_file handles all Pacman-related routes. It returns both the
|
// get_repo_file handles all Pacman-related routes. It returns both the
|
||||||
// repository's archives, but also package archives or the contents of a
|
// repository's archives, but also package archives or the contents of a
|
||||||
// package's desc file.
|
// package's desc file.
|
||||||
['/:repo/:arch/:filename'; get; head]
|
['/:repo/:arch/:filename'; get; head; markused]
|
||||||
fn (mut app App) get_repo_file(repo string, arch string, filename string) web.Result {
|
fn (mut app App) get_repo_file(repo string, arch string, filename string) web.Result {
|
||||||
mut full_path := ''
|
mut full_path := ''
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ fn (mut app App) get_repo_file(repo string, arch string, filename string) web.Re
|
||||||
}
|
}
|
||||||
|
|
||||||
// put_package handles publishing a package to a repository.
|
// put_package handles publishing a package to a repository.
|
||||||
['/:repo/publish'; auth; post]
|
['/:repo/publish'; auth; markused; post]
|
||||||
fn (mut app App) put_package(repo string) web.Result {
|
fn (mut app App) put_package(repo string) web.Result {
|
||||||
// api is a reserved keyword for api routes & should never be allowed to be
|
// api is a reserved keyword for api routes & should never be allowed to be
|
||||||
// a repository.
|
// a repository.
|
||||||
|
|
|
@ -3,7 +3,7 @@ module server
|
||||||
import web
|
import web
|
||||||
|
|
||||||
// delete_package tries to remove the given package.
|
// delete_package tries to remove the given package.
|
||||||
['/:repo/:arch/:pkg'; auth; delete]
|
['/:repo/:arch/:pkg'; auth; delete; markused]
|
||||||
fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result {
|
fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result {
|
||||||
res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or {
|
res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or {
|
||||||
app.lerror('Error while deleting package: $err.msg()')
|
app.lerror('Error while deleting package: $err.msg()')
|
||||||
|
@ -23,7 +23,7 @@ fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result
|
||||||
}
|
}
|
||||||
|
|
||||||
// delete_arch_repo tries to remove the given arch-repo.
|
// delete_arch_repo tries to remove the given arch-repo.
|
||||||
['/:repo/:arch'; auth; delete]
|
['/:repo/:arch'; auth; delete; markused]
|
||||||
fn (mut app App) delete_arch_repo(repo string, arch string) web.Result {
|
fn (mut app App) delete_arch_repo(repo string, arch string) web.Result {
|
||||||
res := app.repo.remove_arch_repo(repo, arch) or {
|
res := app.repo.remove_arch_repo(repo, arch) or {
|
||||||
app.lerror('Error while deleting arch-repo: $err.msg()')
|
app.lerror('Error while deleting arch-repo: $err.msg()')
|
||||||
|
@ -43,7 +43,7 @@ fn (mut app App) delete_arch_repo(repo string, arch string) web.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
// delete_repo tries to remove the given repo.
|
// delete_repo tries to remove the given repo.
|
||||||
['/:repo'; auth; delete]
|
['/:repo'; auth; delete; markused]
|
||||||
fn (mut app App) delete_repo(repo string) web.Result {
|
fn (mut app App) delete_repo(repo string) web.Result {
|
||||||
res := app.repo.remove_repo(repo) or {
|
res := app.repo.remove_repo(repo) or {
|
||||||
app.lerror('Error while deleting repo: $err.msg()')
|
app.lerror('Error while deleting repo: $err.msg()')
|
||||||
|
|
|
@ -5,7 +5,7 @@ import net.http
|
||||||
|
|
||||||
// Method attributes that should be ignored when parsing, as they're used
|
// Method attributes that should be ignored when parsing, as they're used
|
||||||
// elsewhere.
|
// elsewhere.
|
||||||
const attrs_to_ignore = ['auth']
|
const attrs_to_ignore = ['auth', 'markused']
|
||||||
|
|
||||||
// Parsing function attributes for methods and path.
|
// Parsing function attributes for methods and path.
|
||||||
fn parse_attrs(name string, attrs []string) !([]http.Method, string) {
|
fn parse_attrs(name string, attrs []string) !([]http.Method, string) {
|
||||||
|
|
Loading…
Reference in New Issue