log_bench 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7dee0d20491347e20b631992dd88b3859ddc373dd4962306fa8d36a1955f119
4
- data.tar.gz: 2923c231a8afaa145b42d485319c997c03cd4765bc13c0e224cb3e8a6955bdaf
3
+ metadata.gz: '08b5b0c6673f13c5ef68af14e5699ac8591d46605a0783e9d9ad70036feaf10e'
4
+ data.tar.gz: '06338df9398f01ba5c0235c01952c1ee4c59a3ee1b56f555d18441363ecea820'
5
5
  SHA512:
6
- metadata.gz: 70fb36f5e8bbf5c349e40ad145971e90526c1f37cdfe08f3e93a7e539ef6a99cbfe90be6ddb91e39f9eb6d77009b9fb91b6b4cb4facc5a4d7c53a7dbb20dc1be
7
- data.tar.gz: 7474a672815d2403fcc9e4fdf7e0c962f763476bda2662ffedbd2332c9e043c5eb37204e30d65a9a317696aad9eb3f33a0547a6419a7f05a00afd6b9570ed539
6
+ metadata.gz: 2d9c1e13307b411dc4da7839102ef7751414567f066893a1b405b9f4e16a2cd6300da26ecaa1af492ed64ba9d2ccd6134c89a37d596a4faa1b8fc5447239127c
7
+ data.tar.gz: 0307b86cc997309aba98fc81c93cb0a01ac87c78866d227b9d86716eb8a7486837547516913188af41cc85c331e2dfa85e34985112c71281c59336253392b00c
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LogBench
4
- VERSION = "0.2.6"
4
+ VERSION = "0.2.8"
5
5
  end
data/release_gem.sh ADDED
@@ -0,0 +1,208 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ############################################
5
+ # Config — tweak if your gem/repo differs
6
+ ############################################
7
+ GEM_NAME="log_bench"
8
+ DEFAULT_BRANCH="main"
9
+ VERSION_FILE="lib/${GEM_NAME}/version.rb"
10
+ GEMSPEC_FILE="${GEM_NAME}.gemspec"
11
+ TAG_PREFIX="v"
12
+
13
+ # Bump mode: patch | minor | major (default patch)
14
+ BUMP="${BUMP:-patch}"
15
+
16
+ ############################################
17
+ # Arg parsing (optional)
18
+ ############################################
19
+ while [[ $# -gt 0 ]]; do
20
+ case "$1" in
21
+ --bump) BUMP="${2:-patch}"; shift 2 ;;
22
+ --bump=*) BUMP="${1#*=}"; shift 1 ;;
23
+ -h|--help)
24
+ cat <<EOF
25
+ Usage: $0 [--bump patch|minor|major]
26
+ Defaults to --bump patch (e.g., 0.2.6 -> 0.2.7).
27
+ EOF
28
+ exit 0 ;;
29
+ *) echo "Unknown arg: $1" >&2; exit 1 ;;
30
+ esac
31
+ done
32
+
33
+ case "$BUMP" in
34
+ patch|minor|major) : ;;
35
+ *) echo "Invalid --bump: $BUMP (use patch|minor|major)"; exit 1 ;;
36
+ esac
37
+
38
+ ############################################
39
+ # Pretty logging
40
+ ############################################
41
+ if command -v tput >/dev/null 2>&1 && [ -n "${TERM:-}" ]; then
42
+ BOLD=$(tput bold) || BOLD=""
43
+ RESET=$(tput sgr0) || RESET=""
44
+ GREEN=$(tput setaf 2) || GREEN=""
45
+ YELLOW=$(tput setaf 3) || YELLOW=""
46
+ RED=$(tput setaf 1) || RED=""
47
+ BLUE=$(tput setaf 4) || BLUE=""
48
+ else
49
+ BOLD=""; RESET=""; GREEN=""; YELLOW=""; RED=""; BLUE=""
50
+ fi
51
+
52
+ log() { printf "%b\n" "${BLUE}▸${RESET} $*"; }
53
+ success() { printf "%b\n" "${GREEN}✔${RESET} $*"; }
54
+ warn() { printf "%b\n" "${YELLOW}⚠${RESET} $*"; }
55
+ error() { printf "%b\n" "${RED}✖${RESET} $*"; }
56
+ die() { error "$*"; exit 1; }
57
+
58
+ ############################################
59
+ # Helpers
60
+ ############################################
61
+ require_cmd() { command -v "$1" >/dev/null 2>&1 || die "Missing required command: $1"; }
62
+
63
+ current_version() {
64
+ # Extract the first X.Y.Z from the VERSION file
65
+ grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' "$VERSION_FILE" | head -n1
66
+ }
67
+
68
+ validate_semver() { [[ "$1" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; }
69
+
70
+ bump_version() {
71
+ local mode="$1" ver="$2"
72
+ IFS='.' read -r MA MI PA <<<"$ver"
73
+ case "$mode" in
74
+ patch) echo "${MA}.${MI}.$((PA+1))" ;;
75
+ minor) echo "${MA}.$((MI+1)).0" ;;
76
+ major) echo "$((MA+1)).0.0" ;;
77
+ esac
78
+ }
79
+
80
+ update_version_file() {
81
+ local new="$1"
82
+ # Robust sed (preserves indentation, quote style, optional .freeze)
83
+ sed -E "s/^([[:space:]]*)VERSION[[:space:]]*=[[:space:]]*(['\"])[0-9]+\.[0-9]+\.[0-9]+(['\"])(\.freeze)?/\1VERSION = \2${new}\3\4/" \
84
+ "$VERSION_FILE" > "${VERSION_FILE}.tmp"
85
+ mv "${VERSION_FILE}.tmp" "$VERSION_FILE"
86
+ }
87
+
88
+ ensure_clean_worktree() {
89
+ if [ -n "$(git status --porcelain)" ]; then
90
+ warn "Your working tree has uncommitted changes:"
91
+ git status --short
92
+ read -rp "$(printf '%b' "${YELLOW}Proceed anyway? [y/N] ${RESET}")" ans
93
+ [[ "${ans:-}" =~ ^[Yy]$ ]] || die "Aborted due to dirty working tree."
94
+ fi
95
+ }
96
+
97
+ ############################################
98
+ # Checks
99
+ ############################################
100
+ require_cmd git
101
+ require_cmd bundle
102
+ require_cmd gem
103
+ require_cmd sed
104
+
105
+ if ! command -v gh >/dev/null 2>&1; then
106
+ warn "GitHub CLI (gh) not found. GitHub release creation will be skipped."
107
+ GH_AVAILABLE="false"
108
+ else
109
+ GH_AVAILABLE="true"
110
+ fi
111
+
112
+ [ -f "$VERSION_FILE" ] || die "Version file not found: $VERSION_FILE"
113
+ [ -f "$GEMSPEC_FILE" ] || die "Gemspec not found: $GEMSPEC_FILE"
114
+
115
+ ############################################
116
+ # Start
117
+ ############################################
118
+ log "${BOLD}Publishing ${GEM_NAME}${RESET}"
119
+ ensure_clean_worktree
120
+
121
+ log "Pulling latest from origin/${DEFAULT_BRANCH}…"
122
+ git checkout "$DEFAULT_BRANCH" >/dev/null 2>&1 || true
123
+ git pull origin "$DEFAULT_BRANCH"
124
+ success "Up to date."
125
+
126
+ CURR_VER="$(current_version)"
127
+ [ -n "$CURR_VER" ] || die "Could not determine current version from $VERSION_FILE"
128
+
129
+ log "Current version detected in ${VERSION_FILE}: ${BOLD}${CURR_VER}${RESET}"
130
+ PROPOSED="$(bump_version "$BUMP" "$CURR_VER")"
131
+ read -rp "$(printf '%b' "${BLUE}Proposed next ${BOLD}${BUMP}${RESET}${BLUE} version is ${BOLD}${PROPOSED}${RESET}${BLUE}. Press Enter to accept or type a different semver (X.Y.Z): ${RESET}")" NEW_VER
132
+ NEW_VER="${NEW_VER:-$PROPOSED}"
133
+ validate_semver "$NEW_VER" || die "Invalid semver: $NEW_VER"
134
+
135
+ TAG="${TAG_PREFIX}${NEW_VER}"
136
+
137
+ # Guard against existing tag
138
+ if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then
139
+ die "Tag ${TAG} already exists."
140
+ fi
141
+
142
+ log "Updating version file to ${BOLD}${NEW_VER}${RESET}…"
143
+ before_contents="$(cat "$VERSION_FILE")"
144
+ update_version_file "$NEW_VER"
145
+ after_contents="$(cat "$VERSION_FILE")"
146
+ if [ "$before_contents" = "$after_contents" ]; then
147
+ AFTER_VER="$(current_version || true)"
148
+ if [ "$AFTER_VER" = "$NEW_VER" ]; then
149
+ warn "Version file already at ${NEW_VER}; nothing to change."
150
+ else
151
+ die "Failed to update ${VERSION_FILE}. Ensure it has a line like:
152
+ VERSION = \"${CURR_VER}\"
153
+ (or with single quotes / optional .freeze)."
154
+ fi
155
+ else
156
+ success "Updated ${VERSION_FILE}."
157
+ fi
158
+
159
+ log "Installing gems (bundle install)…"
160
+ bundle install
161
+ success "Dependencies installed."
162
+
163
+ log "Committing version bump (including Gemfile.lock if changed)…"
164
+ FILES_TO_COMMIT=()
165
+ if ! git diff --quiet -- "$VERSION_FILE"; then
166
+ FILES_TO_COMMIT+=("$VERSION_FILE")
167
+ fi
168
+ if [ -f "Gemfile.lock" ] && ! git diff --quiet -- "Gemfile.lock"; then
169
+ FILES_TO_COMMIT+=("Gemfile.lock")
170
+ fi
171
+
172
+ if [ "${#FILES_TO_COMMIT[@]}" -gt 0 ]; then
173
+ git add "${FILES_TO_COMMIT[@]}"
174
+ git commit -m "Bump version to ${NEW_VER}"
175
+ success "Committed: ${FILES_TO_COMMIT[*]}"
176
+ else
177
+ warn "No changes to commit (version file and Gemfile.lock unchanged)."
178
+ fi
179
+
180
+ log "Creating tag ${BOLD}${TAG}${RESET}…"
181
+ git tag "${TAG}" -m "Release version ${NEW_VER}"
182
+ success "Tag created."
183
+
184
+ log "Pushing branch & tag to origin…"
185
+ git push origin "$DEFAULT_BRANCH"
186
+ git push origin "${TAG}"
187
+ success "Pushed."
188
+
189
+ if [ "$GH_AVAILABLE" = "true" ]; then
190
+ log "Creating GitHub release ${BOLD}${TAG}${RESET} with auto-generated notes…"
191
+ gh release create "${TAG}" --title "Release version ${NEW_VER}" --generate-notes || warn "Failed to create GitHub release via gh."
192
+ success "GitHub release created."
193
+ else
194
+ warn "Skipping GitHub release creation (gh not installed)."
195
+ fi
196
+
197
+ log "Building gem…"
198
+ gem build "$GEMSPEC_FILE"
199
+ GEM_FILE="${GEM_NAME}-${NEW_VER}.gem"
200
+ [ -f "$GEM_FILE" ] || die "Gem file not found after build: $GEM_FILE"
201
+ success "Built ${GEM_FILE}."
202
+
203
+ log "Pushing gem to RubyGems…"
204
+ gem push "$GEM_FILE"
205
+ success "Gem pushed to RubyGems."
206
+
207
+ success "${BOLD}${GEM_NAME} ${NEW_VER}${RESET} has been published! 🎉"
208
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_bench
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamín Silva
@@ -155,6 +155,7 @@ files:
155
155
  - lib/log_bench/version_checker.rb
156
156
  - lib/tasks/log_bench.rake
157
157
  - logbench-preview.png
158
+ - release_gem.sh
158
159
  homepage: https://github.com/silva96/log_bench
159
160
  licenses:
160
161
  - MIT