chore: migrate to dappco.re vanity import path
Change module path from forge.lthn.ai/core/go-scm to dappco.re/go/core/scm. Update all Go source imports for migrated packages: - go-log -> dappco.re/go/core/log - go-io -> dappco.re/go/core/io - go-i18n -> dappco.re/go/core/i18n - go-ws -> dappco.re/go/core/ws - api -> dappco.re/go/core/api Non-migrated packages (cli, config) left on forge.lthn.ai paths. Replace directives use local paths (../go, ../go-io, etc.) until the dappco.re vanity URL server resolves these modules. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ea1827284a
commit
2dcb86738a
127 changed files with 232 additions and 229 deletions
|
|
@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||
|
||||
## What This Is
|
||||
|
||||
SCM integration and data collection library for the Lethean ecosystem (`forge.lthn.ai/core/go-scm`). Provides Forgejo/Gitea API clients, an AgentCI pipeline for automated PR lifecycle, pluggable data collectors, and workspace management (repos registry, manifests with ed25519 signing, marketplace, plugin system).
|
||||
SCM integration and data collection library for the Lethean ecosystem (`dappco.re/go/core/scm`). Provides Forgejo/Gitea API clients, an AgentCI pipeline for automated PR lifecycle, pluggable data collectors, and workspace management (repos registry, manifests with ed25519 signing, marketplace, plugin system).
|
||||
|
||||
Virgil orchestrates tasks via Forgejo issues. Pick up tasks in issue order, mark complete, commit and push.
|
||||
|
||||
|
|
@ -65,14 +65,14 @@ Each subsystem has different test infrastructure — see `docs/development.md` f
|
|||
|
||||
- **UK English**: colour, organisation, centre, licence (noun), authorise, behaviour
|
||||
- **Tests**: testify assert/require, table-driven preferred, `_Good`/`_Bad`/`_Ugly` suffix naming
|
||||
- **Imports**: stdlib → `forge.lthn.ai/...` → third-party, each group separated by blank line
|
||||
- **Errors**: `coreerr.E("package.Func", "context", err)` via `coreerr "forge.lthn.ai/core/go-log"` — no bare `fmt.Errorf` or `errors.New`
|
||||
- **Imports**: stdlib → `dappco.re/...` → third-party, each group separated by blank line
|
||||
- **Errors**: `coreerr.E("package.Func", "context", err)` via `coreerr "dappco.re/go/core/log"` — no bare `fmt.Errorf` or `errors.New`
|
||||
- **Conventional commits**: `feat(forge):`, `fix(gitea):`, `test(collect):`, `docs(agentci):`, `refactor(collect):`, `chore:`
|
||||
- **Co-Author trailer**: `Co-Authored-By: Virgil <virgil@lethean.io>`
|
||||
- **Licence**: EUPL-1.2
|
||||
|
||||
## Forge
|
||||
|
||||
- **Repo**: `forge.lthn.ai/core/go-scm`
|
||||
- **Repo**: `dappco.re/go/core/scm`
|
||||
- **Push via SSH**: `git push origin main` (remote: `ssh://git@forge.lthn.ai:2223/core/go-scm.git`)
|
||||
- **CI**: Forgejo Actions — runs tests with race detector and coverage on push to main/dev and PRs to main
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -1,4 +1,4 @@
|
|||
[](https://pkg.go.dev/forge.lthn.ai/core/go-scm)
|
||||
[](https://pkg.go.dev/dappco.re/go/core/scm)
|
||||
[](LICENSE.md)
|
||||
[](go.mod)
|
||||
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
SCM integration, AgentCI dispatch automation, and data collection for the Lethean ecosystem. Provides a Forgejo API client and a Gitea client for the public mirror, multi-repo git operations with parallel status checks, the Clotho Protocol orchestrator for dual-run agent verification, a PR automation pipeline (poll → dispatch → journal) driven by epic issue task lists, and pluggable data collectors for BitcoinTalk, GitHub, market data, and research papers.
|
||||
|
||||
**Module**: `forge.lthn.ai/core/go-scm`
|
||||
**Module**: `dappco.re/go/core/scm`
|
||||
**Licence**: EUPL-1.2
|
||||
**Language**: Go 1.25
|
||||
|
||||
|
|
@ -14,9 +14,9 @@ SCM integration, AgentCI dispatch automation, and data collection for the Lethea
|
|||
|
||||
```go
|
||||
import (
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/git"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/git"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// Forgejo client
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"context"
|
||||
"strings"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// RunMode determines the execution strategy for a dispatched task.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/config"
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// AgentConfig represents a single agent machine in the config file.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/config"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"regexp"
|
||||
"strings"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
var safeNameRegex = regexp.MustCompile(`^[a-zA-Z0-9\-\_\.]+$`)
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
"dappco.re/go/core/io"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"strings"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// BitcoinTalk command flags
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"time"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
collectpkg "forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
collectpkg "dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// addDispatchCommand adds the 'dispatch' subcommand to the collect parent.
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// Excavate command flags
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"strings"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// GitHub command flags
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import (
|
|||
"context"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// Market command flags
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import (
|
|||
"context"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// Papers command flags
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import (
|
|||
"context"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/collect"
|
||||
"forge.lthn.ai/core/go-i18n"
|
||||
"dappco.re/go/core/scm/collect"
|
||||
"dappco.re/go/core/i18n"
|
||||
)
|
||||
|
||||
// addProcessCommand adds the 'process' subcommand to the collect parent.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Auth command flags.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Config command flags.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Issues command flags.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Labels command flags.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Migrate command flags.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// addOrgsCommand adds the 'orgs' subcommand for listing organisations.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// PRs command flags.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Repos command flags.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// addStatusCommand adds the 'status' subcommand for instance info.
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import (
|
|||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
fg "forge.lthn.ai/core/go-scm/forge"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
fg "dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// Sync command flags.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
gt "forge.lthn.ai/core/go-scm/gitea"
|
||||
gt "dappco.re/go/core/scm/gitea"
|
||||
)
|
||||
|
||||
// Config command flags.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
"code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
gt "forge.lthn.ai/core/go-scm/gitea"
|
||||
gt "dappco.re/go/core/scm/gitea"
|
||||
)
|
||||
|
||||
// Issues command flags.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"strings"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
gt "forge.lthn.ai/core/go-scm/gitea"
|
||||
gt "dappco.re/go/core/scm/gitea"
|
||||
)
|
||||
|
||||
// Mirror command flags.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
sdk "code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
gt "forge.lthn.ai/core/go-scm/gitea"
|
||||
gt "dappco.re/go/core/scm/gitea"
|
||||
)
|
||||
|
||||
// PRs command flags.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
gt "forge.lthn.ai/core/go-scm/gitea"
|
||||
gt "dappco.re/go/core/scm/gitea"
|
||||
)
|
||||
|
||||
// Repos command flags.
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import (
|
|||
"code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
gt "forge.lthn.ai/core/go-scm/gitea"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
gt "dappco.re/go/core/scm/gitea"
|
||||
)
|
||||
|
||||
// Sync command flags.
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import (
|
|||
"strings"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"forge.lthn.ai/core/go-scm/manifest"
|
||||
"dappco.re/go/core/io"
|
||||
"dappco.re/go/core/scm/manifest"
|
||||
)
|
||||
|
||||
func addCompileCommand(parent *cli.Command) {
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import (
|
|||
"fmt"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"forge.lthn.ai/core/go-scm/manifest"
|
||||
"dappco.re/go/core/io"
|
||||
"dappco.re/go/core/scm/manifest"
|
||||
)
|
||||
|
||||
func addExportCommand(parent *cli.Command) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"path/filepath"
|
||||
|
||||
"forge.lthn.ai/core/cli/pkg/cli"
|
||||
"forge.lthn.ai/core/go-scm/marketplace"
|
||||
"dappco.re/go/core/scm/marketplace"
|
||||
)
|
||||
|
||||
func addIndexCommand(parent *cli.Command) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"strings"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"context"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"context"
|
||||
"path/filepath"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
)
|
||||
|
||||
// Collector is the interface all collection sources implement.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package collect
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// Excavator runs multiple collectors as a coordinated operation.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ghIssue represents a GitHub issue or pull request as returned by the gh CLI.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// coinGeckoBaseURL is the base URL for the CoinGecko API.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
"strings"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/net/html"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"context"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import (
|
|||
"slices"
|
||||
"strings"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"context"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"context"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
core "dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// RateLimiter tracks per-source rate limiting to avoid overwhelming APIs.
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
core "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
core "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/io"
|
||||
)
|
||||
|
||||
// State tracks collection progress for incremental runs.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package collect
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ description: How to build, test, and contribute to go-scm.
|
|||
|
||||
```
|
||||
go-scm/
|
||||
+-- go.mod Module definition (forge.lthn.ai/core/go-scm)
|
||||
+-- go.mod Module definition (dappco.re/go/core/scm)
|
||||
+-- forge/ Forgejo API client + tests
|
||||
+-- gitea/ Gitea API client + tests
|
||||
+-- git/ Multi-repo git operations + tests
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ description: SCM integration, AgentCI automation, and data collection for the Le
|
|||
|
||||
`go-scm` provides source control management integration for the Lethean ecosystem. It wraps the Forgejo and Gitea APIs behind ergonomic Go clients, runs an automated PR pipeline for AI agent workflows, collects data from external sources, and manages multi-repo workspaces via a declarative registry.
|
||||
|
||||
**Module path:** `forge.lthn.ai/core/go-scm`
|
||||
**Module path:** `dappco.re/go/core/scm`
|
||||
**Go version:** 1.26
|
||||
**Licence:** EUPL-1.2
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ description: SCM integration, AgentCI automation, and data collection for the Le
|
|||
### Forgejo API Client
|
||||
|
||||
```go
|
||||
import "forge.lthn.ai/core/go-scm/forge"
|
||||
import "dappco.re/go/core/scm/forge"
|
||||
|
||||
// Create a client from config file / env / flags
|
||||
client, err := forge.NewFromConfig("", "")
|
||||
|
|
@ -35,7 +35,7 @@ for repo, err := range client.ListOrgReposIter("core") {
|
|||
### Multi-Repo Git Status
|
||||
|
||||
```go
|
||||
import "forge.lthn.ai/core/go-scm/git"
|
||||
import "dappco.re/go/core/scm/git"
|
||||
|
||||
statuses := git.Status(ctx, git.StatusOptions{
|
||||
Paths: []string{"/home/dev/core/go-scm", "/home/dev/core/go-ai"},
|
||||
|
|
@ -53,9 +53,9 @@ for _, s := range statuses {
|
|||
|
||||
```go
|
||||
import (
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner/forgejo"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner/handlers"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner/forgejo"
|
||||
"dappco.re/go/core/scm/jobrunner/handlers"
|
||||
)
|
||||
|
||||
source := forgejo.New(forgejo.Config{Repos: []string{"core/go-scm"}}, forgeClient)
|
||||
|
|
@ -74,7 +74,7 @@ poller.Run(ctx)
|
|||
### Data Collection
|
||||
|
||||
```go
|
||||
import "forge.lthn.ai/core/go-scm/collect"
|
||||
import "dappco.re/go/core/scm/collect"
|
||||
|
||||
cfg := collect.NewConfig("/tmp/collected")
|
||||
excavator := &collect.Excavator{
|
||||
|
|
@ -118,9 +118,9 @@ result, err := excavator.Run(ctx, cfg)
|
|||
| `code.gitea.io/sdk/gitea` | Gitea API SDK |
|
||||
| `forge.lthn.ai/core/cli` | CLI framework (Cobra, TUI) |
|
||||
| `forge.lthn.ai/core/config` | Layered config (`~/.core/config.yaml`) |
|
||||
| `forge.lthn.ai/core/go-io` | Filesystem abstraction (Medium, Sandbox, Store) |
|
||||
| `forge.lthn.ai/core/go-log` | Structured logging and contextual error helper |
|
||||
| `forge.lthn.ai/core/go-i18n` | Internationalisation |
|
||||
| `dappco.re/go/core/io` | Filesystem abstraction (Medium, Sandbox, Store) |
|
||||
| `dappco.re/go/core/log` | Structured logging and contextual error helper |
|
||||
| `dappco.re/go/core/i18n` | Internationalisation |
|
||||
| `github.com/stretchr/testify` | Test assertions |
|
||||
| `golang.org/x/net` | HTML parsing for collectors |
|
||||
| `gopkg.in/yaml.v3` | YAML parsing for manifests and registries |
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ import (
|
|||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
io "forge.lthn.ai/core/go-io"
|
||||
io "dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
@ -127,7 +127,7 @@ import (
|
|||
"path/filepath"
|
||||
"time"
|
||||
|
||||
io "forge.lthn.ai/core/go-io"
|
||||
io "dappco.re/go/core/io"
|
||||
)
|
||||
|
||||
// CompiledManifest is the core.json distribution format.
|
||||
|
|
@ -217,7 +217,7 @@ package marketplace
|
|||
import (
|
||||
"testing"
|
||||
|
||||
io "forge.lthn.ai/core/go-io"
|
||||
io "dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
@ -318,8 +318,8 @@ import (
|
|||
"fmt"
|
||||
"sort"
|
||||
|
||||
io "forge.lthn.ai/core/go-io"
|
||||
"forge.lthn.ai/core/go-scm/manifest"
|
||||
io "dappco.re/go/core/io"
|
||||
"dappco.re/go/core/scm/manifest"
|
||||
)
|
||||
|
||||
// IndexOptions controls how the index is built.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ package forge
|
|||
import (
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// Client wraps the Forgejo SDK client with config-based auth.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"os"
|
||||
|
||||
"forge.lthn.ai/core/config"
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ListIssuesOpts configures issue listing.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ListOrgLabels returns all labels for repos in the given organisation.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// PRMeta holds structural signals from a pull request,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package forge
|
|||
import (
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ListMyOrgs returns all organisations for the authenticated user.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// MergePullRequest merges a pull request with the given method ("squash", "rebase", "merge").
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ListOrgRepos returns all repositories for the given organisation.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package forge
|
|||
import (
|
||||
forgejo "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// CreateRepoWebhook creates a webhook on a repository.
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ package gitea
|
|||
import (
|
||||
"code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// Client wraps the Gitea SDK client with config-based auth.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"os"
|
||||
|
||||
"forge.lthn.ai/core/config"
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ListIssuesOpts configures issue listing.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// PRMeta holds structural signals from a pull request,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// ListOrgRepos returns all repositories for the given organisation.
|
||||
|
|
|
|||
31
go.mod
31
go.mod
|
|
@ -1,4 +1,4 @@
|
|||
module forge.lthn.ai/core/go-scm
|
||||
module dappco.re/go/core/scm
|
||||
|
||||
go 1.26.0
|
||||
|
||||
|
|
@ -6,13 +6,13 @@ require (
|
|||
code.gitea.io/sdk/gitea v0.23.2
|
||||
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.2.0
|
||||
dappco.re/go/core v0.4.7
|
||||
forge.lthn.ai/core/api v0.1.5
|
||||
dappco.re/go/core/api v0.1.5
|
||||
dappco.re/go/core/i18n v0.1.7
|
||||
dappco.re/go/core/io v0.1.7
|
||||
dappco.re/go/core/log v0.0.4
|
||||
dappco.re/go/core/ws v0.2.5
|
||||
forge.lthn.ai/core/cli v0.3.7
|
||||
forge.lthn.ai/core/config v0.1.8
|
||||
forge.lthn.ai/core/go-i18n v0.1.7
|
||||
forge.lthn.ai/core/go-io v0.1.7
|
||||
forge.lthn.ai/core/go-log v0.0.4
|
||||
forge.lthn.ai/core/go-ws v0.2.5
|
||||
github.com/gin-gonic/gin v1.12.0
|
||||
github.com/stretchr/testify v1.11.1
|
||||
golang.org/x/net v0.52.0
|
||||
|
|
@ -20,8 +20,11 @@ require (
|
|||
)
|
||||
|
||||
require (
|
||||
forge.lthn.ai/core/go v0.3.3 // indirect
|
||||
forge.lthn.ai/core/go-inference v0.1.6 // indirect
|
||||
forge.lthn.ai/core/go v0.3.2 // indirect
|
||||
forge.lthn.ai/core/go-i18n v0.1.7 // indirect
|
||||
forge.lthn.ai/core/go-inference v0.1.7 // indirect
|
||||
forge.lthn.ai/core/go-io v0.1.5 // indirect
|
||||
forge.lthn.ai/core/go-log v0.0.4 // indirect
|
||||
github.com/42wim/httpsig v1.2.3 // indirect
|
||||
github.com/99designs/gqlgen v0.17.88 // indirect
|
||||
github.com/KyleBanks/depth v1.2.1 // indirect
|
||||
|
|
@ -152,3 +155,15 @@ require (
|
|||
modernc.org/memory v1.11.0 // indirect
|
||||
modernc.org/sqlite v1.47.0 // indirect
|
||||
)
|
||||
|
||||
replace (
|
||||
dappco.re/go/core => ../go
|
||||
dappco.re/go/core/api => ../api
|
||||
dappco.re/go/core/i18n => ../go-i18n
|
||||
dappco.re/go/core/io => ../go-io
|
||||
dappco.re/go/core/log => ../go-log
|
||||
dappco.re/go/core/ws => ../go-ws
|
||||
forge.lthn.ai/core/cli => ../cli
|
||||
forge.lthn.ai/core/config => ../config
|
||||
forge.lthn.ai/core/go-inference => ../go-inference
|
||||
)
|
||||
|
|
|
|||
20
go.sum
20
go.sum
|
|
@ -2,26 +2,14 @@ code.gitea.io/sdk/gitea v0.23.2 h1:iJB1FDmLegwfwjX8gotBDHdPSbk/ZR8V9VmEJaVsJYg=
|
|||
code.gitea.io/sdk/gitea v0.23.2/go.mod h1:yyF5+GhljqvA30sRDreoyHILruNiy4ASufugzYg0VHM=
|
||||
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.2.0 h1:HTCWpzyWQOHDWt3LzI6/d2jvUDsw/vgGRWm/8BTvcqI=
|
||||
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.2.0/go.mod h1:ZglEEDj+qkxYUb+SQIeqGtFxQrbaMYqIOgahNKb7uxs=
|
||||
dappco.re/go/core v0.4.7 h1:KmIA/2lo6rl1NMtLrKqCWfMlUqpDZYH3q0/d10dTtGA=
|
||||
dappco.re/go/core v0.4.7/go.mod h1:f2/tBZ3+3IqDrg2F5F598llv0nmb/4gJVCFzM5geE4A=
|
||||
forge.lthn.ai/core/api v0.1.5 h1:NwZrcOyBjaiz5/cn0n0tnlMUodi8Or6FHMx59C7Kv2o=
|
||||
forge.lthn.ai/core/api v0.1.5/go.mod h1:PBnaWyOVXSOGy+0x2XAPUFMYJxQ2CNhppia/D06ZPII=
|
||||
forge.lthn.ai/core/cli v0.3.7 h1:1GrbaGg0wDGHr6+klSbbGyN/9sSbHvFbdySJznymhwg=
|
||||
forge.lthn.ai/core/cli v0.3.7/go.mod h1:DBUppJkA9P45ZFGgI2B8VXw1rAZxamHoI/KG7fRvTNs=
|
||||
forge.lthn.ai/core/config v0.1.8 h1:xP2hys7T94QGVF/OTh84/Zr5Dm/dL/0vzjht8zi+LOg=
|
||||
forge.lthn.ai/core/config v0.1.8/go.mod h1:8epZrkwoCt+5ayrqdinOUU/+w6UoxOyv9ZrdgVOgYfQ=
|
||||
forge.lthn.ai/core/go v0.3.3 h1:kYYZ2nRYy0/Be3cyuLJspRjLqTMxpckVyhb/7Sw2gd0=
|
||||
forge.lthn.ai/core/go v0.3.3/go.mod h1:Cp4ac25pghvO2iqOu59t1GyngTKVOzKB5/VPdhRi9CQ=
|
||||
forge.lthn.ai/core/go v0.3.2 h1:VB9pW6ggqBhe438cjfE2iSI5Lg+62MmRbaOFglZM+nQ=
|
||||
forge.lthn.ai/core/go v0.3.2/go.mod h1:f7/zb3Labn4ARfwTq5Bi2AFHY+uxyPHozO+hLb54eFo=
|
||||
forge.lthn.ai/core/go-i18n v0.1.7 h1:aHkAoc3W8fw3RPNvw/UszQbjyFWXHszzbZgty3SwyAA=
|
||||
forge.lthn.ai/core/go-i18n v0.1.7/go.mod h1:0VDjwtY99NSj2iqwrI09h5GUsJeM9s48MLkr+/Dn4G8=
|
||||
forge.lthn.ai/core/go-inference v0.1.6 h1:ce42zC0zO8PuISUyAukAN1NACEdWp5wF1mRgnh5+58E=
|
||||
forge.lthn.ai/core/go-inference v0.1.6/go.mod h1:jfWz+IJX55wAH98+ic6FEqqGB6/P31CHlg7VY7pxREw=
|
||||
forge.lthn.ai/core/go-io v0.1.7 h1:Tdb6sqh+zz1lsGJaNX9RFWM6MJ/RhSAyxfulLXrJsbk=
|
||||
forge.lthn.ai/core/go-io v0.1.7/go.mod h1:8lRLFk4Dnp5cR/Cyzh9WclD5566TbpdRgwcH7UZLWn4=
|
||||
forge.lthn.ai/core/go-io v0.1.5 h1:+XJ1YhaGGFLGtcNbPtVlndTjk+pO0Ydi2hRDj5/cHOM=
|
||||
forge.lthn.ai/core/go-io v0.1.5/go.mod h1:FRtXSsi8W+U9vewCU+LBAqqbIj3wjXA4dBdSv3SAtWI=
|
||||
forge.lthn.ai/core/go-log v0.0.4 h1:KTuCEPgFmuM8KJfnyQ8vPOU1Jg654W74h8IJvfQMfv0=
|
||||
forge.lthn.ai/core/go-log v0.0.4/go.mod h1:r14MXKOD3LF/sI8XUJQhRk/SZHBE7jAFVuCfgkXoZPw=
|
||||
forge.lthn.ai/core/go-ws v0.2.5 h1:ZIV7Yrv01R/xpJUogA5vrfP9yB9li1w7EV3eZFMt8h0=
|
||||
forge.lthn.ai/core/go-ws v0.2.5/go.mod h1:C3riJyLLcV6QhLvYlq3P/XkGTsN598qQeGBoLdoHBU4=
|
||||
github.com/42wim/httpsig v1.2.3 h1:xb0YyWhkYj57SPtfSttIobJUPJZB9as1nsfo7KWVcEs=
|
||||
github.com/42wim/httpsig v1.2.3/go.mod h1:nZq9OlYKDrUBhptd77IHx4/sZZD+IxTBADvAPI9G/EM=
|
||||
github.com/99designs/gqlgen v0.17.88 h1:neMQDgehMwT1vYIOx/w5ZYPUU/iMNAJzRO44I5Intoc=
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
|
||||
forgejosdk "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// epicChildRe matches checklist items: - [ ] #42 or - [x] #42
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// Config configures a ForgejoSource.
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// withVersion wraps an HTTP handler to serve the Forgejo /api/v1/version
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ import (
|
|||
"path/filepath"
|
||||
"time"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-scm/agentci"
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/scm/agentci"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import (
|
|||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/agentci"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/agentci"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// EnableAutoMergeHandler merges a PR that is ready using squash strategy.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
func TestEnableAutoMerge_Match_Good(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// PublishDraftHandler marks a draft PR as ready for review once its checks pass.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
func TestPublishDraft_Match_Good(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ import (
|
|||
|
||||
forgejosdk "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// DismissReviewsHandler dismisses stale "request changes" reviews on a PR.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
func TestDismissReviews_Match_Good(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// SendFixCommandHandler posts a comment on a PR asking for conflict or
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
func TestSendFixCommand_Match_Good_Conflicting(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import (
|
|||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
)
|
||||
|
||||
// forgejoVersionResponse is the JSON response for /api/v1/version.
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import (
|
|||
|
||||
forgejosdk "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-scm/forge"
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/scm/forge"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
// TickParentHandler ticks a child checkbox in the parent epic issue body
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"forge.lthn.ai/core/go-scm/jobrunner"
|
||||
"dappco.re/go/core/scm/jobrunner"
|
||||
)
|
||||
|
||||
func TestTickParent_Match_Good(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ import (
|
|||
"strings"
|
||||
"sync"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
coreio "forge.lthn.ai/core/go-io"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
coreio "dappco.re/go/core/io"
|
||||
)
|
||||
|
||||
// validPathComponent matches safe repo owner/name characters (alphanumeric, hyphen, underscore, dot).
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"forge.lthn.ai/core/go-log"
|
||||
"dappco.re/go/core/log"
|
||||
)
|
||||
|
||||
// PollerConfig configures a Poller.
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import (
|
|||
"path/filepath"
|
||||
"time"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/io"
|
||||
)
|
||||
|
||||
// CompiledManifest is the distribution-ready form of a manifest, written as
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import (
|
|||
"crypto/ed25519"
|
||||
"path/filepath"
|
||||
|
||||
coreerr "forge.lthn.ai/core/go-log"
|
||||
"forge.lthn.ai/core/go-io"
|
||||
coreerr "dappco.re/go/core/log"
|
||||
"dappco.re/go/core/io"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"crypto/ed25519"
|
||||
"testing"
|
||||
|
||||
"forge.lthn.ai/core/go-io"
|
||||
"dappco.re/go/core/io"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue