11# frozen_string_literal: true
22
3- require "bundler/gem_tasks"
43require "rspec/core/rake_task"
54require "json"
65
@@ -10,18 +9,19 @@ task default: :spec
109
1110Dir . 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
110121end
0 commit comments