diff --git a/CLAUDE.md b/CLAUDE.md index da229cb..64c06eb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,37 +1,84 @@ # CLAUDE.md +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + ## Project Overview -`core/go-build` is the build system, release pipeline, and SDK generation tool. Three main packages: build (cross-compilation, archiving, signing), release (versioning, changelog, publishers), and sdk (OpenAPI diff, code generation). +`core/go-build` is the build system, release pipeline, and SDK generation tool for the Core ecosystem. Three subsystems under `pkg/` — **build**, **release**, **sdk** — can be used as libraries or wired together via CLI commands in `cmd/`. This repo produces no standalone binary; `cmd/` packages register commands via `cli.RegisterCommands()` in `init()` functions, compiled into the `core` binary from `forge.lthn.ai/core/cli`. -## Build & Development +## Build & Test ```bash -go test ./... -go build ./... +go build ./... # compile all packages +go test ./... # run all tests +go test ./pkg/build/... -run TestLoadConfig_Good # single test by name +go test -race ./... # with race detection ``` +**Go workspace**: this module is part of `~/Code/go.work`. Run `go work sync` after cloning. Set `GOPRIVATE=forge.lthn.ai/*` for private module fetching. + ## Architecture -- `build/` — Build config (.core/build.yaml), project discovery, archiving, checksums -- `build/builders/` — Go, Wails, Docker, LinuxKit, C++, Taskfile builders -- `build/signing/` — Code signing (macOS notarisation, GPG) -- `build/buildcmd/` — CLI commands for `core build` -- `release/` — Versioning, changelog generation, release orchestration -- `release/publishers/` — GitHub, Homebrew, Scoop, AUR, npm, Docker, Chocolatey -- `sdk/` — OpenAPI spec diffing, SDK code generation -- `cmd/ci/` — CI/release pipeline commands -- `cmd/sdk/` — SDK validation commands +The three subsystems share common types but are independent: -## Dependencies +- **`pkg/build/`** — Config loading (`.core/build.yaml`), project discovery via marker files, `Builder` interface, archiving (tar.gz/zip), checksums (SHA-256) +- **`pkg/build/builders/`** — Go, Wails, Docker, LinuxKit, C++, Taskfile builder implementations +- **`pkg/build/signing/`** — `Signer` interface with GPG, macOS codesign/notarisation, Windows (placeholder). Credentials support `$ENV` expansion +- **`pkg/release/`** — Version resolution from git tags, conventional-commit changelog generation, release orchestration. Two entry points: `Run()` (full pipeline) and `Publish()` (pre-built artifacts from `dist/`) +- **`pkg/release/publishers/`** — `Publisher` interface: GitHub, Docker, npm, Homebrew, Scoop, AUR, Chocolatey, LinuxKit +- **`pkg/sdk/`** — OpenAPI spec detection, breaking-change diff via oasdiff, SDK code generation +- **`pkg/sdk/generators/`** — `Generator` interface with registry. TypeScript, Python, Go, PHP generators (native tool -> npx -> Docker fallback) +- **`cmd/build/`** — `core build` commands (build, from-path, pwa, sdk, release) +- **`cmd/ci/`** — `core ci` commands (publish, init, changelog, version) +- **`cmd/sdk/`** — `core sdk` commands (diff, validate) -- `cli` — Command registration -- `go-io` — File utilities -- `go-i18n` — Internationalisation -- `go-log` — Structured logging -- Borg — Compression -- kin-openapi, oasdiff — OpenAPI tooling +### Key Data Flow + +``` +.core/build.yaml -> LoadConfig() -> BuildConfig +project dir -> Discover() -> ProjectType -> getBuilder() -> Builder.Build() -> []Artifact + -> SignBinaries() -> ArchiveAll() -> ChecksumAll() -> Publisher.Publish() +``` + +### Key Interfaces + +- `build.Builder` — `Name()`, `Detect(fs, dir)`, `Build(ctx, cfg, targets)` +- `publishers.Publisher` — `Name()`, `Publish(ctx, release, pubCfg, relCfg, dryRun)` +- `signing.Signer` — `Name()`, `Available()`, `Sign(ctx, fs, path)` +- `generators.Generator` — `Language()`, `Generate(ctx, opts)`, `Available()`, `Install()` + +### Filesystem Abstraction + +All file operations use `io.Medium` from `forge.lthn.ai/core/go-io`. Production uses `io.Local`; tests inject mocks for isolation. + +### Configuration Files + +- `.core/build.yaml` — Build config (targets, flags, signing) +- `.core/release.yaml` — Release config (publishers, changelog, SDK settings) ## Coding Standards -- UK English, strict types, testify, EUPL-1.2 +- **UK English** in comments and strings (colour, organisation, notarisation) +- **Strict types** — all parameters and return types explicitly typed +- **Error wrapping** — `fmt.Errorf("package.Function: message: %w", err)` +- **testify** (`assert`/`require`) for assertions +- **Test naming** — `_Good` (happy path), `_Bad` (expected errors), `_Ugly` (edge cases) +- **Conventional commits** — `type(scope): description` +- **Licence** — EUPL-1.2 + +## Extension Points + +**New builder**: implement `build.Builder` in `pkg/build/builders/`, add to `getBuilder()` in `cmd/build/cmd_project.go` and `pkg/release/release.go`, optionally add `ProjectType` to `pkg/build/build.go` and marker to `pkg/build/discovery.go`. + +**New publisher**: implement `publishers.Publisher` in `pkg/release/publishers/`, add to `getPublisher()` in `pkg/release/release.go`, add config fields to `PublisherConfig` in `pkg/release/config.go` and `buildExtendedConfig()`. + +**New SDK generator**: implement `generators.Generator` in `pkg/sdk/generators/`, register in `pkg/sdk/sdk.go` `GenerateLanguage()`. + +## Dependencies + +- `forge.lthn.ai/core/cli` — Command registration (`cli.RegisterCommands`, `cli.Command`) +- `forge.lthn.ai/core/go-io` — Filesystem abstraction (`io.Medium`, `io.Local`) +- `forge.lthn.ai/core/go-i18n` — Internationalisation (`i18n.T()`, `i18n.Label()`) +- `forge.lthn.ai/core/go-log` — Structured logging +- `github.com/Snider/Borg` — XZ compression for archives +- `github.com/getkin/kin-openapi` + `github.com/oasdiff/oasdiff` — OpenAPI parsing and diff diff --git a/build/buildcmd/cmd_build.go b/cmd/build/cmd_build.go similarity index 100% rename from build/buildcmd/cmd_build.go rename to cmd/build/cmd_build.go diff --git a/build/buildcmd/cmd_commands.go b/cmd/build/cmd_commands.go similarity index 100% rename from build/buildcmd/cmd_commands.go rename to cmd/build/cmd_commands.go diff --git a/build/buildcmd/cmd_project.go b/cmd/build/cmd_project.go similarity index 97% rename from build/buildcmd/cmd_project.go rename to cmd/build/cmd_project.go index 057ddc2..9fb547e 100644 --- a/build/buildcmd/cmd_project.go +++ b/cmd/build/cmd_project.go @@ -14,9 +14,9 @@ import ( "runtime" "strings" - "forge.lthn.ai/core/go-build/build" - "forge.lthn.ai/core/go-build/build/builders" - "forge.lthn.ai/core/go-build/build/signing" + "forge.lthn.ai/core/go-build/pkg/build" + "forge.lthn.ai/core/go-build/pkg/build/builders" + "forge.lthn.ai/core/go-build/pkg/build/signing" "forge.lthn.ai/core/go-i18n" "forge.lthn.ai/core/go-io" ) @@ -42,6 +42,9 @@ func runProjectBuild(ctx context.Context, buildType string, ciMode bool, targets var projectType build.ProjectType if buildType != "" { projectType = build.ProjectType(buildType) + } else if buildCfg.Build.Type != "" { + // Use type from .core/build.yaml + projectType = build.ProjectType(buildCfg.Build.Type) } else { projectType, err = build.PrimaryType(fs, projectDir) if err != nil { @@ -117,6 +120,7 @@ func runProjectBuild(ctx context.Context, buildType string, ciMode bool, targets Name: binaryName, Version: buildCfg.Project.Name, // Could be enhanced with git describe LDFlags: buildCfg.Build.LDFlags, + CGO: buildCfg.Build.CGO, // Docker/LinuxKit specific Dockerfile: configPath, // Reuse for Dockerfile path LinuxKitConfig: configPath, diff --git a/build/buildcmd/cmd_pwa.go b/cmd/build/cmd_pwa.go similarity index 100% rename from build/buildcmd/cmd_pwa.go rename to cmd/build/cmd_pwa.go diff --git a/build/buildcmd/cmd_release.go b/cmd/build/cmd_release.go similarity index 98% rename from build/buildcmd/cmd_release.go rename to cmd/build/cmd_release.go index b4e2935..6293e19 100644 --- a/build/buildcmd/cmd_release.go +++ b/cmd/build/cmd_release.go @@ -9,7 +9,7 @@ import ( "forge.lthn.ai/core/cli/pkg/cli" "forge.lthn.ai/core/go-log" "forge.lthn.ai/core/go-i18n" - "forge.lthn.ai/core/go-build/release" + "forge.lthn.ai/core/go-build/pkg/release" ) // Flag variables for release command diff --git a/build/buildcmd/cmd_sdk.go b/cmd/build/cmd_sdk.go similarity index 98% rename from build/buildcmd/cmd_sdk.go rename to cmd/build/cmd_sdk.go index 45b7763..209bdfb 100644 --- a/build/buildcmd/cmd_sdk.go +++ b/cmd/build/cmd_sdk.go @@ -11,7 +11,7 @@ import ( "os" "strings" - "forge.lthn.ai/core/go-build/sdk" + "forge.lthn.ai/core/go-build/pkg/sdk" "forge.lthn.ai/core/go-i18n" ) diff --git a/build/buildcmd/tmpl/gui/go.mod.tmpl b/cmd/build/tmpl/gui/go.mod.tmpl similarity index 100% rename from build/buildcmd/tmpl/gui/go.mod.tmpl rename to cmd/build/tmpl/gui/go.mod.tmpl diff --git a/build/buildcmd/tmpl/gui/html/.gitkeep b/cmd/build/tmpl/gui/html/.gitkeep similarity index 100% rename from build/buildcmd/tmpl/gui/html/.gitkeep rename to cmd/build/tmpl/gui/html/.gitkeep diff --git a/build/buildcmd/tmpl/gui/html/.placeholder b/cmd/build/tmpl/gui/html/.placeholder similarity index 100% rename from build/buildcmd/tmpl/gui/html/.placeholder rename to cmd/build/tmpl/gui/html/.placeholder diff --git a/build/buildcmd/tmpl/gui/main.go.tmpl b/cmd/build/tmpl/gui/main.go.tmpl similarity index 100% rename from build/buildcmd/tmpl/gui/main.go.tmpl rename to cmd/build/tmpl/gui/main.go.tmpl diff --git a/cmd/ci/ci.go b/cmd/ci/ci.go index 0a34a80..3b4da90 100644 --- a/cmd/ci/ci.go +++ b/cmd/ci/ci.go @@ -9,7 +9,7 @@ import ( "forge.lthn.ai/core/cli/pkg/cli" "forge.lthn.ai/core/go-i18n" - "forge.lthn.ai/core/go-build/release" + "forge.lthn.ai/core/go-build/pkg/release" ) // Style aliases from shared diff --git a/cmd/sdk/cmd.go b/cmd/sdk/cmd.go index 40f020a..70ae4f1 100644 --- a/cmd/sdk/cmd.go +++ b/cmd/sdk/cmd.go @@ -12,7 +12,7 @@ import ( "fmt" "os" - "forge.lthn.ai/core/go-build/sdk" + "forge.lthn.ai/core/go-build/pkg/sdk" "forge.lthn.ai/core/cli/pkg/cli" "forge.lthn.ai/core/go-i18n" ) diff --git a/build/archive.go b/pkg/build/archive.go similarity index 100% rename from build/archive.go rename to pkg/build/archive.go diff --git a/build/archive_test.go b/pkg/build/archive_test.go similarity index 100% rename from build/archive_test.go rename to pkg/build/archive_test.go diff --git a/build/build.go b/pkg/build/build.go similarity index 97% rename from build/build.go rename to pkg/build/build.go index 96ed3c6..d487a66 100644 --- a/build/build.go +++ b/pkg/build/build.go @@ -65,6 +65,8 @@ type Config struct { Version string // LDFlags are additional linker flags. LDFlags []string + // CGO enables CGO for the build (required for Wails, FrankenPHP, etc). + CGO bool // Docker-specific config Dockerfile string // Path to Dockerfile (default: Dockerfile) diff --git a/build/builders/cpp.go b/pkg/build/builders/cpp.go similarity index 99% rename from build/builders/cpp.go rename to pkg/build/builders/cpp.go index 14995c9..1dd809b 100644 --- a/build/builders/cpp.go +++ b/pkg/build/builders/cpp.go @@ -11,7 +11,7 @@ import ( "runtime" "strings" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/build/builders/cpp_test.go b/pkg/build/builders/cpp_test.go similarity index 99% rename from build/builders/cpp_test.go rename to pkg/build/builders/cpp_test.go index 69379ea..cddcd89 100644 --- a/build/builders/cpp_test.go +++ b/pkg/build/builders/cpp_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/build/builders/docker.go b/pkg/build/builders/docker.go similarity index 99% rename from build/builders/docker.go rename to pkg/build/builders/docker.go index 0a83ceb..22bd0dd 100644 --- a/build/builders/docker.go +++ b/pkg/build/builders/docker.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/build/builders/docker_test.go b/pkg/build/builders/docker_test.go similarity index 98% rename from build/builders/docker_test.go rename to pkg/build/builders/docker_test.go index 5f00418..1471de3 100644 --- a/build/builders/docker_test.go +++ b/pkg/build/builders/docker_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/build/builders/go.go b/pkg/build/builders/go.go similarity index 96% rename from build/builders/go.go rename to pkg/build/builders/go.go index 768eb8d..87df5bb 100644 --- a/build/builders/go.go +++ b/pkg/build/builders/go.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) @@ -110,7 +110,11 @@ func (b *GoBuilder) buildTarget(ctx context.Context, cfg *build.Config, target b env := os.Environ() env = append(env, fmt.Sprintf("GOOS=%s", target.OS)) env = append(env, fmt.Sprintf("GOARCH=%s", target.Arch)) - env = append(env, "CGO_ENABLED=0") // CGO disabled by default for cross-compilation + if cfg.CGO { + env = append(env, "CGO_ENABLED=1") + } else { + env = append(env, "CGO_ENABLED=0") + } cmd.Env = env // Capture output for error messages diff --git a/build/builders/go_test.go b/pkg/build/builders/go_test.go similarity index 99% rename from build/builders/go_test.go rename to pkg/build/builders/go_test.go index 504adc9..44e1572 100644 --- a/build/builders/go_test.go +++ b/pkg/build/builders/go_test.go @@ -7,7 +7,7 @@ import ( "runtime" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/build/builders/linuxkit.go b/pkg/build/builders/linuxkit.go similarity index 99% rename from build/builders/linuxkit.go rename to pkg/build/builders/linuxkit.go index 29a3796..319bd2f 100644 --- a/build/builders/linuxkit.go +++ b/pkg/build/builders/linuxkit.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/build/builders/linuxkit_test.go b/pkg/build/builders/linuxkit_test.go similarity index 99% rename from build/builders/linuxkit_test.go rename to pkg/build/builders/linuxkit_test.go index c41bdaa..1528406 100644 --- a/build/builders/linuxkit_test.go +++ b/pkg/build/builders/linuxkit_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/build/builders/taskfile.go b/pkg/build/builders/taskfile.go similarity index 99% rename from build/builders/taskfile.go rename to pkg/build/builders/taskfile.go index 22ac8d6..bbbb14d 100644 --- a/build/builders/taskfile.go +++ b/pkg/build/builders/taskfile.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/build/builders/taskfile_test.go b/pkg/build/builders/taskfile_test.go similarity index 99% rename from build/builders/taskfile_test.go rename to pkg/build/builders/taskfile_test.go index 7333862..8c6a15a 100644 --- a/build/builders/taskfile_test.go +++ b/pkg/build/builders/taskfile_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/build/builders/wails.go b/pkg/build/builders/wails.go similarity index 96% rename from build/builders/wails.go rename to pkg/build/builders/wails.go index b290861..59685cd 100644 --- a/build/builders/wails.go +++ b/pkg/build/builders/wails.go @@ -9,7 +9,7 @@ import ( "path/filepath" "strings" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) @@ -49,12 +49,15 @@ func (b *WailsBuilder) Build(ctx context.Context, cfg *build.Config, targets []b isV3 := b.isWailsV3(cfg.FS, cfg.ProjectDir) if isV3 { - // Wails v3 strategy: Delegate to Taskfile + // Wails v3 strategy: Delegate to Taskfile if present, otherwise use Go builder with CGO taskBuilder := NewTaskfileBuilder() if detected, _ := taskBuilder.Detect(cfg.FS, cfg.ProjectDir); detected { return taskBuilder.Build(ctx, cfg, targets) } - return nil, errors.New("wails v3 projects require a Taskfile for building") + // Fall back to Go builder — Wails v3 is just a Go project that needs CGO + cfg.CGO = true + goBuilder := NewGoBuilder() + return goBuilder.Build(ctx, cfg, targets) } // Wails v2 strategy: Use 'wails build' diff --git a/build/builders/wails_test.go b/pkg/build/builders/wails_test.go similarity index 99% rename from build/builders/wails_test.go rename to pkg/build/builders/wails_test.go index 78a04bd..24f5104 100644 --- a/build/builders/wails_test.go +++ b/pkg/build/builders/wails_test.go @@ -8,7 +8,7 @@ import ( "runtime" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/build/checksum.go b/pkg/build/checksum.go similarity index 100% rename from build/checksum.go rename to pkg/build/checksum.go diff --git a/build/checksum_test.go b/pkg/build/checksum_test.go similarity index 100% rename from build/checksum_test.go rename to pkg/build/checksum_test.go diff --git a/build/config.go b/pkg/build/config.go similarity index 96% rename from build/config.go rename to pkg/build/config.go index 114e838..6cffcf7 100644 --- a/build/config.go +++ b/pkg/build/config.go @@ -8,7 +8,7 @@ import ( "os" "path/filepath" - "forge.lthn.ai/core/go-build/build/signing" + "forge.lthn.ai/core/go-build/pkg/build/signing" "forge.lthn.ai/core/go-io" "gopkg.in/yaml.v3" ) @@ -48,6 +48,8 @@ type Project struct { // Build holds build-time settings. type Build struct { + // Type overrides project type auto-detection (e.g., "go", "wails", "docker"). + Type string `yaml:"type"` // CGO enables CGO for the build. CGO bool `yaml:"cgo"` // Flags are additional build flags (e.g., ["-trimpath"]). diff --git a/build/config_test.go b/pkg/build/config_test.go similarity index 100% rename from build/config_test.go rename to pkg/build/config_test.go diff --git a/build/discovery.go b/pkg/build/discovery.go similarity index 100% rename from build/discovery.go rename to pkg/build/discovery.go diff --git a/build/discovery_test.go b/pkg/build/discovery_test.go similarity index 100% rename from build/discovery_test.go rename to pkg/build/discovery_test.go diff --git a/build/signing/codesign.go b/pkg/build/signing/codesign.go similarity index 100% rename from build/signing/codesign.go rename to pkg/build/signing/codesign.go diff --git a/build/signing/codesign_test.go b/pkg/build/signing/codesign_test.go similarity index 100% rename from build/signing/codesign_test.go rename to pkg/build/signing/codesign_test.go diff --git a/build/signing/gpg.go b/pkg/build/signing/gpg.go similarity index 100% rename from build/signing/gpg.go rename to pkg/build/signing/gpg.go diff --git a/build/signing/gpg_test.go b/pkg/build/signing/gpg_test.go similarity index 100% rename from build/signing/gpg_test.go rename to pkg/build/signing/gpg_test.go diff --git a/build/signing/sign.go b/pkg/build/signing/sign.go similarity index 100% rename from build/signing/sign.go rename to pkg/build/signing/sign.go diff --git a/build/signing/signer.go b/pkg/build/signing/signer.go similarity index 100% rename from build/signing/signer.go rename to pkg/build/signing/signer.go diff --git a/build/signing/signing_test.go b/pkg/build/signing/signing_test.go similarity index 100% rename from build/signing/signing_test.go rename to pkg/build/signing/signing_test.go diff --git a/build/signing/signtool.go b/pkg/build/signing/signtool.go similarity index 100% rename from build/signing/signtool.go rename to pkg/build/signing/signtool.go diff --git a/build/testdata/config-project/.core/build.yaml b/pkg/build/testdata/config-project/.core/build.yaml similarity index 100% rename from build/testdata/config-project/.core/build.yaml rename to pkg/build/testdata/config-project/.core/build.yaml diff --git a/build/testdata/cpp-project/CMakeLists.txt b/pkg/build/testdata/cpp-project/CMakeLists.txt similarity index 100% rename from build/testdata/cpp-project/CMakeLists.txt rename to pkg/build/testdata/cpp-project/CMakeLists.txt diff --git a/build/testdata/empty-project/.gitkeep b/pkg/build/testdata/empty-project/.gitkeep similarity index 100% rename from build/testdata/empty-project/.gitkeep rename to pkg/build/testdata/empty-project/.gitkeep diff --git a/build/testdata/go-project/go.mod b/pkg/build/testdata/go-project/go.mod similarity index 100% rename from build/testdata/go-project/go.mod rename to pkg/build/testdata/go-project/go.mod diff --git a/build/testdata/multi-project/go.mod b/pkg/build/testdata/multi-project/go.mod similarity index 100% rename from build/testdata/multi-project/go.mod rename to pkg/build/testdata/multi-project/go.mod diff --git a/build/testdata/multi-project/package.json b/pkg/build/testdata/multi-project/package.json similarity index 100% rename from build/testdata/multi-project/package.json rename to pkg/build/testdata/multi-project/package.json diff --git a/build/testdata/node-project/package.json b/pkg/build/testdata/node-project/package.json similarity index 100% rename from build/testdata/node-project/package.json rename to pkg/build/testdata/node-project/package.json diff --git a/build/testdata/php-project/composer.json b/pkg/build/testdata/php-project/composer.json similarity index 100% rename from build/testdata/php-project/composer.json rename to pkg/build/testdata/php-project/composer.json diff --git a/build/testdata/wails-project/go.mod b/pkg/build/testdata/wails-project/go.mod similarity index 100% rename from build/testdata/wails-project/go.mod rename to pkg/build/testdata/wails-project/go.mod diff --git a/build/testdata/wails-project/wails.json b/pkg/build/testdata/wails-project/wails.json similarity index 100% rename from build/testdata/wails-project/wails.json rename to pkg/build/testdata/wails-project/wails.json diff --git a/release/changelog.go b/pkg/release/changelog.go similarity index 100% rename from release/changelog.go rename to pkg/release/changelog.go diff --git a/release/changelog_test.go b/pkg/release/changelog_test.go similarity index 100% rename from release/changelog_test.go rename to pkg/release/changelog_test.go diff --git a/release/config.go b/pkg/release/config.go similarity index 100% rename from release/config.go rename to pkg/release/config.go diff --git a/release/config_test.go b/pkg/release/config_test.go similarity index 100% rename from release/config_test.go rename to pkg/release/config_test.go diff --git a/release/publishers/aur.go b/pkg/release/publishers/aur.go similarity index 99% rename from release/publishers/aur.go rename to pkg/release/publishers/aur.go index 8272d27..fa4608e 100644 --- a/release/publishers/aur.go +++ b/pkg/release/publishers/aur.go @@ -13,7 +13,7 @@ import ( "strings" "text/template" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/release/publishers/aur_test.go b/pkg/release/publishers/aur_test.go similarity index 100% rename from release/publishers/aur_test.go rename to pkg/release/publishers/aur_test.go diff --git a/release/publishers/chocolatey.go b/pkg/release/publishers/chocolatey.go similarity index 99% rename from release/publishers/chocolatey.go rename to pkg/release/publishers/chocolatey.go index 4fc8b2f..4e88cd4 100644 --- a/release/publishers/chocolatey.go +++ b/pkg/release/publishers/chocolatey.go @@ -13,7 +13,7 @@ import ( "strings" "text/template" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-i18n" "forge.lthn.ai/core/go-io" ) diff --git a/release/publishers/chocolatey_test.go b/pkg/release/publishers/chocolatey_test.go similarity index 100% rename from release/publishers/chocolatey_test.go rename to pkg/release/publishers/chocolatey_test.go diff --git a/release/publishers/docker.go b/pkg/release/publishers/docker.go similarity index 100% rename from release/publishers/docker.go rename to pkg/release/publishers/docker.go diff --git a/release/publishers/docker_test.go b/pkg/release/publishers/docker_test.go similarity index 100% rename from release/publishers/docker_test.go rename to pkg/release/publishers/docker_test.go diff --git a/release/publishers/github.go b/pkg/release/publishers/github.go similarity index 100% rename from release/publishers/github.go rename to pkg/release/publishers/github.go diff --git a/release/publishers/github_test.go b/pkg/release/publishers/github_test.go similarity index 99% rename from release/publishers/github_test.go rename to pkg/release/publishers/github_test.go index c6ed67b..1fdfabd 100644 --- a/release/publishers/github_test.go +++ b/pkg/release/publishers/github_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/release/publishers/homebrew.go b/pkg/release/publishers/homebrew.go similarity index 99% rename from release/publishers/homebrew.go rename to pkg/release/publishers/homebrew.go index 82aa039..34c6ab1 100644 --- a/release/publishers/homebrew.go +++ b/pkg/release/publishers/homebrew.go @@ -13,7 +13,7 @@ import ( "strings" "text/template" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/release/publishers/homebrew_test.go b/pkg/release/publishers/homebrew_test.go similarity index 99% rename from release/publishers/homebrew_test.go rename to pkg/release/publishers/homebrew_test.go index cdf6a5c..db8cd46 100644 --- a/release/publishers/homebrew_test.go +++ b/pkg/release/publishers/homebrew_test.go @@ -6,7 +6,7 @@ import ( "os" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/release/publishers/integration_test.go b/pkg/release/publishers/integration_test.go similarity index 99% rename from release/publishers/integration_test.go rename to pkg/release/publishers/integration_test.go index 3f68b96..a511307 100644 --- a/release/publishers/integration_test.go +++ b/pkg/release/publishers/integration_test.go @@ -8,7 +8,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/release/publishers/linuxkit.go b/pkg/release/publishers/linuxkit.go similarity index 100% rename from release/publishers/linuxkit.go rename to pkg/release/publishers/linuxkit.go diff --git a/release/publishers/linuxkit_test.go b/pkg/release/publishers/linuxkit_test.go similarity index 100% rename from release/publishers/linuxkit_test.go rename to pkg/release/publishers/linuxkit_test.go diff --git a/release/publishers/npm.go b/pkg/release/publishers/npm.go similarity index 100% rename from release/publishers/npm.go rename to pkg/release/publishers/npm.go diff --git a/release/publishers/npm_test.go b/pkg/release/publishers/npm_test.go similarity index 100% rename from release/publishers/npm_test.go rename to pkg/release/publishers/npm_test.go diff --git a/release/publishers/publisher.go b/pkg/release/publishers/publisher.go similarity index 98% rename from release/publishers/publisher.go rename to pkg/release/publishers/publisher.go index 8baa0c2..17b4592 100644 --- a/release/publishers/publisher.go +++ b/pkg/release/publishers/publisher.go @@ -4,7 +4,7 @@ package publishers import ( "context" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/release/publishers/scoop.go b/pkg/release/publishers/scoop.go similarity index 99% rename from release/publishers/scoop.go rename to pkg/release/publishers/scoop.go index fed25d0..283f1af 100644 --- a/release/publishers/scoop.go +++ b/pkg/release/publishers/scoop.go @@ -13,7 +13,7 @@ import ( "strings" "text/template" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" ) diff --git a/release/publishers/scoop_test.go b/pkg/release/publishers/scoop_test.go similarity index 100% rename from release/publishers/scoop_test.go rename to pkg/release/publishers/scoop_test.go diff --git a/release/publishers/templates/aur/.SRCINFO.tmpl b/pkg/release/publishers/templates/aur/.SRCINFO.tmpl similarity index 100% rename from release/publishers/templates/aur/.SRCINFO.tmpl rename to pkg/release/publishers/templates/aur/.SRCINFO.tmpl diff --git a/release/publishers/templates/aur/PKGBUILD.tmpl b/pkg/release/publishers/templates/aur/PKGBUILD.tmpl similarity index 100% rename from release/publishers/templates/aur/PKGBUILD.tmpl rename to pkg/release/publishers/templates/aur/PKGBUILD.tmpl diff --git a/release/publishers/templates/chocolatey/package.nuspec.tmpl b/pkg/release/publishers/templates/chocolatey/package.nuspec.tmpl similarity index 100% rename from release/publishers/templates/chocolatey/package.nuspec.tmpl rename to pkg/release/publishers/templates/chocolatey/package.nuspec.tmpl diff --git a/release/publishers/templates/chocolatey/tools/chocolateyinstall.ps1.tmpl b/pkg/release/publishers/templates/chocolatey/tools/chocolateyinstall.ps1.tmpl similarity index 100% rename from release/publishers/templates/chocolatey/tools/chocolateyinstall.ps1.tmpl rename to pkg/release/publishers/templates/chocolatey/tools/chocolateyinstall.ps1.tmpl diff --git a/release/publishers/templates/homebrew/formula.rb.tmpl b/pkg/release/publishers/templates/homebrew/formula.rb.tmpl similarity index 100% rename from release/publishers/templates/homebrew/formula.rb.tmpl rename to pkg/release/publishers/templates/homebrew/formula.rb.tmpl diff --git a/release/publishers/templates/npm/install.js.tmpl b/pkg/release/publishers/templates/npm/install.js.tmpl similarity index 100% rename from release/publishers/templates/npm/install.js.tmpl rename to pkg/release/publishers/templates/npm/install.js.tmpl diff --git a/release/publishers/templates/npm/package.json.tmpl b/pkg/release/publishers/templates/npm/package.json.tmpl similarity index 100% rename from release/publishers/templates/npm/package.json.tmpl rename to pkg/release/publishers/templates/npm/package.json.tmpl diff --git a/release/publishers/templates/npm/run.js.tmpl b/pkg/release/publishers/templates/npm/run.js.tmpl similarity index 100% rename from release/publishers/templates/npm/run.js.tmpl rename to pkg/release/publishers/templates/npm/run.js.tmpl diff --git a/release/publishers/templates/scoop/manifest.json.tmpl b/pkg/release/publishers/templates/scoop/manifest.json.tmpl similarity index 100% rename from release/publishers/templates/scoop/manifest.json.tmpl rename to pkg/release/publishers/templates/scoop/manifest.json.tmpl diff --git a/release/release.go b/pkg/release/release.go similarity index 98% rename from release/release.go rename to pkg/release/release.go index 4802511..c1a8905 100644 --- a/release/release.go +++ b/pkg/release/release.go @@ -10,9 +10,9 @@ import ( "path/filepath" "strings" - "forge.lthn.ai/core/go-build/build" - "forge.lthn.ai/core/go-build/build/builders" - "forge.lthn.ai/core/go-build/release/publishers" + "forge.lthn.ai/core/go-build/pkg/build" + "forge.lthn.ai/core/go-build/pkg/build/builders" + "forge.lthn.ai/core/go-build/pkg/release/publishers" "forge.lthn.ai/core/go-io" ) diff --git a/release/release_test.go b/pkg/release/release_test.go similarity index 99% rename from release/release_test.go rename to pkg/release/release_test.go index 78dcbe1..d29867e 100644 --- a/release/release_test.go +++ b/pkg/release/release_test.go @@ -7,7 +7,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/build" + "forge.lthn.ai/core/go-build/pkg/build" "forge.lthn.ai/core/go-io" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/release/sdk.go b/pkg/release/sdk.go similarity index 98% rename from release/sdk.go rename to pkg/release/sdk.go index a02af8c..34be074 100644 --- a/release/sdk.go +++ b/pkg/release/sdk.go @@ -6,7 +6,7 @@ import ( "errors" "fmt" - "forge.lthn.ai/core/go-build/sdk" + "forge.lthn.ai/core/go-build/pkg/sdk" ) // SDKRelease holds the result of an SDK release. diff --git a/release/sdk_test.go b/pkg/release/sdk_test.go similarity index 100% rename from release/sdk_test.go rename to pkg/release/sdk_test.go diff --git a/release/testdata/.core/release.yaml b/pkg/release/testdata/.core/release.yaml similarity index 100% rename from release/testdata/.core/release.yaml rename to pkg/release/testdata/.core/release.yaml diff --git a/release/version.go b/pkg/release/version.go similarity index 100% rename from release/version.go rename to pkg/release/version.go diff --git a/release/version_test.go b/pkg/release/version_test.go similarity index 100% rename from release/version_test.go rename to pkg/release/version_test.go diff --git a/sdk/breaking_test.go b/pkg/sdk/breaking_test.go similarity index 100% rename from sdk/breaking_test.go rename to pkg/sdk/breaking_test.go diff --git a/sdk/detect.go b/pkg/sdk/detect.go similarity index 100% rename from sdk/detect.go rename to pkg/sdk/detect.go diff --git a/sdk/detect_test.go b/pkg/sdk/detect_test.go similarity index 100% rename from sdk/detect_test.go rename to pkg/sdk/detect_test.go diff --git a/sdk/diff.go b/pkg/sdk/diff.go similarity index 100% rename from sdk/diff.go rename to pkg/sdk/diff.go diff --git a/sdk/diff_test.go b/pkg/sdk/diff_test.go similarity index 100% rename from sdk/diff_test.go rename to pkg/sdk/diff_test.go diff --git a/sdk/generation_test.go b/pkg/sdk/generation_test.go similarity index 99% rename from sdk/generation_test.go rename to pkg/sdk/generation_test.go index ab73370..bb06503 100644 --- a/sdk/generation_test.go +++ b/pkg/sdk/generation_test.go @@ -6,7 +6,7 @@ import ( "path/filepath" "testing" - "forge.lthn.ai/core/go-build/sdk/generators" + "forge.lthn.ai/core/go-build/pkg/sdk/generators" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/sdk/generators/generator.go b/pkg/sdk/generators/generator.go similarity index 100% rename from sdk/generators/generator.go rename to pkg/sdk/generators/generator.go diff --git a/sdk/generators/go.go b/pkg/sdk/generators/go.go similarity index 100% rename from sdk/generators/go.go rename to pkg/sdk/generators/go.go diff --git a/sdk/generators/go_test.go b/pkg/sdk/generators/go_test.go similarity index 100% rename from sdk/generators/go_test.go rename to pkg/sdk/generators/go_test.go diff --git a/sdk/generators/php.go b/pkg/sdk/generators/php.go similarity index 100% rename from sdk/generators/php.go rename to pkg/sdk/generators/php.go diff --git a/sdk/generators/php_test.go b/pkg/sdk/generators/php_test.go similarity index 100% rename from sdk/generators/php_test.go rename to pkg/sdk/generators/php_test.go diff --git a/sdk/generators/python.go b/pkg/sdk/generators/python.go similarity index 100% rename from sdk/generators/python.go rename to pkg/sdk/generators/python.go diff --git a/sdk/generators/python_test.go b/pkg/sdk/generators/python_test.go similarity index 100% rename from sdk/generators/python_test.go rename to pkg/sdk/generators/python_test.go diff --git a/sdk/generators/typescript.go b/pkg/sdk/generators/typescript.go similarity index 100% rename from sdk/generators/typescript.go rename to pkg/sdk/generators/typescript.go diff --git a/sdk/generators/typescript_test.go b/pkg/sdk/generators/typescript_test.go similarity index 100% rename from sdk/generators/typescript_test.go rename to pkg/sdk/generators/typescript_test.go diff --git a/sdk/sdk.go b/pkg/sdk/sdk.go similarity index 98% rename from sdk/sdk.go rename to pkg/sdk/sdk.go index ce7bff5..f00bfef 100644 --- a/sdk/sdk.go +++ b/pkg/sdk/sdk.go @@ -6,7 +6,7 @@ import ( "fmt" "path/filepath" - "forge.lthn.ai/core/go-build/sdk/generators" + "forge.lthn.ai/core/go-build/pkg/sdk/generators" ) // Config holds SDK generation configuration from .core/release.yaml. diff --git a/sdk/sdk_test.go b/pkg/sdk/sdk_test.go similarity index 100% rename from sdk/sdk_test.go rename to pkg/sdk/sdk_test.go