Skip to content

Commit 276f1f0

Browse files
committed
fix: Improve release task and fix version conversion
- Remove bundler/gem_tasks to avoid conflicts with custom release task - Fix gem to npm version conversion for prerelease versions - Move tasks to demo_common namespace to avoid conflicts - Add proper indentation for namespace tasks - Successfully handles versions like 1.0.0.beta.1 -> 1.0.0-beta.1
1 parent 7e9e6f9 commit 276f1f0

File tree

1 file changed

+31
-20
lines changed

1 file changed

+31
-20
lines changed

Rakefile

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# frozen_string_literal: true
22

3-
require "bundler/gem_tasks"
43
require "rspec/core/rake_task"
54
require "json"
65

@@ -10,18 +9,19 @@ task default: :spec
109

1110
Dir.glob("lib/tasks/*.rake").each { |r| load r }
1211

13-
desc "Release both the gem and npm package using the given version.
12+
namespace :demo_common do
13+
desc "Release both the gem and npm package using the given version
1414
15-
IMPORTANT: the gem version must be in valid rubygem format (no dashes).
16-
It will be automatically converted to a valid npm semver by the rake task
17-
for the npm package version. This only makes a difference for pre-release
18-
versions such as `1.0.0.beta.1` (npm version would be `1.0.0-beta.1`).
15+
IMPORTANT: the gem version must be in valid rubygem format (no dashes).
16+
It will be automatically converted to a valid npm semver by the rake task
17+
for the npm package version. This only makes a difference for pre-release
18+
versions such as `1.0.0.beta.1` (npm version would be `1.0.0-beta.1`).
1919
20-
1st argument: The new version in rubygem format (no dashes).
21-
2nd argument: Perform a dry run by passing 'true' as a second argument.
20+
1st argument: The new version in rubygem format (no dashes).
21+
2nd argument: Perform a dry run by passing 'true' as a second argument.
2222
23-
Example: `rake release[1.2.0]` or `rake release[1.2.0,true]` for dry run"
24-
task :release, %i[gem_version dry_run] do |_t, args|
23+
Example: `rake demo_common:release[1.2.0]` or `rake demo_common:release[1.2.0,true]` for dry run"
24+
task :release, %i[gem_version dry_run] do |_t, args|
2525
require_relative "lib/react_on_rails_demo_common/version"
2626

2727
args_hash = args.to_hash
@@ -34,7 +34,17 @@ task :release, %i[gem_version dry_run] do |_t, args|
3434
end
3535

3636
# Convert gem version to npm version (e.g., 1.0.0.beta.1 -> 1.0.0-beta.1)
37-
npm_version = gem_version.gsub(".", "-", 3).gsub("-", ".", 2)
37+
# Only convert if it's a prerelease version
38+
npm_version = if gem_version.include?(".")
39+
parts = gem_version.split(".")
40+
if parts.length > 3 # prerelease version like 1.0.0.beta.1
41+
"#{parts[0]}.#{parts[1]}.#{parts[2]}-#{parts[3..-1].join('.')}"
42+
else
43+
gem_version
44+
end
45+
else
46+
gem_version
47+
end
3848

3949
puts "Releasing version #{gem_version} (npm: #{npm_version})#{is_dry_run ? ' [DRY RUN]' : ''}"
4050

@@ -96,15 +106,16 @@ task :release, %i[gem_version dry_run] do |_t, args|
96106
sh "git push origin v#{gem_version}"
97107
end
98108

99-
puts "\n✅ Successfully released version #{gem_version}!" unless is_dry_run
100-
puts "\n🎉 Dry run completed successfully!" if is_dry_run
101-
end
109+
puts "\n✅ Successfully released version #{gem_version}!" unless is_dry_run
110+
puts "\n🎉 Dry run completed successfully!" if is_dry_run
111+
end
102112

103-
desc "Display current versions"
104-
task :version do
105-
require_relative "lib/react_on_rails_demo_common/version"
106-
package_json = JSON.parse(File.read("package.json"))
113+
desc "Display current versions"
114+
task :version do
115+
require_relative "lib/react_on_rails_demo_common/version"
116+
package_json = JSON.parse(File.read("package.json"))
107117

108-
puts "Gem version: #{ReactOnRailsDemoCommon::VERSION}"
109-
puts "NPM version: #{package_json["version"]}"
118+
puts "Gem version: #{ReactOnRailsDemoCommon::VERSION}"
119+
puts "NPM version: #{package_json["version"]}"
120+
end
110121
end

0 commit comments

Comments
 (0)