Skip to content

Commit

Permalink
Merge pull request #76 from grafana/75-update-versions-from-arbitrary…
Browse files Browse the repository at this point in the history
…-git-repository

Update versions from arbitrary git repository
  • Loading branch information
szkiba authored Sep 23, 2024
2 parents dcfbf35 + 678bf0d commit e6d51f8
Show file tree
Hide file tree
Showing 6 changed files with 472 additions and 1 deletion.
8 changes: 7 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,16 @@ mdcode update README.md
```

[example.yaml]: docs/example.yaml
[registry.schema.yaml]: docs/example.schema.yaml
[registry.md]: docs/registry.md
[README.md]: README.md

## custom - Update custom example

```bash
go run ./cmd/k6registry --lint -o docs/custom.json docs/custom.yaml
go run ./cmd/k6registry --lint --catalog -o docs/custom-catalog.json docs/custom.yaml
```

## readme - Update README.md

After changing the CLI tool or example registry, the documentation must be updated in README.md.
Expand Down
54 changes: 54 additions & 0 deletions cmd/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ import (
"fmt"
"io"
"log/slog"
"path/filepath"
"strings"

"github.com/Masterminds/semver/v3"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
"github.com/google/go-github/v62/github"
"github.com/grafana/k6registry"
"github.com/xanzy/go-gitlab"
Expand Down Expand Up @@ -110,6 +113,15 @@ func loadRepository(ctx context.Context, ext *k6registry.Extension) (*k6registry

module := ext.Module

if ext.Repo != nil && len(ext.Repo.CloneURL) > 0 {
versions, err := loadGit(ctx, module, ext.Repo.CloneURL)
if err != nil {
return nil, nil, err
}

return ext.Repo, versions, nil
}

if strings.HasPrefix(module, k6Module) || strings.HasPrefix(module, ghModulePrefix) {
repo, tags, err := loadGitHub(ctx, module)
if err != nil {
Expand Down Expand Up @@ -281,6 +293,48 @@ func loadGitLab(ctx context.Context, module string) (*k6registry.Repository, []s
return repo, tags, nil
}

func loadGit(ctx context.Context, module string, cloneURL string) ([]string, error) {
base, err := modulesDir(ctx)
if err != nil {
return nil, err
}

dir := filepath.Join(base, module)

if err := updateWorkdir(ctx, dir, cloneURL); err != nil {
return nil, err
}

repo, err := git.PlainOpen(dir)
if err != nil {
return nil, err
}

iter, err := repo.Tags()
if err != nil {
return nil, err
}

const tagPrefix = "refs/tags/"

versions := make([]string, 0)

err = iter.ForEach(func(ref *plumbing.Reference) error {
tag := strings.TrimPrefix(ref.Name().String(), tagPrefix)

if _, err := semver.NewVersion(tag); err == nil {
versions = append(versions, tag)
}

return nil
})
if err != nil {
return nil, err
}

return versions, nil
}

const (
ghModulePrefix = "github.com/"
glModulePrefix = "gitlab.com/"
Expand Down
183 changes: 183 additions & 0 deletions docs/custom-catalog.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
{
"k6": {
"categories": [
"misc"
],
"description": "A modern load testing tool, using Go and JavaScript",
"imports": [
"k6"
],
"module": "go.k6.io/k6",
"products": [
"cloud",
"oss"
],
"repo": {
"description": "A modern load testing tool, using Go and JavaScript - https://k6.io",
"homepage": "https://github.com/grafana/k6",
"license": "AGPL-3.0",
"name": "k6",
"owner": "grafana",
"public": true,
"topics": [
"es6",
"go",
"golang",
"hacktoberfest",
"javascript",
"load-generator",
"load-testing",
"performance"
],
"url": "https://github.com/grafana/k6"
},
"tier": "official",
"versions": [
"v0.53.0",
"v0.52.0",
"v0.51.0",
"v0.50.0",
"v0.49.0",
"v0.48.0",
"v0.47.0",
"v0.46.0",
"v0.45.1",
"v0.45.0",
"v0.44.1",
"v0.44.0",
"v0.43.1",
"v0.43.0",
"v0.42.0",
"v0.41.0",
"v0.40.0",
"v0.39.0",
"v0.38.3",
"v0.38.2",
"v0.38.1",
"v0.38.0",
"v0.37.0",
"v0.36.0",
"v0.35.0",
"v0.34.1",
"v0.34.0",
"v0.33.0",
"v0.32.0",
"v0.31.1",
"v0.31.0",
"v0.30.0",
"v0.29.0",
"v0.28.0",
"v0.27.1",
"v0.27.0",
"v0.26.2",
"v0.26.1",
"v0.26.0",
"v0.25.1",
"v0.25.0",
"v0.24.0",
"v0.23.1",
"v0.23.0",
"v0.22.1",
"v0.22.0",
"v0.21.1",
"v0.21.0",
"v0.20.0",
"v0.19.0",
"v0.18.2",
"v0.18.1",
"v0.18.0",
"v0.17.2",
"v0.17.1",
"v0.17.0",
"v0.16.0",
"v0.15.0",
"v0.14.0",
"v0.13.0",
"v0.12.2",
"v0.12.1",
"v0.11.0",
"v0.10.0",
"v0.9.3",
"v0.9.2",
"v0.9.1",
"v0.9.0",
"v0.8.5",
"v0.8.4",
"v0.8.3",
"v0.8.2",
"v0.8.1",
"v0.8.0",
"v0.7.0",
"v0.6.0",
"v0.5.2",
"v0.5.1",
"v0.5.0",
"v0.4.5",
"v0.4.4",
"v0.4.3",
"v0.4.2",
"v0.4.1",
"v0.4.0",
"v0.3.0",
"v0.2.1",
"v0.2.0",
"v0.0.2",
"v0.0.1"
]
},
"k6/x/codename": {
"categories": [
"misc"
],
"compliance": {
"grade": "A",
"level": 100
},
"description": "Generate random, pronounceable codenames",
"imports": [
"k6/x/codename"
],
"module": "codeberg.org/szkiba/xk6-codename",
"products": [
"oss"
],
"repo": {
"clone_url": "https://codeberg.org/szkiba/xk6-codename.git",
"name": "xk6-codename",
"owner": "szkiba",
"url": "https://codeberg.org/szkiba/xk6-codename"
},
"tier": "community",
"versions": [
"v0.1.0"
]
},
"k6/x/sqids": {
"categories": [
"misc"
],
"compliance": {
"grade": "A",
"level": 100
},
"description": "Generate short unique identifiers from numbers",
"imports": [
"k6/x/sqids"
],
"module": "bitbucket.org/szkiba/xk6-sqids",
"products": [
"oss"
],
"repo": {
"clone_url": "[email protected]:szkiba/xk6-sqids.git",
"name": "xk6-sqids",
"owner": "szkiba",
"url": "https://bitbucket.org/szkiba/xk6-sqids"
},
"tier": "community",
"versions": [
"v0.1.0",
"v0.1.1"
]
}
}
Loading

0 comments on commit e6d51f8

Please sign in to comment.