ivar 0.4.0 → 0.4.6
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/VERSION.md +8 -6
- data/lib/ivar/version.rb +1 -1
- data/script/release +86 -7
- metadata +6 -4
- data/ivar.gemspec +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3116543b0e32b5de687f2d5cdc4503add2a87334a03ffc20445ad3aaeeff65f1
|
4
|
+
data.tar.gz: 5944d6a180892a4bc6ce19903ec8185a847e2b464aa1fa23b7eda03c7e6d9baa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f90e50b2767f6f5932ff36c19beb464392beb82789eef3db02ddc52d057746892a6e1a52ebb2a72692e61958082715deaa490ea636fc4e1cd8d06284e25e2bbc
|
7
|
+
data.tar.gz: 9b53396cb198b0313d2f900162a8fb3f10821509bfc90434b9e78223ac3fc6105c5d4c3da59de7a56e90c6e0d9642d35ac1d82bff0b0f768133c4279ffdf7451
|
data/CHANGELOG.md
CHANGED
@@ -7,7 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [0.4.6] - 2025-05-07
|
11
|
+
|
12
|
+
## [0.4.5] - 2025-05-07
|
13
|
+
|
14
|
+
## [0.4.4] - 2025-05-07
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
- Enhanced release script to detect and handle uncommitted changes after the release process
|
18
|
+
- Improved release script to update Gemfile.lock before committing version changes
|
19
|
+
|
20
|
+
## [0.4.2] - 2025-05-07
|
21
|
+
|
22
|
+
### Added
|
23
|
+
- Enhanced release script to automatically push changes and tags to the remote repository
|
24
|
+
|
10
25
|
### Fixed
|
26
|
+
- Fixed release script to include Gemfile.lock changes in version bump commit
|
11
27
|
- Fixed GitHub Actions workflow to prevent "frozen Gemfile.lock" errors during gem publishing
|
12
28
|
|
13
29
|
## [0.4.0] - 2025-05-07
|
data/VERSION.md
CHANGED
@@ -17,19 +17,21 @@ To release a new version:
|
|
17
17
|
1. Make sure all changes are documented in the `CHANGELOG.md` file under the "Unreleased" section
|
18
18
|
2. Run the release script with the appropriate version bump type:
|
19
19
|
```
|
20
|
-
script/release [major|minor|patch]
|
20
|
+
script/release [major|minor|patch] [options]
|
21
21
|
```
|
22
|
+
|
23
|
+
Available options:
|
24
|
+
- `--yes` or `-y`: Skip confirmation prompt
|
25
|
+
- `--no-push`: Skip pushing changes to remote repository
|
26
|
+
|
22
27
|
3. The script will:
|
23
28
|
- Run tests and linter to ensure everything is working
|
24
29
|
- Update the version number in `lib/ivar/version.rb`
|
25
30
|
- Update the `CHANGELOG.md` file with the new version and date
|
26
31
|
- Commit these changes
|
27
32
|
- Create a git tag for the new version
|
28
|
-
|
29
|
-
|
30
|
-
git push origin main && git push origin v{version}
|
31
|
-
```
|
32
|
-
5. The GitHub Actions workflow will automatically:
|
33
|
+
- Push the changes and tag to GitHub (unless `--no-push` is specified)
|
34
|
+
4. The GitHub Actions workflow will automatically:
|
33
35
|
- Build the gem
|
34
36
|
- Run tests
|
35
37
|
- Publish the gem to RubyGems.org
|
data/lib/ivar/version.rb
CHANGED
data/script/release
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
# Usage: script/release [major|minor|patch] [options]
|
6
6
|
#
|
7
7
|
# Options:
|
8
|
-
# --yes, -y
|
8
|
+
# --yes, -y Skip confirmation prompt
|
9
|
+
# --no-push Skip pushing changes to remote repository
|
9
10
|
|
10
11
|
require "bundler/gem_tasks"
|
11
12
|
require_relative "../lib/ivar/version"
|
@@ -84,16 +85,70 @@ def clean_build_artifacts
|
|
84
85
|
end
|
85
86
|
end
|
86
87
|
|
87
|
-
def
|
88
|
+
def check_for_uncommitted_changes
|
89
|
+
info "Checking for uncommitted changes..."
|
90
|
+
uncommitted_changes = `git status --porcelain`.strip
|
91
|
+
|
92
|
+
if uncommitted_changes.empty?
|
93
|
+
info "No uncommitted changes detected."
|
94
|
+
false
|
95
|
+
else
|
96
|
+
info "Uncommitted changes detected:"
|
97
|
+
puts uncommitted_changes
|
98
|
+
true
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def commit_remaining_changes(new_version)
|
103
|
+
info "Committing remaining changes after release process..."
|
104
|
+
system("git add --all")
|
105
|
+
system("git commit -m \"Post-release cleanup for v#{new_version}\"")
|
106
|
+
info "Remaining changes committed."
|
107
|
+
end
|
108
|
+
|
109
|
+
def push_changes_and_tag(new_version)
|
110
|
+
# Check for any uncommitted changes before pushing
|
111
|
+
has_uncommitted_changes = check_for_uncommitted_changes
|
112
|
+
|
113
|
+
# If there are uncommitted changes, commit them
|
114
|
+
if has_uncommitted_changes
|
115
|
+
commit_remaining_changes(new_version)
|
116
|
+
end
|
117
|
+
|
118
|
+
info "Pushing changes to remote repository..."
|
119
|
+
system("git push origin main") || error("Failed to push changes to remote repository.")
|
120
|
+
|
121
|
+
info "Pushing tag v#{new_version} to remote repository..."
|
122
|
+
system("git push origin v#{new_version}") || error("Failed to push tag to remote repository.")
|
123
|
+
|
124
|
+
success "Changes and tag pushed successfully!"
|
125
|
+
end
|
126
|
+
|
127
|
+
def update_gemfile_lock
|
128
|
+
info "Updating Gemfile.lock with new version..."
|
129
|
+
system("bundle install") || error("Failed to update Gemfile.lock. Run 'bundle install' manually and try again.")
|
130
|
+
info "Gemfile.lock updated successfully."
|
131
|
+
end
|
132
|
+
|
133
|
+
def commit_and_tag(new_version, skip_push = false)
|
88
134
|
info "Committing version bump..."
|
89
|
-
|
135
|
+
|
136
|
+
# Add all relevant files to staging
|
137
|
+
system("git add lib/ivar/version.rb CHANGELOG.md Gemfile.lock")
|
138
|
+
|
139
|
+
# Commit the changes
|
90
140
|
system("git commit -m \"Bump version to #{new_version}\"")
|
91
141
|
|
92
142
|
info "Creating tag v#{new_version}..."
|
93
143
|
system("git tag -a v#{new_version} -m \"Version #{new_version}\"")
|
94
144
|
|
95
|
-
|
96
|
-
|
145
|
+
if skip_push
|
146
|
+
info "Skipping push to remote repository."
|
147
|
+
info "To push the new version manually, run:"
|
148
|
+
puts " git push origin main && git push origin v#{new_version}"
|
149
|
+
else
|
150
|
+
push_changes_and_tag(new_version)
|
151
|
+
end
|
97
152
|
end
|
98
153
|
|
99
154
|
# Main script
|
@@ -102,6 +157,7 @@ error "Please specify a version bump type: major, minor, or patch" if ARGV.empty
|
|
102
157
|
# Parse arguments
|
103
158
|
args = ARGV.dup
|
104
159
|
skip_confirmation = args.delete("--yes") || args.delete("-y")
|
160
|
+
skip_push = args.delete("--no-push")
|
105
161
|
bump_type = args[0].downcase if args[0]
|
106
162
|
|
107
163
|
error "Please specify a version bump type: major, minor, or patch" unless bump_type
|
@@ -126,9 +182,32 @@ if confirmation == "y"
|
|
126
182
|
run_linter
|
127
183
|
update_version_file(new_version)
|
128
184
|
update_changelog(new_version)
|
129
|
-
|
185
|
+
update_gemfile_lock
|
186
|
+
commit_and_tag(new_version, skip_push)
|
130
187
|
success "Version bumped to #{new_version}!"
|
131
|
-
|
188
|
+
|
189
|
+
if skip_push
|
190
|
+
success "Remember to push changes manually to trigger the release workflow."
|
191
|
+
else
|
192
|
+
success "Release workflow triggered!"
|
193
|
+
|
194
|
+
# Final check for any remaining uncommitted changes
|
195
|
+
if check_for_uncommitted_changes
|
196
|
+
info "There are still uncommitted changes after the release process."
|
197
|
+
puts "Would you like to commit and push these changes? (y/n)"
|
198
|
+
cleanup_confirmation = $stdin.gets.chomp.downcase
|
199
|
+
|
200
|
+
if cleanup_confirmation == "y"
|
201
|
+
commit_remaining_changes(new_version)
|
202
|
+
system("git push origin main") || error("Failed to push cleanup changes.")
|
203
|
+
success "Post-release cleanup completed and pushed successfully!"
|
204
|
+
else
|
205
|
+
info "Uncommitted changes left in working directory."
|
206
|
+
end
|
207
|
+
else
|
208
|
+
success "Working directory is clean. Release completed successfully!"
|
209
|
+
end
|
210
|
+
end
|
132
211
|
else
|
133
212
|
info "Release cancelled."
|
134
213
|
end
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ivar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Avdi Grimm
|
8
|
+
autorequire:
|
8
9
|
bindir: bin
|
9
10
|
cert_chain: []
|
10
|
-
date:
|
11
|
+
date: 2025-05-07 00:00:00.000000000 Z
|
11
12
|
dependencies:
|
12
13
|
- !ruby/object:Gem::Dependency
|
13
14
|
name: prism
|
@@ -78,7 +79,6 @@ files:
|
|
78
79
|
- hooks/README.md
|
79
80
|
- hooks/install.sh
|
80
81
|
- hooks/pre-commit
|
81
|
-
- ivar.gemspec
|
82
82
|
- lib/ivar.rb
|
83
83
|
- lib/ivar/check_all.rb
|
84
84
|
- lib/ivar/check_all_manager.rb
|
@@ -114,6 +114,7 @@ metadata:
|
|
114
114
|
homepage_uri: https://github.com/avdi/ivar
|
115
115
|
source_code_uri: https://github.com/avdi/ivar
|
116
116
|
changelog_uri: https://github.com/avdi/ivar/blob/main/CHANGELOG.md
|
117
|
+
post_install_message:
|
117
118
|
rdoc_options: []
|
118
119
|
require_paths:
|
119
120
|
- lib
|
@@ -128,7 +129,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
129
|
- !ruby/object:Gem::Version
|
129
130
|
version: '0'
|
130
131
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
132
|
+
rubygems_version: 3.5.3
|
133
|
+
signing_key:
|
132
134
|
specification_version: 4
|
133
135
|
summary: Automatically check instance variables for typos.
|
134
136
|
test_files: []
|
data/ivar.gemspec
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "lib/ivar/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "ivar"
|
7
|
-
spec.version = Ivar::VERSION
|
8
|
-
spec.authors = ["Avdi Grimm"]
|
9
|
-
spec.email = ["avdi@avdi.codes"]
|
10
|
-
|
11
|
-
spec.summary = "Automatically check instance variables for typos."
|
12
|
-
spec.description = <<~DESCRIPTION
|
13
|
-
Ruby instance variables are so convenient - you don't even need to declare them!
|
14
|
-
But... they are also dangerous, because a mispelled variable name results in `nil`
|
15
|
-
instead of an error.
|
16
|
-
|
17
|
-
Why not have the best of both worlds? Ivar lets you use plain-old instance variables,
|
18
|
-
and automatically checks for typos.
|
19
|
-
|
20
|
-
Ivar waits until an instance is created to do the checking, then uses Prism to look
|
21
|
-
for variables that don't match what was set in initialization. So it's a little bit
|
22
|
-
dynamic, a little bit static. It doesn't encumber your instance variable reads and
|
23
|
-
writes with any extra checking. And with the `:warn_once` policy, it won't overwhelm
|
24
|
-
you with output.
|
25
|
-
DESCRIPTION
|
26
|
-
|
27
|
-
spec.homepage = "https://github.com/avdi/ivar"
|
28
|
-
spec.license = "MIT"
|
29
|
-
spec.required_ruby_version = ">= 3.3.0"
|
30
|
-
|
31
|
-
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
32
|
-
|
33
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
34
|
-
spec.metadata["source_code_uri"] = "https://github.com/avdi/ivar"
|
35
|
-
spec.metadata["changelog_uri"] = "https://github.com/avdi/ivar/blob/main/CHANGELOG.md"
|
36
|
-
|
37
|
-
# Specify which files should be added to the gem when it is released.
|
38
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
39
|
-
spec.files = Dir.chdir(__dir__) do
|
40
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
41
|
-
(File.expand_path(f) == __FILE__) ||
|
42
|
-
f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor Gemfile]) ||
|
43
|
-
f.end_with?(".gem")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
spec.require_paths = ["lib"]
|
47
|
-
|
48
|
-
# Dependencies
|
49
|
-
spec.add_dependency "prism", "~> 1.2"
|
50
|
-
end
|