aboutsummaryrefslogtreecommitdiffstats
path: root/build.lua
diff options
context:
space:
mode:
Diffstat (limited to 'build.lua')
-rwxr-xr-xbuild.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/build.lua b/build.lua
new file mode 100755
index 0000000..c509502
--- /dev/null
+++ b/build.lua
@@ -0,0 +1,51 @@
+#!/usr/bin/lua5.3
+
+local yaml = require("lyaml")
+local http = require("socket.http")
+local pfile = require("pl.file")
+local ppath = require("pl.path")
+local lustache = require("lustache")
+
+local cf = yaml.load(pfile.read("config.yaml"))
+cf.releases = {}
+local info = {}
+
+function get_release_info(release, arch)
+ local url = ("%s/%s/releases/%s/latest-releases.yaml"):format(
+ cf.mirror, release, arch)
+ local body, code = http.request(url)
+ if not body then error(code) end
+
+ local res = yaml.load(body)
+ for k,v in ipairs(res) do
+ if v.flavor == "alpine-netboot" then return v end
+ end
+end
+
+for _,branch in ipairs(cf.branches) do
+ for _,arch in ipairs(cf.archs) do
+ info = get_release_info(branch, arch)
+ if info then
+ if ppath.exists(("/var/www/localhost/htdocs/sigs/%s/%s/%s"):format(
+ info.branch, info.arch, info.version)) then
+ print(("Skipping: %s/%s/%s"):format(
+ info.branch, info.arch, info.version))
+ else
+ info.origin_branch = branch
+ print(("Processing: %s/%s/%s"):format(
+ info.branch, info.arch, info.version))
+ os.execute(("./sign_images.sh \"%s\" \"%s\" \"%s\""):format(
+ info.branch, info.arch, info.version))
+ end
+ end
+ end
+ if branch == cf.default.branch then
+ cf.default.branch = info.branch
+ cf.default.version = info.version
+ end
+ table.insert(cf.releases, { branch=info.branch, version=info.version })
+end
+
+local tpl = pfile.read(cf.tpl)
+print("Updating ipxe script: "..cf.ipxe)
+pfile.write(cf.ipxe, lustache:render(tpl, cf))