make converted gemfiles more useful out of the box
This commit is contained in:
parent
df0154a225
commit
3ef5122246
@ -92,6 +92,12 @@ It then runs `bundle install`.
|
||||
You can also run `penchant gemfile ENV`. Just straight `penchant gemfile` will rebuild the `Gemfile` from
|
||||
`Gemfile.penchant` for whatever environment the `Gemfile` is currently using.
|
||||
|
||||
If you have an existing project, `penchant convert` will convert the `Gemfile` into a `Gemfile.penchant`
|
||||
and add some bonuses, like defining that anything in `env :local` blocks automatically reference `..`,
|
||||
ensuring that hooks are always installed when `penchant gemfile` is executed, and adding the `:github` gem property
|
||||
that lets you pass in the username of the repo to reference that repo:
|
||||
`gem 'penchant', :github => 'johnbintz'`.
|
||||
|
||||
### Deployment mode
|
||||
|
||||
Use `no_deployment` blocks to indicate gems that shouldn't even appear in `Gemfiles` destined for
|
||||
|
11
bin/penchant
11
bin/penchant
@ -36,6 +36,17 @@ class PenchantCLI < Thor
|
||||
def convert
|
||||
install
|
||||
FileUtils.mv 'Gemfile', 'Gemfile.penchant'
|
||||
prepend_to_file 'Gemfile.penchant', <<-RB
|
||||
# ensure git hooks are always installed
|
||||
ensure_git_hooks!
|
||||
|
||||
# everything in the :local env is assumed to be a sibling directory of this one
|
||||
defaults_for env(:local), :path => '../%s'
|
||||
|
||||
# reference a github repository with gem 'my-gem', :github => 'username'
|
||||
property :github, :git => 'git://github.com/$1/%s.git'
|
||||
|
||||
RB
|
||||
gemfile(:remote)
|
||||
end
|
||||
|
||||
|
@ -22,7 +22,7 @@ Feature: CLI
|
||||
source :rubygems
|
||||
"""
|
||||
When I run "bin/penchant convert" in the "tmp" directory
|
||||
Then the file "tmp/Gemfile.penchant" should have the following content:
|
||||
Then the file "tmp/Gemfile.penchant" should include the following content:
|
||||
"""
|
||||
source :rubygems
|
||||
"""
|
||||
|
@ -0,0 +1,3 @@
|
||||
Then /^the file "(.*?)" should include the following content:$/ do |file, string|
|
||||
File.read(file).should include(string)
|
||||
end
|
@ -21,12 +21,18 @@ module Penchant
|
||||
end
|
||||
|
||||
def self.install!
|
||||
if git?
|
||||
puts "[penchant] installing git hooks"
|
||||
|
||||
Dir['script/hooks/*'].each do |hook|
|
||||
FileUtils.ln_sf File.join(Dir.pwd, hook), ".git/hooks/#{File.split(hook).last}"
|
||||
FileUtils.ln_sf File.join(Dir.pwd, hook), "#{GIT_HOOKS_DIR}/#{File.split(hook).last}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.git?
|
||||
File.directory?(GIT_HOOKS_DIR)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
module Penchant
|
||||
VERSION = "0.2.16"
|
||||
VERSION = "0.2.17"
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user