Sha256: f9e2c2b17a483d7a5f071bb40dd503ac8f1a063fb0c75ad83e7fa4a9673e6457

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

#!/usr/bin/env ruby

require 'rubygems'
require 'thor'
require 'penchant'
require 'fileutils'

class PenchantCLI < Thor
  include Thor::Actions
  source_root File.expand_path('../..', __FILE__)

  desc "install", "Copy the common scripts to the project"
  method_options :dir => 'script'
  def install
    directory 'template/script', options[:dir]
    Dir[File.join(options[:dir], '**/*')].each { |file| File.chmod(0755, file) }

    Dir['script/hooks/*'].each do |hook|
      FileUtils.ln_sf File.join(Dir.pwd, hook), ".git/hooks/#{File.split(hook).last}"
    end
  end

  desc "update", "Update the installed scripts"
  method_options :dir => 'script'
  def update
    install
  end

  desc "convert", "Make an existing project Penchant-isized"
  method_options :dir => 'script'
  def convert
    install
    FileUtils.mv 'Gemfile', 'Gemfile.erb'
    gemfile(:remote)
  end

  method_options :deployment => false
  method_options :switch_back => false
  desc "gemfile ENV", "Switch the gemfile environment, or rebuild the current environment if not given"
  def gemfile(env = get_current_env)
    if env
      if options[:switch_back]
        puts "[penchant] Switching back, fallback: #{env}..."

        Penchant::Gemfile.switch_back!(env)
      else
        puts "[penchant] Rebunding for #{env} environment#{options[:deployment] ? ", deployment mode" : ''}..."

        Penchant::Gemfile.do_full_env_switch!(env, options[:deployment])
      end
    end

    gemfile = Penchant::Gemfile.new
    if !gemfile.has_gemfile?
      puts "No Gemfile or Gemfile.erb, exiting."
      exit 1
    end
    system %{bundle}
  end

  desc "gemfile-env", "Get the gemfile environment"
  def gemfile_env
    puts get_current_env
  end

  no_tasks do
    def get_current_env
      gemfile = Penchant::Gemfile.new
      out = [ gemfile.environment ]
      out << "deployment" if gemfile.deployment?
      out.join(' ')
    end
  end

  default_task :gemfile
end

PenchantCLI.start

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
penchant-0.1.2 bin/penchant
penchant-0.1.1 bin/penchant