Compare commits

...

9 Commits

7 changed files with 71 additions and 79 deletions
+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
+18 -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,15 +84,25 @@ 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")
-s, --strict Strict matching -s, --strict Strict matching
-u, --update Update binary with latest -u, --update Update binary with latest (no authentication required)
-v, --version Display version -v, --version Display version
``` ```
##### Self-Update
The binary can update itself to the latest version:
```bash
semver-generator -u
```
This downloads the latest release for your platform directly from GitHub releases. No authentication is required.
#### As a github action #### As a github action
```yaml ```yaml
@@ -207,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
+13 -8
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,19 +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</code></pre> semver-generator generate -l -e
<span class="text-gray-400"># Self-update to latest version (no auth required)</span>
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>
@@ -318,6 +321,8 @@ semver-gen generate -l -e</code></pre>
<li><code class="text-emerald-600 dark:text-emerald-400">-s, --strict</code> Strict matching</li> <li><code class="text-emerald-600 dark:text-emerald-400">-s, --strict</code> Strict matching</li>
<li><code class="text-emerald-600 dark:text-emerald-400">-e, --existing</code> Respect existing tags</li> <li><code class="text-emerald-600 dark:text-emerald-400">-e, --existing</code> Respect existing tags</li>
<li><code class="text-emerald-600 dark:text-emerald-400">-d, --debug</code> Enable debug mode</li> <li><code class="text-emerald-600 dark:text-emerald-400">-d, --debug</code> Enable debug mode</li>
<li><code class="text-emerald-600 dark:text-emerald-400">-u, --update</code> Self-update to latest version</li>
<li><code class="text-emerald-600 dark:text-emerald-400">-v, --version</code> Display current version</li>
</ul> </ul>
</div> </div>
</div> </div>
+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