chore: compile with -skip-unused and mbedtls
							parent
							
								
									dc517c23c5
								
							
						
					
					
						commit
						03edab3d23
					
				
							
								
								
									
										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 -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