Sha256: 2eed7bea14015a996f3eacad9e1f2707562e5deddea1fc485b2ec17b59bdcb1d

Contents?: true

Size: 1.36 KB

Versions: 41

Compression:

Stored size: 1.36 KB

Contents

require 'thor'
require 'pathname'
require 'rugged'
require 'gitx'

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

      class MergeError < Thor::Error; end

      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 assert_aggregate_branch!(target_branch)
        fail "Invalid aggregate branch: #{target_branch} must be one of supported aggregate branches #{config.aggregate_branches}" unless config.aggregate_branch?(target_branch)
      end

      def assert_not_protected_branch!(branch, action)
        fail "Cannot #{action} reserved branch" if config.reserved_branch?(branch) || config.aggregate_branch?(branch)
      end

      # helper to invoke other CLI commands
      def execute_command(command_class, method, args = [])
        command_class.new.send(method, *args)
      end

      def config
        @configuration ||= Gitx::Configuration.new(repo.workdir)
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
gitx-2.21.2.ci.130.1 lib/gitx/cli/base_command.rb
gitx-2.21.2 lib/gitx/cli/base_command.rb
gitx-2.21.1.ci.125.1 lib/gitx/cli/base_command.rb
gitx-2.21.1 lib/gitx/cli/base_command.rb
gitx-2.21.0.ci.121.1 lib/gitx/cli/base_command.rb
gitx-2.21.0 lib/gitx/cli/base_command.rb
gitx-2.20.0 lib/gitx/cli/base_command.rb
gitx-2.20.0.ci.117.1 lib/gitx/cli/base_command.rb
gitx-2.19.0.ci.114.1 lib/gitx/cli/base_command.rb
gitx-2.19.0.ci.112.1 lib/gitx/cli/base_command.rb
gitx-2.19.0 lib/gitx/cli/base_command.rb
gitx-2.18.0.ci.106.1 lib/gitx/cli/base_command.rb
gitx-2.18.0 lib/gitx/cli/base_command.rb
gitx-2.18.0.pre.ci.104.1 lib/gitx/cli/base_command.rb
gitx-2.18.0.pre lib/gitx/cli/base_command.rb
gitx-2.17.0.pre.ci.101.1 lib/gitx/cli/base_command.rb
gitx-2.17.0.pre lib/gitx/cli/base_command.rb
gitx-2.17.0.pre.ci.98.1 lib/gitx/cli/base_command.rb
gitx-2.16.0.ci.91.1 lib/gitx/cli/base_command.rb
gitx-2.16.0 lib/gitx/cli/base_command.rb