diff --git a/src/agent/daemon.v b/src/agent/daemon.v index c55d0db..8fa3816 100644 --- a/src/agent/daemon.v +++ b/src/agent/daemon.v @@ -2,8 +2,7 @@ module agent import log import sync.stdatomic -import build -import models { BuildConfig } +import build { BuildConfig } import client import time import os diff --git a/src/build/build.v b/src/build/build.v index 712c93b..c6aa7f1 100644 --- a/src/build/build.v +++ b/src/build/build.v @@ -6,7 +6,7 @@ import time import os import strings import util -import models { BuildConfig, Target } +import models { Target } const ( container_build_dir = '/build' @@ -16,6 +16,23 @@ const ( '/usr/local/bin', '/usr/bin/site_perl', '/usr/bin/vendor_perl', '/usr/bin/core_perl'] ) +pub struct BuildConfig { +pub: + target_id int + kind string + url string + branch string + path string + repo string + base_image string + force bool +} + +// str return a single-line string representation of a build log +pub fn (c BuildConfig) str() string { + return '{ target: $c.target_id, kind: $c.kind, url: $c.url, branch: $c.branch, path: $c.path, repo: $c.repo, base_image: $c.base_image, force: $c.force }' +} + // create_build_image creates a builder image given some base image which can // then be used to build & package Arch images. It mostly just updates the // system, install some necessary packages & creates a non-root user to run @@ -95,7 +112,16 @@ pub: // build_target builds the given target. Internally it calls `build_config`. pub fn build_target(address string, api_key string, base_image_id string, target &Target, force bool) !BuildResult { - config := target.as_build_config(base_image_id, force) + config := BuildConfig{ + target_id: target.id + kind: target.kind + url: target.url + branch: target.branch + path: target.path + repo: target.repo + base_image: base_image_id + force: force + } return build_config(address, api_key, config) } diff --git a/src/build/queue.v b/src/build/queue.v index e74529c..7902173 100644 --- a/src/build/queue.v +++ b/src/build/queue.v @@ -1,6 +1,6 @@ module build -import models { BuildConfig, Target } +import models { Target } import cron.expression { CronExpression, parse_expression } import time import datatypes { MinHeap } @@ -80,7 +80,16 @@ pub fn (mut q BuildJobQueue) insert(input InsertConfig) ! { mut job := BuildJob{ created: time.now() single: input.single - config: input.target.as_build_config(q.default_base_image, input.force) + config: BuildConfig{ + target_id: input.target.id + kind: input.target.kind + url: input.target.url + branch: input.target.branch + repo: input.target.repo + // TODO make this configurable + base_image: q.default_base_image + force: input.force + } } if !input.now { diff --git a/src/build/shell.v b/src/build/shell.v index 16f93b5..c459a99 100644 --- a/src/build/shell.v +++ b/src/build/shell.v @@ -1,7 +1,5 @@ module build -import models { BuildConfig } - // escape_shell_string escapes any characters that could be interpreted // incorrectly by a shell. The resulting value should be safe to use inside an // echo statement. diff --git a/src/build/shell_test.v b/src/build/shell_test.v index e23d964..e44c5ff 100644 --- a/src/build/shell_test.v +++ b/src/build/shell_test.v @@ -1,7 +1,5 @@ module build -import models { BuildConfig } - fn test_create_build_script_git() { config := BuildConfig{ target_id: 1 diff --git a/src/client/jobs.v b/src/client/jobs.v index 784639e..a545499 100644 --- a/src/client/jobs.v +++ b/src/client/jobs.v @@ -1,6 +1,6 @@ module client -import models { BuildConfig } +import build { BuildConfig } // poll_jobs requests a list of new build jobs from the server. pub fn (c &Client) poll_jobs(arch string, max int) ![]BuildConfig { diff --git a/src/models/builds.v b/src/models/builds.v deleted file mode 100644 index 926a53c..0000000 --- a/src/models/builds.v +++ /dev/null @@ -1,18 +0,0 @@ -module models - -pub struct BuildConfig { -pub: - target_id int - kind string - url string - branch string - path string - repo string - base_image string - force bool -} - -// str return a single-line string representation of a build log -pub fn (c BuildConfig) str() string { - return '{ target: $c.target_id, kind: $c.kind, url: $c.url, branch: $c.branch, path: $c.path, repo: $c.repo, base_image: $c.base_image, force: $c.force }' -} diff --git a/src/models/targets.v b/src/models/targets.v index af3cb0d..cb60650 100644 --- a/src/models/targets.v +++ b/src/models/targets.v @@ -52,21 +52,6 @@ pub fn (t &Target) str() string { return str } -// as_build_config converts a Target into a BuildConfig, given some extra -// needed information. -pub fn (t &Target) as_build_config(base_image string, force bool) BuildConfig { - return BuildConfig{ - target_id: t.id - kind: t.kind - url: t.url - branch: t.branch - path: t.path - repo: t.repo - base_image: base_image - force: force - } -} - [params] pub struct TargetFilter { pub mut: