opulent 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/opulent/exec.rb +43 -29
- data/lib/opulent/filters.rb +1 -1
- data/lib/opulent/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9300eb265cbd78d37b3320fa250ef12c91a2d54
|
4
|
+
data.tar.gz: 924c5d00c448dcf16a099273cac90dac1bfbdfdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d94c1b6835f811ad431a1eba7c3b2c5913d2c68ed900915343c1608227386f70d90fc92dbca90e2a72ca98bdf5da4057780a08342f82f0ec116a3f41ff03f26
|
7
|
+
data.tar.gz: efa2e8bfc1e6a552b54cf34ba0e67af139cca11751e505d22706631a38da93810ee4e9503d831453da68730564497813844a6275f18b6d4b6ba24224df4eeb21
|
data/lib/opulent/exec.rb
CHANGED
@@ -6,30 +6,34 @@ require 'opulent/version'
|
|
6
6
|
module Opulent
|
7
7
|
# @CLI
|
8
8
|
class CLI
|
9
|
-
|
9
|
+
EXTENSION = /\.(op|opl|opulent)\Z/
|
10
10
|
|
11
|
-
|
11
|
+
KEYWORDS = %w(context layout locals version help)
|
12
12
|
|
13
13
|
def initialize(arguments)
|
14
14
|
i = 0
|
15
15
|
|
16
|
+
layout_error = 'Missing input or incorrect file extension for ' \
|
17
|
+
'layout [-l] argument. '
|
18
|
+
layout_error += "Found #{arguments[i + 1]} instead." if arguments[i + 1]
|
19
|
+
|
16
20
|
while arguments[i]
|
17
21
|
case arguments[i]
|
18
22
|
|
19
23
|
# opulent input.op output.op
|
20
|
-
when
|
24
|
+
when EXTENSION
|
21
25
|
@input = arguments[i]
|
22
|
-
|
26
|
+
is_keyword = KEYWORDS.include? arguments[i + 1]
|
27
|
+
unless arguments[i + 1] =~ /\A\-/ || is_keyword
|
23
28
|
@output = arguments[(i += 1)]
|
24
29
|
end
|
25
30
|
|
26
31
|
# opulent -v
|
27
32
|
when '-l', 'layout'
|
28
|
-
if arguments[i + 1] =~
|
33
|
+
if arguments[i + 1] =~ EXTENSION
|
29
34
|
@layout = arguments[(i += 1)]
|
30
35
|
else
|
31
|
-
error
|
32
|
-
"#{"Found #{arguments[i+1]} instead." if arguments[i+1] }"
|
36
|
+
error layout_error
|
33
37
|
end
|
34
38
|
|
35
39
|
# opulent -v
|
@@ -40,14 +44,18 @@ module Opulent
|
|
40
44
|
# opulent -c
|
41
45
|
when '-c', 'context', '-lc', 'locals'
|
42
46
|
@locals_file = arguments[(i += 1)]
|
43
|
-
|
47
|
+
unless File.file? @locals_file
|
48
|
+
error "Given context file #{@locals_file.inspect} does not exist" \
|
49
|
+
' or an incorrect path has been specified.'
|
50
|
+
end
|
44
51
|
|
45
52
|
if File.extname(@locals_file) == '.json'
|
46
53
|
@locals = JSON.parse File.read(@locals_file), symbolize_keys: true
|
47
54
|
elsif File.extname(@locals_file) == '.yml'
|
48
55
|
@locals = YAML.load_file @locals_file
|
49
56
|
else
|
50
|
-
error "Unknown file extension #{@locals_file.inspect} given as
|
57
|
+
error "Unknown file extension #{@locals_file.inspect} given as" \
|
58
|
+
' locals file. Please use JSON or YAML as input.'
|
51
59
|
end
|
52
60
|
|
53
61
|
# opulent -h
|
@@ -63,30 +71,34 @@ module Opulent
|
|
63
71
|
|
64
72
|
if @input
|
65
73
|
@locals ||= {}
|
66
|
-
error "Given input file #{@input.inspect} does not exist or an incorrect path has been specified." unless File.file? @input
|
67
74
|
|
68
|
-
|
75
|
+
unless File.file? @input
|
76
|
+
error "Given input file #{@input.inspect} does not exist or " \
|
77
|
+
'an incorrect path has been specified.'
|
78
|
+
end
|
79
|
+
|
80
|
+
message = ''
|
69
81
|
opulent = Opulent.new
|
70
82
|
if @layout
|
71
|
-
output =
|
72
|
-
opulent.render_file(@layout, @locals)
|
73
|
-
opulent.render_file(@input, @locals){}
|
74
|
-
|
83
|
+
output = proc do
|
84
|
+
opulent.render_file(@layout, @locals) do
|
85
|
+
opulent.render_file(@input, @locals) {}
|
86
|
+
end
|
75
87
|
end[]
|
76
88
|
else
|
77
|
-
output =
|
89
|
+
output = proc do
|
78
90
|
opulent.render_file(@input, @locals)
|
79
91
|
end[]
|
80
92
|
end
|
81
93
|
|
82
94
|
if @output
|
83
|
-
File.open
|
84
|
-
message += "Successfully rendered #{@input.inspect}
|
85
|
-
|
95
|
+
File.open(@output, 'w') { |file| file.write output }
|
96
|
+
message += "Successfully rendered #{@input.inspect} " \
|
97
|
+
"to #{@output.inspect}."
|
86
98
|
else
|
87
99
|
message += "Successfully rendered #{@input.inspect}.\n\n"
|
88
|
-
|
89
|
-
|
100
|
+
message += 'No output file specified. Writing result to ' \
|
101
|
+
"terminal.\n\n#{output}"
|
90
102
|
end
|
91
103
|
|
92
104
|
write message
|
@@ -95,12 +107,16 @@ module Opulent
|
|
95
107
|
end
|
96
108
|
end
|
97
109
|
|
98
|
-
def help(
|
99
|
-
|
100
|
-
|
101
|
-
opulent
|
110
|
+
def help(_extra = '')
|
111
|
+
<<-HELP #{_extra} You can use the following commands with the Opulent
|
112
|
+
Command Line Interface: \n\n
|
113
|
+
opulent input.op output.op Render an input file and write the result to
|
114
|
+
the output file.\n
|
115
|
+
opulent layout [-l] layout.op Render an input file using given input
|
116
|
+
layout file.\n
|
102
117
|
opulent help [-h] Show available command line options.\n
|
103
118
|
opulent version [-v] Show installed version.\n"
|
119
|
+
HELP
|
104
120
|
end
|
105
121
|
|
106
122
|
# Give an explicit response for the given input arguments
|
@@ -110,8 +126,7 @@ opulent version [-v] Show installed version.\n"
|
|
110
126
|
def write(message)
|
111
127
|
# Reconstruct lines to display where errors occur
|
112
128
|
puts "\nOpulent " + Logger.green('[Engine]') +
|
113
|
-
|
114
|
-
"#{message}\n\n\n"
|
129
|
+
"\n---\n#{message}\n\n\n"
|
115
130
|
end
|
116
131
|
|
117
132
|
# Give an explicit error report where an unexpected sequence of tokens
|
@@ -122,8 +137,7 @@ opulent version [-v] Show installed version.\n"
|
|
122
137
|
def error(message)
|
123
138
|
# Reconstruct lines to display where errors occur
|
124
139
|
fail "\nOpulent " + Logger.red('[Engine]') +
|
125
|
-
|
126
|
-
"#{message}\n\n#{help}\n\n\n"
|
140
|
+
"\n---\n#{message}\n\n#{help}\n\n\n"
|
127
141
|
end
|
128
142
|
end
|
129
143
|
end
|
data/lib/opulent/filters.rb
CHANGED
data/lib/opulent/version.rb
CHANGED