File tree Expand file tree Collapse file tree 3 files changed +40
-1
lines changed
Expand file tree Collapse file tree 3 files changed +40
-1
lines changed Original file line number Diff line number Diff line change 99
1010requires 'bashly/settings'
1111requires 'bashly/exceptions'
12+ requires 'bashly/refinements'
1213requires 'bashly/script/base'
1314requires 'bashly/commands/base'
1415requires 'bashly/libraries/base'
Original file line number Diff line number Diff line change 11module Bashly
22 module Commands
33 class Generate < Base
4+ using ComposeRefinements
5+
46 help "Generate the bash script and required files"
57
68 usage "bashly generate [--force --quiet --upgrade --wrap FUNCTION]"
@@ -116,7 +118,7 @@ def master_script_path
116118 end
117119
118120 def config
119- @config ||= Config . new "#{ Settings . source_dir } /bashly.yml"
121+ @config ||= Config . new ( "#{ Settings . source_dir } /bashly.yml" ) . compose
120122 end
121123
122124 def command
Original file line number Diff line number Diff line change 1+ require 'yaml'
2+
3+ module ComposeRefinements
4+ refine Hash do
5+ def compose ( keyword = 'load' )
6+ result = { }
7+ each do |k , v |
8+ if k . to_s == keyword
9+ sub = YAML . load_file ( v ) . compose keyword
10+ if sub . is_a? Array
11+ result = sub
12+ else
13+ result . merge! sub
14+ end
15+ elsif v . respond_to? :compose
16+ result [ k ] = v . compose keyword
17+ else
18+ result [ k ] = v
19+ end
20+ end
21+ result
22+ end
23+ end
24+
25+ refine Array do
26+ def compose ( keyword = 'load' )
27+ map do |x |
28+ if x . respond_to? :compose
29+ x . compose keyword
30+ else
31+ x
32+ end
33+ end
34+ end
35+ end
36+ end
You can’t perform that action at this time.
0 commit comments