Sha256: 9d8c01eb3ce142959dbb5e821ea4bc9d1dee32fabad9981e5dfd6c39fdce93c1

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

module Command
  class Repository
    def initialize(project)
      @project = project
      @cmds = []
    end

    def add(cmd, options = {})
      @cmds << cmd.new(rvm_prefix, options)
    end

    def execute
      with_transaction do |trash|
        while @cmds.any?
          command = @cmds.shift
          puts(command.name.brown)

          command.execute
          trash.unshift(command)
        end
      end

      puts 'Success bump current gem!'.green
    end

    private

    attr_reader :project

    def rvm_prefix
      if project.gemset
        "rvm #{ project.gemset } exec "
      end
    end

    def with_transaction
      trash = []
      wrapper = Command::StashGemfileLockCommand.new
      begin
        wrapper.execute
        yield(trash)
      rescue Exception => e
        trash.each(&:cancel)
        puts 'Fail bump current gem'.red
        raise Command::ExecuteError
      ensure
        wrapper.cancel
      end
    end
  end
end

class String
  def red;   "\033[31m#{self}\033[0m" end
  def green; "\033[32m#{self}\033[0m" end
  def brown; "\033[33m#{self}\033[0m" end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pumper-1.3.0 lib/command/repository.rb
pumper-1.2.0 lib/command/repository.rb