Skip to content

Commit a58df1a

Browse files
committed
- Add ability to import external snippets in bashly.yml
1 parent a300f72 commit a58df1a

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

lib/bashly.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
requires 'bashly/settings'
1111
requires 'bashly/exceptions'
12+
requires 'bashly/refinements'
1213
requires 'bashly/script/base'
1314
requires 'bashly/commands/base'
1415
requires 'bashly/libraries/base'

lib/bashly/commands/generate.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module 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
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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

0 commit comments

Comments
 (0)