aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/builtins.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-21 22:51:50 +0900
committerOphestra <cat@gensokyo.uk>2026-05-21 22:51:50 +0900
commit564732162223e76a307bb06e132e9f0351f239bf (patch)
tree460a1e42b8fb50d975146e3e29c0c02827d7e43b /internal/rosa/builtins.go
parentcdd31dd27b79bf997b73325cf31e8bba66a81117 (diff)
internal/rosa: move azalea builtins
This improves readability. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/builtins.go')
-rw-r--r--internal/rosa/builtins.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/internal/rosa/builtins.go b/internal/rosa/builtins.go
new file mode 100644
index 00000000..78123921
--- /dev/null
+++ b/internal/rosa/builtins.go
@@ -0,0 +1,70 @@
+package rosa
+
+import (
+ "path"
+ "strings"
+
+ "hakurei.app/internal/pkg"
+)
+
+const (
+ // jobsE is expression for preferred job count set by [pkg].
+ jobsE = `"$` + pkg.EnvJobs + `"`
+ // jobsFlagE is expression for flag with preferred job count.
+ jobsFlagE = `"-j$` + pkg.EnvJobs + `"`
+ // jobsLE is expression for twice of preferred job count set by [pkg].
+ jobsLE = `"$(expr ` + jobsE + ` '*' 2)"`
+ // jobsLFlagE is expression for flag with double of preferred job count.
+ jobsLFlagE = `"-j$(expr ` + jobsE + ` '*' 2)"`
+)
+
+// newTar wraps [pkg.NewHTTPGetTar] with a simpler function signature.
+func newTar(url, checksum string, compression uint32) pkg.Artifact {
+ return pkg.NewHTTPGetTar(nil, url, mustDecode(checksum), compression)
+}
+
+// newFromCPAN is a helper for downloading release from CPAN.
+func newFromCPAN(author, name, version, checksum string) pkg.Artifact {
+ return newTar(
+ "https://cpan.metacpan.org/authors/id/"+
+ author[:1]+"/"+author[:2]+"/"+author+"/"+
+ name+"-"+version+".tar.gz",
+ checksum,
+ pkg.TarGzip,
+ )
+}
+
+// newFromGitLab is a helper for downloading source from GitLab.
+func newFromGitLab(domain, suffix, ref, checksum string) pkg.Artifact {
+ return newTar(
+ "https://"+domain+"/"+suffix+"/-/archive/"+
+ ref+"/"+path.Base(suffix)+"-"+
+ strings.ReplaceAll(ref, "/", "-")+".tar.bz2",
+ checksum,
+ pkg.TarBzip2,
+ )
+}
+
+// newFromGitHub is a helper for downloading source from Microsoft Github.
+func newFromGitHub(suffix, tag, checksum string) pkg.Artifact {
+ return newTar(
+ "https://github.com/"+suffix+
+ "/archive/refs/tags/"+tag+".tar.gz",
+ checksum,
+ pkg.TarGzip,
+ )
+}
+
+// newFromGitHubRelease is a helper for downloading release tarball from
+// Microsoft Github.
+func newFromGitHubRelease(
+ suffix, tag, name, checksum string,
+ compression uint32,
+) pkg.Artifact {
+ return newTar(
+ "https://github.com/"+suffix+
+ "/releases/download/"+tag+"/"+name,
+ checksum,
+ compression,
+ )
+}