Sha256: 9331e7a141de918ba852c1bcbbed17ca268c0b81af02fc07f1ef8e640b83184c

Contents?: true

Size: 1.49 KB

Versions: 17

Compression:

Stored size: 1.49 KB

Contents

# frozen_string_literal: true

module Lolcommits
  #
  # Methods to handle enabling and disabling of lolcommits
  #
  class Installation
    def self.backend
      if GitInfo.repo_root?
        InstallationGit
      elsif MercurialInfo.repo_root?
        InstallationMercurial
      else
        fatal "You don't appear to be in the base directory of a supported vcs project."
        exit 1
      end
    end

    #
    # IF --ENABLE, DO ENABLE
    #
    def self.do_enable(options = {})
      capture_args = extract_capture_args(options)
      path         = backend.do_enable(capture_args)

      info 'installed lolcommit hook to:'
      info "  -> #{File.expand_path(path)}"
      info '(to remove later, you can use: lolcommits --disable)'
      # we dont symlink, but rather install a small stub that calls the one from path
      # that way, as gem version changes, script updates even if new file thus breaking symlink
    end

    #
    # IF --DISABLE, DO DISABLE
    #
    def self.do_disable
      backend.do_disable
    end

    # Extract any command line capture args from the parsed options hash, will
    # be appended to the capture command within the commit hook script
    #
    # @return [String]
    def self.extract_capture_args(options)
      options.map do |k, v|
        next unless %w(device animate delay stealth fork).include?(k)

        if k == 'device'
          "--device '#{v}'"
        else
          "--#{k}#{v == true ? '' : " #{v}"}"
        end
      end.compact.join(' ')
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
lolcommits-0.17.2 lib/lolcommits/installation.rb
lolcommits-0.17.1 lib/lolcommits/installation.rb
lolcommits-0.17.0 lib/lolcommits/installation.rb
lolcommits-0.16.5 lib/lolcommits/installation.rb
lolcommits-0.16.4 lib/lolcommits/installation.rb
lolcommits-0.16.3 lib/lolcommits/installation.rb
lolcommits-0.16.2 lib/lolcommits/installation.rb
lolcommits-0.16.1 lib/lolcommits/installation.rb
lolcommits-0.16.0 lib/lolcommits/installation.rb
lolcommits-0.16.0.pre1 lib/lolcommits/installation.rb
lolcommits-0.15.1 lib/lolcommits/installation.rb
lolcommits-0.15.0 lib/lolcommits/installation.rb
lolcommits-0.14.2 lib/lolcommits/installation.rb
lolcommits-0.14.1 lib/lolcommits/installation.rb
lolcommits-0.14.0 lib/lolcommits/installation.rb
lolcommits-0.13.1 lib/lolcommits/installation.rb
lolcommits-0.13.0 lib/lolcommits/installation.rb