From 564732162223e76a307bb06e132e9f0351f239bf Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 21 May 2026 22:51:50 +0900 Subject: [PATCH] internal/rosa: move azalea builtins This improves readability. Signed-off-by: Ophestra --- internal/rosa/builtins.go | 70 +++++++++++++++++++++++++++++++++++++++ internal/rosa/rosa.go | 63 ----------------------------------- 2 files changed, 70 insertions(+), 63 deletions(-) create mode 100644 internal/rosa/builtins.go 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, + ) +} diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go index 94d827bc..1d363204 100644 --- a/internal/rosa/rosa.go +++ b/internal/rosa/rosa.go @@ -5,7 +5,6 @@ import ( "embed" "io/fs" "os" - "path" "slices" "strconv" "strings" @@ -620,68 +619,6 @@ func (attr *GenericHelper) script(t Toolchain, _ string) string { return script } -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, - ) -} - // native contains natively-implemented and built-in azalea-based [Artifact]. // It is generally recommended to clone this instance for custom [Artifact] // registrations.