defaults for things in environments
This commit is contained in:
parent
08803b76ce
commit
98239ee141
@ -195,7 +195,6 @@ Feature: Gemfiles
|
|||||||
gem "one", "1.2.3", {:path=>"../one"}
|
gem "one", "1.2.3", {:path=>"../one"}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@wip
|
|
||||||
Scenario: Propose defaults for an array of gems
|
Scenario: Propose defaults for an array of gems
|
||||||
Given I have the file "Gemfile.penchant" with the content:
|
Given I have the file "Gemfile.penchant" with the content:
|
||||||
"""
|
"""
|
||||||
@ -208,3 +207,18 @@ Feature: Gemfiles
|
|||||||
# generated by penchant, environment: local
|
# generated by penchant, environment: local
|
||||||
gem "one", "1.2.3", {:path=>"../one"}
|
gem "one", "1.2.3", {:path=>"../one"}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
Scenario: Propose defaults for an environment
|
||||||
|
Given I have the file "Gemfile.penchant" with the content:
|
||||||
|
"""
|
||||||
|
defaults_for env(:local), :path => '../%s'
|
||||||
|
env :local do
|
||||||
|
gem 'one', '1.2.3'
|
||||||
|
end
|
||||||
|
"""
|
||||||
|
When I rebuild the Gemfile for "local" mode
|
||||||
|
Then the file "Gemfile" should have the following content:
|
||||||
|
"""
|
||||||
|
# generated by penchant, environment: local
|
||||||
|
gem "one", "1.2.3", {:path=>"../one"}
|
||||||
|
"""
|
||||||
|
@ -83,6 +83,22 @@ module Penchant
|
|||||||
gemfile_header['deployment mode'] != nil
|
gemfile_header['deployment mode'] != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class Env
|
||||||
|
attr_accessor :name
|
||||||
|
|
||||||
|
def initialize(name)
|
||||||
|
@name = name.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def ==(other)
|
||||||
|
@name == other.name
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
"@#{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class FileProcessor
|
class FileProcessor
|
||||||
attr_reader :environment, :is_deployment, :available_environments, :defined_git_repos
|
attr_reader :environment, :is_deployment, :available_environments, :defined_git_repos
|
||||||
|
|
||||||
@ -103,6 +119,8 @@ module Penchant
|
|||||||
@available_environments = []
|
@available_environments = []
|
||||||
@defined_git_repos = []
|
@defined_git_repos = []
|
||||||
@defaults = {}
|
@defaults = {}
|
||||||
|
|
||||||
|
@_current_env_defaults = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
def result(_env, _is_deployment)
|
def result(_env, _is_deployment)
|
||||||
@ -119,7 +137,15 @@ module Penchant
|
|||||||
def env(*args)
|
def env(*args)
|
||||||
@available_environments += args
|
@available_environments += args
|
||||||
|
|
||||||
yield if args.include?(environment)
|
if block_given?
|
||||||
|
if args.include?(environment)
|
||||||
|
@_current_env_defaults = _defaults_for(Env.new(environment))
|
||||||
|
yield
|
||||||
|
@_current_env_defaults = {}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Penchant::Gemfile::Env.new(args.shift)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def no_deployment
|
def no_deployment
|
||||||
@ -170,7 +196,8 @@ module Penchant
|
|||||||
end
|
end
|
||||||
|
|
||||||
def _defaults_for(gem_name)
|
def _defaults_for(gem_name)
|
||||||
@defaults[gem_name.to_s] || {}
|
result = @_current_env_defaults
|
||||||
|
result.merge(@defaults[gem_name.to_s] || {})
|
||||||
end
|
end
|
||||||
|
|
||||||
def current_os
|
def current_os
|
||||||
|
Loading…
Reference in New Issue
Block a user