@@ -19,9 +19,13 @@ task :"lint:fix" do
1919 sh "bundle exec standardrb --fix"
2020end
2121
22- desc "Remove all ignored files (coverage, pkg, etc.)"
22+ desc "Remove Ruby build artifacts (coverage, pkg, gems , etc.)"
2323task :clean do
24- sh "git clean -fdX"
24+ FileUtils . rm_rf ( "pkg" )
25+ FileUtils . rm_rf ( "coverage" )
26+ FileUtils . rm_rf ( "tmp" )
27+ FileUtils . rm_f ( Dir . glob ( "*.gem" ) )
28+ FileUtils . rm_f ( "changelog.md" )
2529end
2630
2731desc "Run all examples"
@@ -39,6 +43,11 @@ task :examples do
3943 end
4044end
4145
46+ desc "Build the gem"
47+ task build : [ :clean ] do
48+ sh "gem build braintrust.gemspec"
49+ end
50+
4251desc "Verify CI (lint + test)"
4352task ci : [ :lint , :test ]
4453
@@ -51,19 +60,18 @@ namespace :release do
5160 sh "bash scripts/validate-release-tag.sh"
5261 end
5362
54- desc "Build the gem"
55- task build : [ :clean ] do
56- sh "gem build braintrust.gemspec"
57- end
58-
5963 desc "Publish gem to RubyGems (requires authentication)"
6064 task :publish do
61- gem_file = FileList [ "braintrust-*.gem" ] . first
62- unless gem_file
63- puts "Error: No gem file found. Run 'rake release:build' first."
65+ gem_files = FileList [ "braintrust-*.gem" ]
66+ if gem_files . empty?
67+ puts "Error: No gem file found. Run 'rake build' first."
68+ exit 1
69+ elsif gem_files . length > 1
70+ puts "Error: Multiple gem files found. Run 'rake clean' first."
71+ puts "Found: #{ gem_files . join ( ", " ) } "
6472 exit 1
6573 end
66- sh "gem push #{ gem_file } "
74+ sh "gem push #{ gem_files . first } "
6775 end
6876
6977 desc "Generate changelog for release"
@@ -111,7 +119,7 @@ namespace :release do
111119
112120 begin
113121 # Build and publish
114- Rake ::Task [ "release: build" ] . invoke
122+ Rake ::Task [ "build" ] . invoke
115123 Rake ::Task [ "release:publish" ] . invoke
116124 puts "✓ Prerelease #{ prerelease_version } published successfully!"
117125 ensure
@@ -123,6 +131,6 @@ namespace :release do
123131end
124132
125133desc "Full release: validate, lint, generate changelog, build, publish, and create GitHub release"
126- task release : [ "release:validate" , :lint , "release:changelog" , "release :build" , "release:publish" , "release:github" ] do
134+ task release : [ "release:validate" , :lint , "release:changelog" , :build , "release:publish" , "release:github" ] do
127135 puts "✓ Release completed successfully!"
128136end
0 commit comments