diff --git a/pkg/cli/generate_registry.go b/pkg/cli/generate_registry.go index cf37af645..6ccda6ec0 100644 --- a/pkg/cli/generate_registry.go +++ b/pkg/cli/generate_registry.go @@ -91,6 +91,12 @@ func (r *Runner) newGenerateRegistryCommand() *cli.Command { // Name: "i", // Usage: "Insert a registry to configuration file", // }, + &cli.StringFlag{ + Name: "type", + Aliases: []string{"t"}, + Usage: "package type", + Value: "github_release", + }, &cli.StringFlag{ Name: "out-testdata", Usage: "A file path where the testdata is outputted", diff --git a/pkg/cli/runner.go b/pkg/cli/runner.go index e097ead4e..beaef2cb8 100644 --- a/pkg/cli/runner.go +++ b/pkg/cli/runner.go @@ -43,6 +43,7 @@ func (r *Runner) setParam(c *cli.Context, commandName string, param *config.Para param.ConfigFilePath = c.String("config") param.Dest = c.String("o") param.OutTestData = c.String("out-testdata") + param.Type = c.String("type") param.OnlyLink = c.Bool("only-link") if commandName == "generate-registry" { param.InsertFile = c.String("i") diff --git a/pkg/config/package.go b/pkg/config/package.go index 32f8f6876..a30ff87fe 100644 --- a/pkg/config/package.go +++ b/pkg/config/package.go @@ -249,6 +249,7 @@ type Param struct { Dest string HomeDir string OutTestData string + Type string Limit int MaxParallelism int Args []string diff --git a/pkg/controller/generate-registry/generate.go b/pkg/controller/generate-registry/generate.go index f46c53ce7..4ec90a613 100644 --- a/pkg/controller/generate-registry/generate.go +++ b/pkg/controller/generate-registry/generate.go @@ -61,7 +61,7 @@ func (c *Controller) GenerateRegistry(ctx context.Context, param *config.Param, } func (c *Controller) genRegistry(ctx context.Context, param *config.Param, logE *logrus.Entry, pkgName string) error { - pkgInfo, versions := c.getPackageInfo(ctx, logE, pkgName, param.Limit) + pkgInfo, versions := c.getPackageInfo(ctx, logE, pkgName, param) if len(param.Commands) != 0 { files := make([]*registry.File, len(param.Commands)) for i, cmd := range param.Commands { @@ -106,14 +106,14 @@ func (c *Controller) getRelease(ctx context.Context, repoOwner, repoName, versio return release, err //nolint:wrapcheck } -func (c *Controller) getPackageInfo(ctx context.Context, logE *logrus.Entry, arg string, limit int) (*registry.PackageInfo, []string) { +func (c *Controller) getPackageInfo(ctx context.Context, logE *logrus.Entry, arg string, param *config.Param) (*registry.PackageInfo, []string) { pkgName, version, _ := strings.Cut(arg, "@") if strings.HasPrefix(pkgName, "crates.io/") { return c.getCargoPackageInfo(ctx, logE, pkgName) } splitPkgNames := strings.Split(pkgName, "/") pkgInfo := ®istry.PackageInfo{ - Type: "github_release", + Type: param.Type, } if len(splitPkgNames) == 1 { pkgInfo.Name = pkgName @@ -133,8 +133,8 @@ func (c *Controller) getPackageInfo(ctx context.Context, logE *logrus.Entry, arg } else { pkgInfo.Description = strings.TrimRight(strings.TrimSpace(gomoji.RemoveEmojis(repo.GetDescription())), ".!?") } - if limit != 1 && version == "" { - return c.getPackageInfoWithVersionOverrides(ctx, logE, pkgName, pkgInfo, limit) + if param.Limit != 1 && version == "" { + return c.getPackageInfoWithVersionOverrides(ctx, logE, pkgName, pkgInfo, param.Limit) } release, err := c.getRelease(ctx, pkgInfo.RepoOwner, pkgInfo.RepoName, version) if err != nil { diff --git a/pkg/controller/generate-registry/generate_internal_test.go b/pkg/controller/generate-registry/generate_internal_test.go index c80fdf26b..285652a50 100644 --- a/pkg/controller/generate-registry/generate_internal_test.go +++ b/pkg/controller/generate-registry/generate_internal_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/aquaproj/aqua/v2/pkg/cargo" + "github.com/aquaproj/aqua/v2/pkg/config" "github.com/aquaproj/aqua/v2/pkg/config/registry" "github.com/aquaproj/aqua/v2/pkg/github" "github.com/aquaproj/aqua/v2/pkg/ptr" @@ -137,7 +138,10 @@ func TestController_getPackageInfo(t *testing.T) { //nolint:funlen CratePayload: d.crate, } ctrl := NewController(nil, gh, nil, cargoClient) - pkgInfo, _ := ctrl.getPackageInfo(ctx, logE, d.pkgName, 0) + pkgInfo, _ := ctrl.getPackageInfo(ctx, logE, d.pkgName, &config.Param{ + Type: "github_release", + Deep: true, + }) if diff := cmp.Diff(d.exp, pkgInfo); diff != "" { t.Fatal(diff) } diff --git a/pkg/controller/generate-registry/version_overrides.go b/pkg/controller/generate-registry/version_overrides.go index 1d2261b3a..fa013be28 100644 --- a/pkg/controller/generate-registry/version_overrides.go +++ b/pkg/controller/generate-registry/version_overrides.go @@ -94,7 +94,7 @@ func (c *Controller) getPackageInfoWithVersionOverrides(ctx context.Context, log pkgs := make([]*Package, 0, len(releases)) for _, release := range releases { pkgInfo := ®istry.PackageInfo{ - Type: "github_release", + Type: pkgInfo.Type, RepoOwner: pkgInfo.RepoOwner, RepoName: pkgInfo.RepoName, }