Class: Berry::GemTasks
- Inherits:
-
Object
- Object
- Berry::GemTasks
- Includes:
- Rake::DSL
- Defined in:
- lib/berry/gem_tasks.rb
Class Method Summary collapse
Instance Method Summary collapse
- #build_gem ⇒ Object
- #built_gem_path(dir = nil) ⇒ Object
- #cleanup ⇒ Object
-
#initialize ⇒ GemTasks
constructor
A new instance of GemTasks.
- #install ⇒ Object
- #install_gem ⇒ Object
- #pkg ⇒ Object
- #pkg_file ⇒ Object
- #push_gem ⇒ Object
- #sh(cmd) ⇒ Object
- #uninstall_gem ⇒ Object
- #yank_gem ⇒ Object
Constructor Details
#initialize ⇒ GemTasks
Returns a new instance of GemTasks.
16 17 18 19 20 |
# File 'lib/berry/gem_tasks.rb', line 16 def initialize @path = Path(Dir.pwd, :recursive => true, :short => false) @gemspec = @path.find(".gemspec") raise "Unable to locate .gemspec file" unless @gemspec end |
Class Method Details
.install_tasks! ⇒ Object
12 13 14 |
# File 'lib/berry/gem_tasks.rb', line 12 def self.install_tasks! new.install end |
Instance Method Details
#build_gem ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/berry/gem_tasks.rb', line 54 def build_gem sh "gem build #{@gemspec}" FileUtils.mkdir_p @path.join("pkg").current FileUtils.mv(built_gem_path, [@path.join("pkg").current, pkg_file].join("/")) puts "#{pkg.name} (#{pkg.version}) built to pkg/#{pkg_file}" built_gem_path("pkg") end |
#built_gem_path(dir = nil) ⇒ Object
97 98 99 |
# File 'lib/berry/gem_tasks.rb', line 97 def built_gem_path(dir = nil) dir ? @path.reload.join(dir).find(pkg_file) : @path.reload.find(pkg_file) end |
#cleanup ⇒ Object
84 85 86 87 |
# File 'lib/berry/gem_tasks.rb', line 84 def cleanup sh "rm -rf pkg/" puts "pkg/ removed" end |
#install ⇒ Object
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 |
# File 'lib/berry/gem_tasks.rb', line 22 def install desc "Build #{pkg_file} into the pkg/ directory" task 'build' do build_gem end desc "Install #{pkg_file} into your system" task 'install' do install_gem end desc "Push your #{pkg_file} to RubyGems.org" task 'push' do push_gem end desc "Yank #{pkg_file} from RubyGems" task 'yank' do yank_gem end desc "Uninstall #{pkg_file}" task 'uninstall' do uninstall_gem end desc "Clean up pkg files" task 'clean' do cleanup end end |
#install_gem ⇒ Object
62 63 64 65 66 67 |
# File 'lib/berry/gem_tasks.rb', line 62 def install_gem gem_file = build_gem out, _ = sh "gem install #{gem_file}" raise "Unable to install #{pkg_file}, run `gem install #{pkg_file}` for more details" unless out[/Successfully installed/] puts "#{pkg.name} (#{pkg.version}) installed" end |
#pkg ⇒ Object
89 90 91 |
# File 'lib/berry/gem_tasks.rb', line 89 def pkg @package ||= Gem::Specification.load(@gemspec) end |
#pkg_file ⇒ Object
93 94 95 |
# File 'lib/berry/gem_tasks.rb', line 93 def pkg_file "#{pkg.name}-#{pkg.version}.gem" end |
#push_gem ⇒ Object
79 80 81 82 |
# File 'lib/berry/gem_tasks.rb', line 79 def push_gem sh "gem push #{built_gem_path("pkg")}" puts "#{pkg.name} (#{pkg.version}) pushed to RubyGems" end |
#sh(cmd) ⇒ Object
101 102 103 104 105 106 107 108 |
# File 'lib/berry/gem_tasks.rb', line 101 def sh(cmd) cmd << " 2>&1" out = '' Dir.chdir(@path.current) do out = `#{cmd}` end [out, $?] end |
#uninstall_gem ⇒ Object
74 75 76 77 |
# File 'lib/berry/gem_tasks.rb', line 74 def uninstall_gem sh "gem unstall #{pkg.name} -v #{pkg.version}" puts "#{pkg.name} (#{pkg.version}) uninstalled" end |
#yank_gem ⇒ Object
69 70 71 72 |
# File 'lib/berry/gem_tasks.rb', line 69 def yank_gem sh "gem yank #{pkg.name} -v #{pkg.version}" puts "#{pkg.name} (#{pkg.version}) yanked from RubyGems" end |