liquidoc 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4e5e125a47213d06400c5fa08a7f95009b472919
4
- data.tar.gz: 9bbdf6ec04f7d1d0b0a9fd2fbd803a8cdffb592b
2
+ SHA256:
3
+ metadata.gz: 66391a246f45a5d814fa084fa90dd6d84e86fb5e871b6a539a77451fc1729d62
4
+ data.tar.gz: 7ccd14f246cc5b0577a81f4bdeff17bd9ecf38af6484c69d9cc3bca3695b3cfa
5
5
  SHA512:
6
- metadata.gz: bc30b75e6d93d3cd449e1d568d0003e66ee8d2bd69800a7d320ba7944ebb163a2328fa54a502590de0dbe2a145fb1d92a63e9fe2af1c57cf2f0cf5a9889610f3
7
- data.tar.gz: dbaeb400887aa6686a321d0e11a87103732361a755b5a34881e4a06f1b048c18ec4859bb2eafac1e34f55d26faea5a33b9154542f75ca917e27e39de98a6e8e2
6
+ metadata.gz: 02ba0eb644ca0f479b4383cf91eaadbac99cad397dd149d20841d06528338bddaf18fdfcb29ec1d9a8645076be5e2bb5fb87c7abbfce33e3773a882e714bc89a
7
+ data.tar.gz: fd785c1be75bbfa445190545ef7958307b1e32dbb1af5c27973b7bdddacff87413017b2cd6295acd7306b28a4181d9a226badf038687f3378ab4369ef3264900
@@ -0,0 +1,12 @@
1
+ require 'liquid'
2
+
3
+ module LiquidTags
4
+ class IncludeTag < Liquid::Tag
5
+
6
+ def initialize(tag_name, markup, tokens)
7
+ super
8
+ @tag_name = tag_name
9
+ return "WORKING!"
10
+ end
11
+ end
12
+ end
@@ -45,6 +45,9 @@ require 'jekyll'
45
45
  @output_filename = 'index'
46
46
  @attributes = {}
47
47
  @passed_attrs = {}
48
+ @passed_vars = {}
49
+ @passed_configvars = {}
50
+ @parseconfig = false
48
51
  @verbose = false
49
52
  @quiet = false
50
53
  @explicit = false
@@ -66,8 +69,16 @@ FileUtils::mkdir_p("#{@build_dir}/pre") unless File.exists?("#{@build_dir}/pre")
66
69
  # ===
67
70
 
68
71
  # Establish source, template, index, etc details for build jobs from a config file
69
- def config_build config_file
72
+ def config_build config_file, config_vars={}, parse=false
70
73
  @logger.debug "Using config file #{config_file}."
74
+ if config_vars or parse
75
+ # If config variables are passed on the CLI, we want to parse the config file
76
+ # and use the parsed version for the rest fo this routine
77
+ config_out = "#{@build_dir}/pre/#{File.basename(config_file)}"
78
+ liquify(nil,config_file, config_out, config_vars)
79
+ config_file = config_out
80
+ @logger.debug "Config parsed! Using #{config_out} for build."
81
+ end
71
82
  validate_file_input(config_file, "config")
72
83
  begin
73
84
  config = YAML.load_file(config_file)
@@ -92,12 +103,15 @@ def iterate_build cfg
92
103
  type = step.type
93
104
  case type # a switch to evaluate the 'action' parameter for each step in the iteration...
94
105
  when "parse"
95
- data = DataSrc.new(step.data)
106
+ if step.data
107
+ data = DataSrc.new(step.data)
108
+ end
96
109
  builds = step.builds
97
- for bld in builds
110
+ builds.each do |bld|
98
111
  build = Build.new(bld, type) # create an instance of the Build class; Build.new accepts a 'bld' hash & action 'type'
99
112
  if build.template
100
113
  @explainer.info build.message
114
+ build.add_vars!(@passed_vars) unless @passed_vars.empty?
101
115
  liquify(data, build.template, build.output, build.variables) # perform the liquify operation
102
116
  else
103
117
  regurgidata(data, build.output)
@@ -120,7 +134,7 @@ def iterate_build cfg
120
134
  render_doc(doc, build) # perform the render operation
121
135
  end
122
136
  when "deploy"
123
- @logger.warn "Deploy actions are limited and experimental experimental."
137
+ @logger.warn "Deploy actions are limited and experimental."
124
138
  jekyll_serve(build)
125
139
  else
126
140
  @logger.warn "The action `#{type}` is not valid."
@@ -276,7 +290,11 @@ class BuildConfigStep
276
290
  text = ". #{stage}Draws data from `#{self.data[0]}`"
277
291
  end
278
292
  else
279
- text = ". #{stage}Draws data from `#{self.data['file']}`"
293
+ if self.data
294
+ text = ". #{stage}Draws data from `#{self.data['file']}`"
295
+ else
296
+ text = ". #{stage}Uses data passed via CLI --var options."
297
+ end
280
298
  end
281
299
  text.concat("#{reason},") if reason
282
300
  text.concat(" and parses it as follows:")
@@ -356,6 +374,11 @@ class Build
356
374
  @build['variables']
357
375
  end
358
376
 
377
+ def add_vars! vars
378
+ vars.to_h unless vars.is_a? Hash
379
+ self.variables.merge!vars
380
+ end
381
+
359
382
  def message
360
383
  # dynamically build a message, possibly appending a reason
361
384
  unless @build['message']
@@ -664,9 +687,19 @@ end
664
687
 
665
688
  # Parse given data using given template, generating given output
666
689
  def liquify datasrc, template_file, output, variables=nil
667
- input = get_data(datasrc)
668
- nested = { "data" => get_data(datasrc)}
669
- input.merge!nested
690
+ if datasrc
691
+ input = get_data(datasrc)
692
+ nested = { "data" => get_data(datasrc)}
693
+ input.merge!nested
694
+ end
695
+ if variables
696
+ if input
697
+ input.merge!variables
698
+ else
699
+ input = variables
700
+ end
701
+ end
702
+ @logger.error "Parse operations need at least a data file or variables." unless input
670
703
  validate_file_input(template_file, "template")
671
704
  if variables
672
705
  vars = { "vars" => variables }
@@ -906,6 +939,7 @@ end
906
939
 
907
940
  def jekyll_serve build
908
941
  # Locally serve Jekyll as per the primary Jekyll config file
942
+ @logger.debug "Attempting Jekyll serve operation."
909
943
  config_file = build.props['files'][0]
910
944
  if build.props['arguments']
911
945
  opts_args = build.props['arguments'].to_opts_args
@@ -1096,6 +1130,24 @@ command_parser = OptionParser.new do|opts|
1096
1130
  @jekyll_serve = true
1097
1131
  end
1098
1132
 
1133
+ opts.on("--var KEY=VALUE", "For passing variables directly to the 'vars.' scope template via command line, for non-config builds only.") do |n|
1134
+ pair = {}
1135
+ k,v = n.split('=')
1136
+ pair[k] = v
1137
+ @passed_vars.merge!pair
1138
+ end
1139
+
1140
+ opts.on("-x", "--cvar KEY=VALUE", "For sending variables to the 'vars.' scope of the config file and triggering Liquid parsing of config.") do |n|
1141
+ pair = {}
1142
+ k,v = n.split('=')
1143
+ pair[k] = v
1144
+ @passed_configvars.merge!pair
1145
+ end
1146
+
1147
+ opts.on("--parse-config", "Preprocess the designated configuration file as a Liquid template. Superfluous when passing -x/--cvar arguments.") do
1148
+ @parseconfig = true
1149
+ end
1150
+
1099
1151
  opts.on("-h", "--help", "Returns help.") do
1100
1152
  puts opts
1101
1153
  exit
@@ -1117,12 +1169,12 @@ explainer_init
1117
1169
  unless @config_file
1118
1170
  @logger.debug "Executing config-free build based on API/CLI arguments alone."
1119
1171
  if @data_file
1120
- liquify(@data_file, @template_file, @output_file)
1172
+ liquify(@data_file, @template_file, @output_file, @passed_vars)
1121
1173
  end
1122
1174
  if @index_file
1123
1175
  @logger.warn "Rendering via command line arguments is not yet implemented. Use a config file."
1124
1176
  end
1125
1177
  else
1126
1178
  @logger.debug "Executing... config_build"
1127
- config_build(@config_file)
1179
+ config_build(@config_file, @passed_configvars, @parseconfig)
1128
1180
  end
@@ -1,3 +1,3 @@
1
1
  module Liquidoc
2
- VERSION = "0.8.1"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquidoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Dominick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-11 00:00:00.000000000 Z
11
+ date: 2018-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -49,6 +49,7 @@ extensions: []
49
49
  extra_rdoc_files: []
50
50
  files:
51
51
  - bin/liquidoc
52
+ - lib/liquid_tags.rb
52
53
  - lib/liquidoc.rb
53
54
  - lib/liquidoc/version.rb
54
55
  homepage: https://github.com/scalingdata/liquidoc
@@ -72,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
73
  version: '0'
73
74
  requirements: []
74
75
  rubyforge_project:
75
- rubygems_version: 2.4.8
76
+ rubygems_version: 2.7.7
76
77
  signing_key:
77
78
  specification_version: 4
78
79
  summary: A highly configurable command-line tool for parsing data and content in common