feat: add terraform-local package type for local registry

- New package type "terraform-local" for hosting terraform providers
  without an upstream registry
- Upload via PUT /api/v2/remotes/{name}/files/{path}, returns 409 on
  duplicate (overwrites not allowed)
- Download via GET on same path, or via v1 proxy route
- Provider registers as fully immutable, no upstream rewriting
- v1 proxy handler serves local files directly for local repo types
- Database CRUD for local_files table
This commit is contained in:
2026-06-21 23:01:59 +10:00
parent b46c116f6b
commit 2f1e3830da
6 changed files with 328 additions and 7 deletions
+10 -4
View File
@@ -13,8 +13,9 @@ const (
PackageRPM PackageType = "rpm"
PackageAlpine PackageType = "alpine"
PackagePuppet PackageType = "puppet"
PackageTerraform PackageType = "terraform"
PackageGoProxy PackageType = "goproxy"
PackageTerraform PackageType = "terraform"
PackageTerraformLocal PackageType = "terraform-local"
PackageGoProxy PackageType = "goproxy"
)
var validPackageTypes = map[PackageType]bool{
@@ -26,14 +27,19 @@ var validPackageTypes = map[PackageType]bool{
PackageRPM: true,
PackageAlpine: true,
PackagePuppet: true,
PackageTerraform: true,
PackageGoProxy: true,
PackageTerraform: true,
PackageTerraformLocal: true,
PackageGoProxy: true,
}
func (p PackageType) Valid() bool {
return validPackageTypes[p]
}
func (p PackageType) IsLocal() bool {
return p == PackageTerraformLocal
}
func (p PackageType) String() string {
return string(p)
}