-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
109 lines (86 loc) · 2.63 KB
/
Rakefile
File metadata and controls
109 lines (86 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# frozen_string_literal: true
require 'rake/testtask'
desc 'Run tests for all gems'
task :test do
puts "\n=== Running tests for dotenvcrypt-core ==="
Dir.chdir('core') do
sh 'bundle exec rake test'
end
puts "\n=== Running tests for dotenvcrypt (CLI) ==="
Dir.chdir('cli') do
sh 'bundle exec rake test'
end
end
desc 'Build both gems'
task :build do
puts "\n=== Building dotenvcrypt-core ==="
Dir.chdir('core') do
sh 'gem build dotenvcrypt-core.gemspec'
end
puts "\n=== Building dotenvcrypt (CLI) ==="
Dir.chdir('cli') do
sh 'gem build dotenvcrypt.gemspec'
end
puts "\n✅ Both gems built successfully!"
puts 'Core gem: core/dotenvcrypt-core-*.gem'
puts 'CLI gem: cli/dotenvcrypt-*.gem'
end
desc 'Release both gems (build, tag, push to RubyGems)'
task :release do
require_relative 'core/lib/dotenvcrypt/core/version'
version = Dotenvcrypt::Core::VERSION
puts "\n=== Releasing version #{version} ==="
puts 'This will:'
puts ' 1. Build both gems'
puts " 2. Create a git tag v#{version}"
puts ' 3. Push the tag to GitHub'
puts ' 4. Push both gems to RubyGems'
puts ''
# Confirm before releasing
print 'Continue? (y/N): '
response = STDIN.gets.chomp
abort '❌ Release cancelled' unless response.downcase == 'y'
# Release core first (CLI depends on it)
puts "\n=== Releasing dotenvcrypt-core #{version} ==="
Dir.chdir('core') do
sh 'bundle exec rake release'
end
puts "\n=== Releasing dotenvcrypt (CLI) #{version} ==="
Dir.chdir('cli') do
sh 'bundle exec rake release'
end
puts "\n✅ Both gems released successfully!"
puts "🎉 Version #{version} is now live on RubyGems!"
end
desc 'Clean built gems'
task :clean do
puts 'Cleaning built gems...'
FileUtils.rm_f(Dir.glob('core/*.gem'))
FileUtils.rm_f(Dir.glob('cli/*.gem'))
puts '✅ Clean complete'
end
desc 'Install both gems locally'
task install: :build do
require_relative 'core/lib/dotenvcrypt/core/version'
version = Dotenvcrypt::Core::VERSION
core_gem = "core/dotenvcrypt-core-#{version}.gem"
cli_gem = "cli/dotenvcrypt-#{version}.gem"
puts "\n=== Installing dotenvcrypt-core locally ==="
sh "gem install #{core_gem}"
puts "\n=== Installing dotenvcrypt (CLI) locally ==="
sh "gem install #{cli_gem}"
puts "\n✅ Both gems installed locally!"
end
desc 'Bundle install for all gems'
task :bundle do
puts "\n=== Bundle install for dotenvcrypt-core ==="
Dir.chdir('core') do
sh 'bundle install'
end
puts "\n=== Bundle install for dotenvcrypt (CLI) ==="
Dir.chdir('cli') do
sh 'bundle install'
end
puts "\n✅ Bundle install complete for all gems!"
end
task default: :test