Sha256: 92594f9a9f1e16240fec6f1217e0e3975863f589d05e1ba9eeb22b9397cc9781

Contents?: true

Size: 1.2 KB

Versions: 5

Compression:

Stored size: 1.2 KB

Contents

require 'thor'
require 'pathname'
require 'rugged'
require 'thegarage/gitx'

module Thegarage
  module Gitx
    module Cli
      class BaseCommand < Thor
        include Thor::Actions

        class MergeError < Thor::Error; end

        AGGREGATE_BRANCHES = %w( staging prototype )
        RESERVED_BRANCHES = %w( HEAD master next_release ) + AGGREGATE_BRANCHES
        add_runtime_options!

        method_option :trace, :type => :boolean, :aliases => '-v'
        def initialize(*args)
          super(*args)
        end

        private

        def repo
          @repo ||= begin
            path = Dir.pwd
            Rugged::Repository.discover(path)
          end
        end

        def checkout_branch(branch_name)
          run_cmd "git checkout #{branch_name}"
        end

        # lookup the current branch of the repo
        def current_branch
          repo.branches.find(&:head?)
        end

        def aggregate_branch?(branch)
          AGGREGATE_BRANCHES.include?(branch)
        end

        def assert_not_protected_branch!(branch, action)
          raise "Cannot #{action} reserved branch" if RESERVED_BRANCHES.include?(branch) || aggregate_branch?(branch)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
thegarage-gitx-2.7.1 lib/thegarage/gitx/cli/base_command.rb
thegarage-gitx-2.7.0 lib/thegarage/gitx/cli/base_command.rb
thegarage-gitx-2.6.0 lib/thegarage/gitx/cli/base_command.rb
thegarage-gitx-2.5.1 lib/thegarage/gitx/cli/base_command.rb
thegarage-gitx-2.5.0 lib/thegarage/gitx/cli/base_command.rb