Compare commits

...

10 Commits

10 changed files with 63 additions and 83 deletions
+3
View File
@@ -8,6 +8,7 @@ on:
permissions: permissions:
contents: write contents: write
actions: write actions: write
pull-requests: write
jobs: jobs:
autoupdate: autoupdate:
@@ -15,3 +16,5 @@ jobs:
with: with:
go-version: "1.24" go-version: "1.24"
release-workflow: "release.yaml" release-workflow: "release.yaml"
secrets:
pat-token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
+1 -2
View File
@@ -22,5 +22,4 @@ jobs:
docker-enabled: true docker-enabled: true
rolling-release-tag: "v1" rolling-release-tag: "v1"
semver-config: "config-release.yaml" semver-config: "config-release.yaml"
secrets: secrets: inherit
homebrew-tap-token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
+16 -51
View File
@@ -7,7 +7,7 @@ before:
builds: builds:
- id: semver-gen - id: semver-gen
main: . main: .
binary: semver-gen binary: semver-generator
env: env:
- CGO_ENABLED=0 - CGO_ENABLED=0
goos: goos:
@@ -24,7 +24,7 @@ builds:
archives: archives:
- id: semver-gen - id: semver-gen
formats: [tar.gz] formats: [tar.gz]
name_template: "semver-gen-{{ .Version }}-{{ .Os }}-{{ .Arch }}" name_template: "semver-generator-{{ .Os }}-{{ .Arch }}"
format_overrides: format_overrides:
- goos: windows - goos: windows
formats: [zip] formats: [zip]
@@ -34,7 +34,7 @@ archives:
- config.yaml - config.yaml
checksum: checksum:
name_template: "semver-gen-{{ .Version }}-checksums.txt" name_template: "semver-generator-checksums.txt"
algorithm: sha256 algorithm: sha256
changelog: changelog:
@@ -55,59 +55,24 @@ release:
draft: false draft: false
prerelease: auto prerelease: auto
dockers: dockers_v2:
- id: semver-gen-amd64 - images:
goos: linux - "ghcr.io/lukaszraczylo/semver-generator"
goarch: amd64 tags:
ids: - "{{ .Version }}"
- semver-gen - "latest"
image_templates: - "v1"
- "ghcr.io/lukaszraczylo/semver-generator:{{ .Version }}-amd64" platforms:
- "ghcr.io/lukaszraczylo/semver-generator:latest-amd64" - linux/amd64
- "ghcr.io/lukaszraczylo/semver-generator:v1-amd64" - linux/arm64
dockerfile: Dockerfile.goreleaser dockerfile: Dockerfile.goreleaser
use: buildx
build_flag_templates:
- "--platform=linux/amd64"
extra_files: extra_files:
- config-release.yaml - config-release.yaml
- entrypoint.sh - entrypoint.sh
- id: semver-gen-arm64
goos: linux
goarch: arm64
ids:
- semver-gen
image_templates:
- "ghcr.io/lukaszraczylo/semver-generator:{{ .Version }}-arm64"
- "ghcr.io/lukaszraczylo/semver-generator:latest-arm64"
- "ghcr.io/lukaszraczylo/semver-generator:v1-arm64"
dockerfile: Dockerfile.goreleaser
use: buildx
build_flag_templates:
- "--platform=linux/arm64"
extra_files:
- config-release.yaml
- entrypoint.sh
docker_manifests:
- name_template: "ghcr.io/lukaszraczylo/semver-generator:{{ .Version }}"
image_templates:
- "ghcr.io/lukaszraczylo/semver-generator:{{ .Version }}-amd64"
- "ghcr.io/lukaszraczylo/semver-generator:{{ .Version }}-arm64"
- name_template: "ghcr.io/lukaszraczylo/semver-generator:latest"
image_templates:
- "ghcr.io/lukaszraczylo/semver-generator:latest-amd64"
- "ghcr.io/lukaszraczylo/semver-generator:latest-arm64"
- name_template: "ghcr.io/lukaszraczylo/semver-generator:v1"
image_templates:
- "ghcr.io/lukaszraczylo/semver-generator:v1-amd64"
- "ghcr.io/lukaszraczylo/semver-generator:v1-arm64"
homebrew_casks: homebrew_casks:
- repository: - name: semver-generator
repository:
owner: lukaszraczylo owner: lukaszraczylo
name: homebrew-taps name: homebrew-taps
token: "{{ .Env.HOMEBREW_TAP_TOKEN }}" token: "{{ .Env.HOMEBREW_TAP_TOKEN }}"
@@ -122,5 +87,5 @@ homebrew_casks:
install: | install: |
if OS.mac? if OS.mac?
system_command "/usr/bin/xattr", system_command "/usr/bin/xattr",
args: ["-dr", "com.apple.quarantine", "#{staged_path}/semver-gen"] args: ["-dr", "com.apple.quarantine", "#{staged_path}/semver-generator"]
end end
+2 -1
View File
@@ -1,5 +1,6 @@
FROM ubuntu:jammy FROM ubuntu:jammy
COPY semver-gen /go/src/app/semver-gen ARG TARGETPLATFORM
COPY ${TARGETPLATFORM}/semver-generator /go/src/app/semver-generator
COPY config-release.yaml /go/src/app/config.yaml COPY config-release.yaml /go/src/app/config.yaml
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh
+8 -8
View File
@@ -52,7 +52,7 @@ export GITHUB_TOKEN=yourPersonalApiToken
##### Homebrew (macOS) ##### Homebrew (macOS)
```bash ```bash
brew install --cask lukaszraczylo/taps/semver-gen brew install --cask lukaszraczylo/taps/semver-generator
``` ```
##### Manual Download ##### Manual Download
@@ -63,9 +63,9 @@ You can download latest versions of the binaries from the [release page](https:/
Darwin ARM64/AMD64, Linux ARM64/AMD64, Windows AMD64 Darwin ARM64/AMD64, Linux ARM64/AMD64, Windows AMD64
```bash ```bash
bash$ ./semver-gen generate -r https://github.com/nextapps-de/winbox bash$ semver-generator generate -r https://github.com/nextapps-de/winbox
SEMVER 9.0.10 SEMVER 9.0.10
bash$ ./semver-gen generate -l bash$ semver-generator generate -l
SEMVER 5.1.1 SEMVER 5.1.1
``` ```
@@ -73,8 +73,8 @@ SEMVER 5.1.1
```yaml ```yaml
Usage: Usage:
semver-gen generate [flags] semver-generator generate [flags]
semver-gen [command] semver-generator [command]
Available Commands: Available Commands:
generate Generates semantic version generate Generates semantic version
@@ -84,7 +84,7 @@ Flags:
-c, --config string Path to config file (default "semver.yaml") -c, --config string Path to config file (default "semver.yaml")
-d, --debug Enable debug mode -d, --debug Enable debug mode
-e, --existing Respect existing tags -e, --existing Respect existing tags
-h, --help help for semver-gen -h, --help help for semver-generator
-l, --local Use local repository -l, --local Use local repository
-r, --repository string Remote repository URL. (default "https://github.com/lukaszraczylo/simple-gql-client") -r, --repository string Remote repository URL. (default "https://github.com/lukaszraczylo/simple-gql-client")
-b, --branch string Remote repository URL Branch. (default "main") -b, --branch string Remote repository URL Branch. (default "main")
@@ -98,7 +98,7 @@ Flags:
The binary can update itself to the latest version: The binary can update itself to the latest version:
```bash ```bash
semver-gen -u semver-generator -u
``` ```
This downloads the latest release for your platform directly from GitHub releases. No authentication is required. This downloads the latest release for your platform directly from GitHub releases. No authentication is required.
@@ -217,7 +217,7 @@ wording:
* `blacklist`: terms to ignore when processing commits. Any commit containing these terms will be skipped in version calculations. Useful for ignoring merge commits, feature branch names, and other unwanted triggers. * `blacklist`: terms to ignore when processing commits. Any commit containing these terms will be skipped in version calculations. Useful for ignoring merge commits, feature branch names, and other unwanted triggers.
* `wording`: words the program should look for in the git commits to increment (patch|minor|major) * `wording`: words the program should look for in the git commits to increment (patch|minor|major)
### Good to know ### Good to knows
* Word matching uses fuzzy search AND is case INSENSITIVE * Word matching uses fuzzy search AND is case INSENSITIVE
* I do not recommend using common words ( like "the" from the example configuration ) * I do not recommend using common words ( like "the" from the example configuration )
+19 -7
View File
@@ -209,7 +209,7 @@ func downloadBinary(url string) (string, error) {
} }
// Create temp file // Create temp file
tempFile, err := os.CreateTemp("", "semver-gen-update-*") tempFile, err := os.CreateTemp("", "semver-generator-update-*")
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -236,13 +236,13 @@ func downloadBinary(url string) (string, error) {
return tempPath, nil return tempPath, nil
} }
// extractTarGz extracts the semver-gen binary from a tar.gz archive // extractTarGz extracts the semver-generator binary from a tar.gz archive
func extractTarGz(r io.Reader, destFile *os.File) error { func extractTarGz(r io.Reader, destFile *os.File) error {
// For simplicity, we'll download the whole archive to a temp file first, // For simplicity, we'll download the whole archive to a temp file first,
// then use tar command to extract. This avoids adding archive/tar dependency. // then use tar command to extract. This avoids adding archive/tar dependency.
// Create temp archive file // Create temp archive file
archiveFile, err := os.CreateTemp("", "semver-gen-archive-*.tar.gz") archiveFile, err := os.CreateTemp("", "semver-generator-archive-*.tar.gz")
if err != nil { if err != nil {
return err return err
} }
@@ -256,7 +256,7 @@ func extractTarGz(r io.Reader, destFile *os.File) error {
archiveFile.Close() archiveFile.Close()
// Extract using tar command // Extract using tar command
extractDir, err := os.MkdirTemp("", "semver-gen-extract-*") extractDir, err := os.MkdirTemp("", "semver-generator-extract-*")
if err != nil { if err != nil {
return err return err
} }
@@ -268,22 +268,34 @@ func extractTarGz(r io.Reader, destFile *os.File) error {
return fmt.Errorf("failed to extract archive: %w", err) return fmt.Errorf("failed to extract archive: %w", err)
} }
// Find the semver-gen binary in the extracted files // Find the binary in the extracted files
// Support both new name (semver-generator) and old name (semver-gen) for backwards compatibility
binaryPath := "" binaryPath := ""
entries, err := os.ReadDir(extractDir) entries, err := os.ReadDir(extractDir)
if err != nil { if err != nil {
return err return err
} }
// First try to find semver-generator (new name)
for _, entry := range entries { for _, entry := range entries {
if entry.Name() == "semver-gen" || strings.HasPrefix(entry.Name(), "semver-gen") && !strings.Contains(entry.Name(), ".") { if entry.Name() == "semver-generator" {
binaryPath = fmt.Sprintf("%s/%s", extractDir, entry.Name()) binaryPath = fmt.Sprintf("%s/%s", extractDir, entry.Name())
break break
} }
} }
// Fallback to semver-gen (old name) for older releases
if binaryPath == "" { if binaryPath == "" {
return fmt.Errorf("semver-gen binary not found in archive") for _, entry := range entries {
if entry.Name() == "semver-gen" {
binaryPath = fmt.Sprintf("%s/%s", extractDir, entry.Name())
break
}
}
}
if binaryPath == "" {
return fmt.Errorf("binary not found in archive (looked for semver-generator and semver-gen)")
} }
// Copy the binary to the destination // Copy the binary to the destination
+9 -9
View File
@@ -157,10 +157,10 @@
<div class="w-3 h-3 rounded-full bg-green-500"></div> <div class="w-3 h-3 rounded-full bg-green-500"></div>
<span class="ml-2 text-gray-400 text-sm">terminal</span> <span class="ml-2 text-gray-400 text-sm">terminal</span>
</div> </div>
<pre class="text-gray-100 text-sm sm:text-base overflow-x-auto"><code><span class="text-gray-400">$</span> semver-gen generate -l <pre class="text-gray-100 text-sm sm:text-base overflow-x-auto"><code><span class="text-gray-400">$</span> semver-generator generate -l
<span class="text-emerald-400">SEMVER</span> 1.5.2 <span class="text-emerald-400">SEMVER</span> 1.5.2
<span class="text-gray-400">$</span> semver-gen generate -r https://github.com/user/repo <span class="text-gray-400">$</span> semver-generator generate -r https://github.com/user/repo
<span class="text-emerald-400">SEMVER</span> 2.3.0</code></pre> <span class="text-emerald-400">SEMVER</span> 2.3.0</code></pre>
</div> </div>
</div> </div>
@@ -260,7 +260,7 @@
<i class="fas fa-beer mr-2 text-amber-500"></i> <i class="fas fa-beer mr-2 text-amber-500"></i>
Homebrew (macOS) Homebrew (macOS)
</h3> </h3>
<pre class="bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto"><code>brew install --cask lukaszraczylo/taps/semver-gen</code></pre> <pre class="bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto"><code>brew install --cask lukaszraczylo/taps/semver-generator</code></pre>
</div> </div>
<div class="glass p-6 rounded-xl"> <div class="glass p-6 rounded-xl">
<h3 class="font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center"> <h3 class="font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
@@ -295,22 +295,22 @@
CLI Usage CLI Usage
</h3> </h3>
<pre class="bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto mb-4"><code><span class="text-gray-400"># Local repository</span> <pre class="bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto mb-4"><code><span class="text-gray-400"># Local repository</span>
semver-gen generate -l semver-generator generate -l
<span class="text-gray-400"># Remote repository</span> <span class="text-gray-400"># Remote repository</span>
semver-gen generate -r https://github.com/user/repo semver-generator generate -r https://github.com/user/repo
<span class="text-gray-400"># With custom config</span> <span class="text-gray-400"># With custom config</span>
semver-gen generate -l -c semver.yaml semver-generator generate -l -c semver.yaml
<span class="text-gray-400"># Strict mode (only exact matches)</span> <span class="text-gray-400"># Strict mode (only exact matches)</span>
semver-gen generate -l -s semver-generator generate -l -s
<span class="text-gray-400"># Respect existing tags</span> <span class="text-gray-400"># Respect existing tags</span>
semver-gen generate -l -e semver-generator generate -l -e
<span class="text-gray-400"># Self-update to latest version (no auth required)</span> <span class="text-gray-400"># Self-update to latest version (no auth required)</span>
semver-gen -u</code></pre> semver-generator -u</code></pre>
<div class="grid sm:grid-cols-2 gap-4 text-sm"> <div class="grid sm:grid-cols-2 gap-4 text-sm">
<div> <div>
<h4 class="font-medium text-gray-900 dark:text-gray-100 mb-2">Flags</h4> <h4 class="font-medium text-gray-900 dark:text-gray-100 mb-2">Flags</h4>
+2 -2
View File
@@ -60,11 +60,11 @@ if [[ ! -z "$INPUT_DEBUGMODE" ]]; then
echo "----" echo "----"
echo "FLAGS: $FLAGS" echo "FLAGS: $FLAGS"
echo "----" echo "----"
/go/src/app/semver-gen generate $FLAGS $* /go/src/app/semver-generator generate $FLAGS $*
echo "----" echo "----"
fi fi
OUT_SEMVER_GEN=$(/go/src/app/semver-gen generate $FLAGS $*) OUT_SEMVER_GEN=$(/go/src/app/semver-generator generate $FLAGS $*)
[ $? -eq 0 ] || exit 1 [ $? -eq 0 ] || exit 1
CLEAN_SEMVER=$(echo $OUT_SEMVER_GEN | sed -e 's|SEMVER ||g') CLEAN_SEMVER=$(echo $OUT_SEMVER_GEN | sed -e 's|SEMVER ||g')
echo "semantic_version=$CLEAN_SEMVER" >> $GITHUB_OUTPUT echo "semantic_version=$CLEAN_SEMVER" >> $GITHUB_OUTPUT
+1 -1
View File
@@ -7,7 +7,7 @@ toolchain go1.24.6
require ( require (
github.com/go-git/go-git/v5 v5.16.4 github.com/go-git/go-git/v5 v5.16.4
github.com/lithammer/fuzzysearch v1.1.8 github.com/lithammer/fuzzysearch v1.1.8
github.com/lukaszraczylo/graphql-monitoring-proxy v0.41.20 github.com/lukaszraczylo/graphql-monitoring-proxy v0.42.4
github.com/lukaszraczylo/pandati v0.0.29 github.com/lukaszraczylo/pandati v0.0.29
github.com/spf13/cobra v1.10.2 github.com/spf13/cobra v1.10.2
github.com/spf13/viper v1.21.0 github.com/spf13/viper v1.21.0
+2 -2
View File
@@ -65,8 +65,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4= github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4=
github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4= github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4=
github.com/lukaszraczylo/graphql-monitoring-proxy v0.41.20 h1:554N+HD5cTY074Y0LrL82cYQNCG1qDV3QKULgdLovs0= github.com/lukaszraczylo/graphql-monitoring-proxy v0.42.4 h1:gq/bEq+JzPes8WR24HHys9VvVWREDEXOWFoVSOFXCCw=
github.com/lukaszraczylo/graphql-monitoring-proxy v0.41.20/go.mod h1:1FLcH7q+7cjUgQxyeVeF7ouBamGpcJZgqDF+j+cuFxI= github.com/lukaszraczylo/graphql-monitoring-proxy v0.42.4/go.mod h1:1FLcH7q+7cjUgQxyeVeF7ouBamGpcJZgqDF+j+cuFxI=
github.com/lukaszraczylo/pandati v0.0.29 h1:WUEWm1+hWjE5KJbIL8OctG00x2dk4XKGJSlrjhxZ55k= github.com/lukaszraczylo/pandati v0.0.29 h1:WUEWm1+hWjE5KJbIL8OctG00x2dk4XKGJSlrjhxZ55k=
github.com/lukaszraczylo/pandati v0.0.29/go.mod h1:+DyTWKFaXd+jIfe7GW5w2S5PyTko/RXxMyOa+Vl713A= github.com/lukaszraczylo/pandati v0.0.29/go.mod h1:+DyTWKFaXd+jIfe7GW5w2S5PyTko/RXxMyOa+Vl713A=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=