qb 0.1.53 → 0.1.54

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d77fb717759bfbebeaf71f867499b5f789a05226
4
- data.tar.gz: 25ad397466c9eb234473fcd1c5ec1e9e8f64c47a
3
+ metadata.gz: 5b750783c213e2d82f770659b4e6fe1212f4f76c
4
+ data.tar.gz: 88cafa2c28be8b6591e4a143dbb1bcbeada113a1
5
5
  SHA512:
6
- metadata.gz: 84e715948331af11f019a1bf90f55fc819d21698561bcf8f1f1187aa03d3d3e954834c7d051ae6728cd776b70674100cf6186f8a47c55574c4c7a00e4539a097
7
- data.tar.gz: 6db9795f893d3f2d567ddf039491d0cf666a4e85d38a2abd8537564d82336fd3de8864f76c7790e62cb907755a55aaac016be42b8b73b5eff4600e28c680227c
6
+ metadata.gz: 3342398ad96337ebfe5a2322aa89ad7b08a042b49d11ec5d12ed37df2bbe3564f9421d72e6dda4d8dfdf77323d9a6d755946a65f911de1b5d0f404f93ec58af9
7
+ data.tar.gz: 11f0441877e9366c1da35b0fb6d569f55b8b02ebd0f1ac6b642ab263e89747f55d53ee0e6d5c29e751024c89dd3da3e25e1244cce11d624e20c17e685fac31b9
data/exe/qb CHANGED
@@ -278,7 +278,8 @@ def main args
278
278
  QB::Role.search_path,
279
279
  ].
280
280
  flatten. # since QB::Role.search_path is an Array
281
- map(&:to_s). # Pathname => String so uniq works
281
+ select(&:directory?).
282
+ map(&:realpath). # so uniq works
282
283
  uniq, # drop dups (seems to keep first instance so preserves priority)
283
284
 
284
285
  ANSIBLE_LIBRARY: [
@@ -320,7 +321,7 @@ def main args
320
321
  <%= playbook_path %>
321
322
  END
322
323
 
323
- cmd = Cmds::Cmd.new cmd_template, {
324
+ cmd = Cmds.new cmd_template, {
324
325
  env: env.map {|k, v| [k, v.is_a?(Array) ? v.join(':') : v]}.to_h,
325
326
 
326
327
  kwds: {
@@ -392,25 +393,23 @@ def main args
392
393
  end
393
394
  end
394
395
 
395
- Dir.chdir QB::ROOT do
396
- with_clean_env do
397
- # boot up stdio services so that ansible modules can stream to our
398
- # stdout and stderr to print stuff (including debug lines) in real-time
399
- stdio_services = {'out' => $stdout, 'err' => $stderr}.map do |name, dest|
400
- QB::Util::STDIO::Service.new(name, dest).tap {|s| s.open! }
401
- end
402
-
403
- status = cmd.stream
404
-
405
- # close the stdio services
406
- stdio_services.each {|s| s.close! }
407
-
408
- if status != 0
409
- puts "ERROR ansible-playbook failed."
410
- end
411
-
412
- exit status
396
+ with_clean_env do
397
+ # boot up stdio services so that ansible modules can stream to our
398
+ # stdout and stderr to print stuff (including debug lines) in real-time
399
+ stdio_services = {'out' => $stdout, 'err' => $stderr}.map do |name, dest|
400
+ QB::Util::STDIO::Service.new(name, dest).tap {|s| s.open! }
413
401
  end
402
+
403
+ status = cmd.stream
404
+
405
+ # close the stdio services
406
+ stdio_services.each {|s| s.close! }
407
+
408
+ if status != 0
409
+ puts "ERROR ansible-playbook failed."
410
+ end
411
+
412
+ exit status
414
413
  end
415
414
  end
416
415
 
@@ -16,6 +16,14 @@ module QB
16
16
  'run' => true,
17
17
  }
18
18
 
19
+ # appended on the end of an `opts.on` call to create a newline after
20
+ # the option (making the help output a bit easier to read)
21
+ #
22
+ # you might think the empty string would be reasonable, but OptionParser
23
+ # blows up if you do that.
24
+ #
25
+ SPACER = ' '
26
+
19
27
  # attributes
20
28
  # =======================================================================
21
29
 
@@ -179,6 +187,24 @@ module QB
179
187
  end
180
188
  end
181
189
 
190
+ if option.has_examples?
191
+ on_args << 'examples:'
192
+
193
+ option.examples.each_with_index {|example, index|
194
+ lines = example.lines.to_a
195
+
196
+ pp lines
197
+
198
+ on_args << ((index + 1).to_s + '.').ljust(4) + lines.first.chomp
199
+
200
+ lines[1..-1].each {|line|
201
+ on_args << (" ".ljust(4) + line.chomp)
202
+ }
203
+ }
204
+ end
205
+
206
+ on_args << SPACER
207
+
182
208
  QB.debug "adding option", option: option, on_args: on_args
183
209
 
184
210
  opts.on(*on_args) do |value|
@@ -255,7 +281,8 @@ module QB
255
281
  '--HOSTS=HOSTS',
256
282
  Array,
257
283
  "set playbook host",
258
- "DEFAULT: localhost"
284
+ "DEFAULT: localhost",
285
+ SPACER
259
286
  ) do |value|
260
287
  @qb['hosts'] = value
261
288
  end
@@ -265,6 +292,7 @@ module QB
265
292
  '--INVENTORY=FILEPATH',
266
293
  String,
267
294
  "set inventory file",
295
+ SPACER
268
296
  ) do |value|
269
297
  @qb['inventory'] = value
270
298
  end
@@ -273,7 +301,8 @@ module QB
273
301
  '-U',
274
302
  '--USER=USER',
275
303
  String,
276
- "ansible become user for the playbook"
304
+ "ansible become user for the playbook",
305
+ SPACER
277
306
  ) do |value|
278
307
  @qb['user'] = value
279
308
  end
@@ -283,13 +312,15 @@ module QB
283
312
  '--TAGS=TAGS',
284
313
  Array,
285
314
  "playbook tags",
315
+ SPACER
286
316
  ) do |value|
287
317
  @qb['tags'] = value
288
318
  end
289
319
 
290
320
  opts.on(
291
321
  '-V[LEVEL]',
292
- "run playbook in verbose mode. use like -VVV or -V3."
322
+ "run playbook in verbose mode. use like -VVV or -V3.",
323
+ SPACER
293
324
  ) do |value|
294
325
  # QB.debug "verbose", value: value
295
326
 
@@ -312,6 +343,7 @@ module QB
312
343
  opts.on(
313
344
  '--NO-FACTS',
314
345
  "don't gather facts",
346
+ SPACER
315
347
  ) do |value|
316
348
  @qb['facts'] = false
317
349
  end
@@ -319,7 +351,8 @@ module QB
319
351
  opts.on(
320
352
  '--PRINT=FLAGS',
321
353
  Array,
322
- "set what to print before running."
354
+ "set what to print before running.",
355
+ SPACER
323
356
  ) do |value|
324
357
  @qb['print'] = value
325
358
  end
@@ -327,6 +360,7 @@ module QB
327
360
  opts.on(
328
361
  '--NO-RUN',
329
362
  "don't run the playbook (useful to just print stuff)",
363
+ SPACER
330
364
  ) do |value|
331
365
  @qb['run'] = false
332
366
  end
@@ -1,7 +1,7 @@
1
1
  module QB
2
2
  class Options
3
3
  class Option
4
-
4
+ EXAMPLES_KEYS = ['examples', 'example']
5
5
 
6
6
  # the role that this option is for
7
7
  # attr_reader :role
@@ -60,9 +60,10 @@ module QB
60
60
  def description
61
61
  value = meta_or 'description',
62
62
  "set the #{ @var_name } role variable"
63
+
64
+ line_break = "\n" + "\t" * 5
63
65
 
64
66
  if @meta['type'].is_a?(Hash) && @meta['type'].key?('one_of')
65
- line_break = "\n" + "\t" * 5
66
67
  value += " options:" +
67
68
  "#{ line_break }#{ @meta['type']['one_of'].join(line_break) }"
68
69
  end
@@ -85,6 +86,25 @@ module QB
85
86
  end
86
87
  end
87
88
 
89
+ # test if the option has any examples.
90
+ #
91
+ # @return [Boolean]
92
+ #
93
+ def has_examples?
94
+ EXAMPLES_KEYS.any? {|key| meta.key? key}
95
+ end
96
+
97
+ # get an array of examples for the option. returns `[]` if no examples
98
+ # are defined.
99
+ #
100
+ # @return [Array<String>]
101
+ #
102
+ def examples
103
+ value = meta_or EXAMPLES_KEYS, []
104
+
105
+ if value.is_a? String then [value] else value end
106
+ end
107
+
88
108
  private
89
109
 
90
110
  # get the value at the first found of the keys or the default.
@@ -23,10 +23,14 @@ module QB
23
23
  # the role's ansible "name", which is it's directory name.
24
24
  attr_reader :name
25
25
 
26
- # @!attribute [r] rel_path
26
+ # @!attribute [r] display_path
27
+ #
28
+ # the path to the role that we display. we only show the directory name
29
+ # for QB roles, and use {QB::Util.compact_path} to show `.` and `~` for
30
+ # paths relative to the current directory and home directory, respectively.
31
+ #
27
32
  # @return [Pathname]
28
- # relative path to the role's directory.
29
- attr_reader :rel_path
33
+ attr_reader :display_path
30
34
 
31
35
  # @!attribute [r] meta_path
32
36
  # @return [String, nil]
@@ -98,7 +102,7 @@ module QB
98
102
  def self.roles_paths dir
99
103
  cfg_roles_path(dir) + [
100
104
  dir.join('roles'),
101
- dir.join('roles', 'tmp')
105
+ dir.join('roles', 'tmp'),
102
106
  ]
103
107
  end
104
108
 
@@ -127,7 +131,8 @@ module QB
127
131
  # in source control.
128
132
  # 3.
129
133
  #
130
- # @return [Array<Pathname>] places to look for role dirs.
134
+ # @return [Array<Pathname>]
135
+ # places to look for role dirs.
131
136
  #
132
137
  def self.search_path
133
138
  [
@@ -139,7 +144,8 @@ module QB
139
144
  QB::Util.resolve('dev'),
140
145
  ].map {|dir|
141
146
  roles_paths dir
142
- }.flatten
147
+ }.
148
+ flatten
143
149
  end
144
150
 
145
151
  # array of QB::Role found in search path.
@@ -154,14 +160,10 @@ module QB
154
160
  search_dir.children.select {|child| role_dir? child }
155
161
  }.
156
162
  flatten.
157
- # should allow uniq to remove dups
158
- map {|role_dir| role_dir.realpath }.
159
- # needed when qb is run from the qb repo since QB::GEM_ROLES_DIR and
160
- # ./roles are the same dir
161
- uniq.
162
163
  map {|role_dir|
163
164
  QB::Role.new role_dir
164
- }
165
+ }.
166
+ uniq
165
167
  end
166
168
 
167
169
  # get an array of QB::Role that match an input string
@@ -171,7 +173,7 @@ module QB
171
173
 
172
174
  # first off, see if input matches any relative paths exactly
173
175
  available.each {|role|
174
- return [role] if role.rel_path.to_s == input
176
+ return [role] if role.display_path.to_s == input
175
177
  }
176
178
 
177
179
  # create an array of "separator" variations to try *exact* matching
@@ -221,7 +223,7 @@ module QB
221
223
 
222
224
  # see if we word match any relative paths
223
225
  name_word_matches = available.select {|role|
224
- QB::Util.words_start_with? role.rel_path.to_s, input
226
+ QB::Util.words_start_with? role.display_path.to_s, input
225
227
  }
226
228
  return name_word_matches unless name_word_matches.empty?
227
229
 
@@ -283,7 +285,23 @@ module QB
283
285
  end
284
286
  else
285
287
  current_include_path + [role.namespaceless]
286
- end
288
+ end
289
+ end
290
+
291
+ # the path we display in the CLI, see {#display_path}.
292
+ #
293
+ # @param [Pathname | String] path
294
+ # input path to transform.
295
+ #
296
+ # @return [Pathname]
297
+ # path to display.
298
+ #
299
+ def self.to_display_path path
300
+ if path.realpath.start_with? QB::GEM_ROLES_DIR
301
+ path.realpath.sub (QB::GEM_ROLES_DIR.to_s + '/'), ''
302
+ else
303
+ QB::Util.contract_path path
304
+ end
287
305
  end
288
306
 
289
307
  # instance methods
@@ -305,6 +323,8 @@ module QB
305
323
  raise Errno::ENOTDIR.new @path.to_s
306
324
  end
307
325
 
326
+ @display_path = self.class.to_display_path @path
327
+
308
328
  @meta_path = if (@path + 'meta' + 'qb').exist?
309
329
  @path + 'meta' + 'qb'
310
330
  elsif (@path + 'meta' + 'qb.yml').exist?
@@ -313,19 +333,11 @@ module QB
313
333
  raise Errno::ENOENT.new "#{ @path.join('meta').to_s }/[qb|qb.yml]"
314
334
  end
315
335
 
316
- @rel_path = if @path.to_s.start_with? QB::GEM_ROLES_DIR.to_s
317
- @path.sub(QB::GEM_ROLES_DIR.to_s + '/', '')
318
- elsif @path.to_s.start_with? Dir.getwd
319
- @path.sub(Dir.getwd + '/', './')
320
- else
321
- @path
322
- end
323
-
324
336
  @name = @path.to_s.split(File::SEPARATOR).last
325
337
  end
326
338
 
327
339
  def to_s
328
- @rel_path.to_s
340
+ @display_path.to_s
329
341
  end
330
342
 
331
343
  def namespace
@@ -341,7 +353,7 @@ module QB
341
353
  end
342
354
 
343
355
  def options_key
344
- @rel_path.to_s
356
+ @display_path.to_s
345
357
  end
346
358
 
347
359
  # load qb metadata from meta/qb.yml or from executing meta/qb and parsing
@@ -547,11 +559,11 @@ module QB
547
559
  NRSER.git_root cwd
548
560
 
549
561
  when 'cwd'
550
- debug "returning current working directory"
562
+ QB.debug "returning current working directory"
551
563
  cwd
552
564
 
553
565
  when Hash
554
- debug "qb meta option is a Hash"
566
+ QB.debug "qb meta option is a Hash"
555
567
 
556
568
  unless value.length == 1
557
569
  raise "#{ meta_path.to_s }:default_dir invalid: #{ value.inspect }"
@@ -590,7 +602,7 @@ module QB
590
602
  raise "find_up filename must be string, found #{ filename.inspect }"
591
603
  end
592
604
 
593
- debug "found 'find_up', looking for file named #{ filename }"
605
+ QB.debug "found 'find_up', looking for file named #{ filename }"
594
606
 
595
607
  QB::Util.find_up filename
596
608
 
@@ -608,7 +620,21 @@ module QB
608
620
  meta_or 'ansible_options', {}
609
621
  end
610
622
 
623
+ # language inter-op
624
+ # -----------------------------------------------------------------------
625
+
626
+ def hash
627
+ path.realpath.hash
628
+ end
629
+
630
+ def == other
631
+ other.is_a?(Role) && other.path.realpath == path.realpath
632
+ end
633
+
634
+ alias_method :eql?, :==
635
+
611
636
  private
637
+ # -----------------------------------------------------------------------
612
638
 
613
639
  # get the value at the first found of the keys or the default.
614
640
  #
@@ -1,3 +1,7 @@
1
+ require 'nrser'
2
+
3
+ using NRSER
4
+
1
5
  module QB
2
6
  module Util
3
7
  # split a string into 'words' for word-based matching
@@ -51,6 +55,27 @@ module QB
51
55
  raise "resolution failed: #{ segments.inspect }"
52
56
  end
53
57
 
58
+ # do kind of the opposite of File.expand_path -- turn the home dir into ~
59
+ # and the current dir into .
60
+ #
61
+ # @param [Pathname | String]
62
+ # path to contract.
63
+ #
64
+ # @return [Pathname]
65
+ # contracted path.
66
+ #
67
+ def self.contract_path path
68
+ contracted = if path.start_with? Dir.pwd
69
+ path.sub Dir.pwd, '.'
70
+ elsif path.start_with? ENV['HOME']
71
+ path.sub ENV['HOME'], '~'
72
+ else
73
+ path
74
+ end
75
+
76
+ Pathname.new contracted
77
+ end
78
+
54
79
  # find `filename` in `from` or closest parent directory.
55
80
  #
56
81
  # @param [String] filename
@@ -1,7 +1,7 @@
1
1
  module QB
2
2
  GEM_NAME = 'qb'
3
3
 
4
- VERSION = "0.1.53"
4
+ VERSION = "0.1.54"
5
5
 
6
6
  def self.gemspec
7
7
  Gem.loaded_specs[GEM_NAME]
@@ -50,6 +50,7 @@ def main():
50
50
  cmds = {
51
51
  'qb_git_user_name': ['git', 'config', 'user.name'],
52
52
  'qb_git_user_email': ['git', 'config', 'user.email'],
53
+ 'qb_git_repo_root': ['git', 'rev-parse', '--show-toplevel'],
53
54
  }
54
55
 
55
56
  for key, cmd in cmds.iteritems():
@@ -59,9 +59,35 @@ def semver_parse(version):
59
59
 
60
60
  cmd = ['node', '--eval', stmt]
61
61
 
62
- out = subprocess.check_output(cmd)
62
+ out = subprocess.check_output(
63
+ cmd,
64
+ cwd = os.path.realpath(
65
+ os.path.join(__file__, '..', '..')
66
+ )
67
+ )
63
68
 
64
- return out.rstrip()
69
+ version = json.loads(out)
70
+
71
+ version['is_release'] = len(version['prerelease']) == 0
72
+
73
+ version['is_dev'] = (
74
+ len(version['prerelease']) > 0 and
75
+ version['prerelease'][0] == 'dev'
76
+ )
77
+
78
+ version['is_rc'] = (
79
+ len(version['prerelease']) > 0 and
80
+ version['prerelease'][0] == 'rc'
81
+ )
82
+
83
+ if version['is_release']:
84
+ version['type'] = 'release'
85
+ else:
86
+ version['type'] = version['prerelease'][0]
87
+
88
+ version['release'] = "%(major)s.%(minor)s.%(patch)s" % version
89
+
90
+ return version
65
91
 
66
92
 
67
93
  class FilterModule(object):
data/qb.gemspec CHANGED
@@ -93,7 +93,8 @@ Gem::Specification.new do |spec|
93
93
  spec.add_development_dependency "rspec"
94
94
  spec.add_development_dependency "yard"
95
95
 
96
- spec.add_dependency "cmds",'~> 0.0', ">= 0.1.3"
96
+ spec.add_dependency "cmds",'~> 0.0', ">= 0.2.0"
97
+ spec.add_dependency "nrser",'~> 0.0', ">= 0.0.16"
97
98
  spec.add_dependency "nrser-extras", '~> 0.0', ">= 0.0.3"
98
99
  spec.add_dependency "state_mate", '~> 0.0', ">= 0.0.9"
99
100
  spec.add_dependency 'parseconfig', '~> 1.0', '>= 1.0.8'
@@ -45,6 +45,7 @@
45
45
  # Kernel Module Compile Results
46
46
  *.mod*
47
47
  *.cmd
48
+ .tmp_versions/
48
49
  modules.order
49
50
  Module.symvers
50
51
  Mkfile.old
@@ -1,33 +1,12 @@
1
1
  # See https://www.dartlang.org/tools/private-files.html
2
2
 
3
3
  # Files and directories created by pub
4
-
5
- # SDK 1.20 and later (no longer creates packages directories)
6
4
  .packages
7
5
  .pub/
8
6
  build/
9
-
10
- # Older SDK versions
11
- # (Include if the minimum SDK version specified in pubsepc.yaml is earlier than 1.20)
12
- .project
13
- .buildlog
14
- **/packages/
15
-
16
-
17
- # Files created by dart2js
18
- # (Most Dart developers will use pub build to compile Dart, use/modify these
19
- # rules if you intend to use dart2js directly
20
- # Convention is to use extension '.dart.js' for Dart compiled to Javascript to
21
- # differentiate from explicit Javascript files)
22
- *.dart.js
23
- *.part.js
24
- *.js.deps
25
- *.js.map
26
- *.info.json
7
+ # If you're building an application, you may want to check-in your pubspec.lock
8
+ pubspec.lock
27
9
 
28
10
  # Directory created by dartdoc
11
+ # If you don't generate documentation locally you can remove this line.
29
12
  doc/api/
30
-
31
- # Don't commit pubspec lock file
32
- # (Library packages only! Remove pattern if developing an application package)
33
- pubspec.lock
@@ -11,9 +11,6 @@ local.properties
11
11
  .loadpath
12
12
  .recommenders
13
13
 
14
- # Eclipse Core
15
- .project
16
-
17
14
  # External tool builders
18
15
  .externalToolBuilders/
19
16
 
@@ -26,9 +23,6 @@ local.properties
26
23
  # CDT-specific (C/C++ Development Tooling)
27
24
  .cproject
28
25
 
29
- # JDT-specific (Eclipse Java Development Tools)
30
- .classpath
31
-
32
26
  # Java annotation processor (APT)
33
27
  .factorypath
34
28
 
@@ -36,6 +36,9 @@
36
36
  # JIRA plugin
37
37
  atlassian-ide-plugin.xml
38
38
 
39
+ # Cursive Clojure plugin
40
+ .idea/replstate.xml
41
+
39
42
  # Crashlytics plugin (for Android Studio and IntelliJ)
40
43
  com_crashlytics_export_strings.xml
41
44
  crashlytics.properties
@@ -1,26 +1,25 @@
1
- *.DS_Store
2
- .AppleDouble
3
- .LSOverride
4
-
5
- # Icon must end with two \r
6
- Icon
7
-
8
-
9
- # Thumbnails
10
- ._*
11
-
12
- # Files that might appear in the root of a volume
13
- .DocumentRevisions-V100
14
- .fseventsd
15
- .Spotlight-V100
16
- .TemporaryItems
17
- .Trashes
18
- .VolumeIcon.icns
19
- .com.apple.timemachine.donotpresent
20
-
21
- # Directories potentially created on remote AFP share
22
- .AppleDB
23
- .AppleDesktop
24
- Network Trash Folder
25
- Temporary Items
26
- .apdisk
1
+ *.DS_Store
2
+ .AppleDouble
3
+ .LSOverride
4
+
5
+ # Icon must end with two \r
6
+ Icon
7
+
8
+ # Thumbnails
9
+ ._*
10
+
11
+ # Files that might appear in the root of a volume
12
+ .DocumentRevisions-V100
13
+ .fseventsd
14
+ .Spotlight-V100
15
+ .TemporaryItems
16
+ .Trashes
17
+ .VolumeIcon.icns
18
+ .com.apple.timemachine.donotpresent
19
+
20
+ # Directories potentially created on remote AFP share
21
+ .AppleDB
22
+ .AppleDesktop
23
+ Network Trash Folder
24
+ Temporary Items
25
+ .apdisk
@@ -92,3 +92,6 @@ ENV/
92
92
 
93
93
  # Rope project settings
94
94
  .ropeproject
95
+
96
+ # mkdocs documentation
97
+ /site
@@ -1,2 +1,5 @@
1
1
  # generated qb playbooks
2
2
  .qb-playbook.yml
3
+
4
+ # ansible retry files
5
+ .qb-playbook.retry
@@ -8,7 +8,7 @@ capybara-*.html
8
8
  /public/system
9
9
  /coverage/
10
10
  /spec/tmp
11
- **.orig
11
+ *.orig
12
12
  rerun.txt
13
13
  pickle-email-*.html
14
14
 
@@ -25,7 +25,6 @@
25
25
  /bin/*
26
26
  !bin/console
27
27
  !bin/symfony_requirements
28
- /vendor/
29
28
 
30
29
  # Assets and user uploads
31
30
  /web/bundles/
@@ -38,8 +37,5 @@
38
37
  # Build data
39
38
  /build/
40
39
 
41
- # Composer PHAR
42
- /composer.phar
43
-
44
40
  # Backup entities generated with doctrine:generate:entities command
45
41
  **/Entity/*~
@@ -148,6 +148,9 @@ _minted*
148
148
  # pax
149
149
  *.pax
150
150
 
151
+ # pdfpcnotes
152
+ *.pdfpc
153
+
151
154
  # sagetex
152
155
  *.sagetex.sage
153
156
  *.sagetex.py
@@ -23,7 +23,6 @@ ExportedObj/
23
23
  *.svd
24
24
  *.pdb
25
25
 
26
-
27
26
  # Unity3D generated meta files
28
27
  *.pidb.meta
29
28
 
@@ -219,6 +219,7 @@ UpgradeLog*.htm
219
219
  # SQL Server files
220
220
  *.mdf
221
221
  *.ldf
222
+ *.ndf
222
223
 
223
224
  # Business Intelligence projects
224
225
  *.rdl.data
@@ -278,4 +279,10 @@ __pycache__/
278
279
  # !tools/packages.config
279
280
 
280
281
  # Telerik's JustMock configuration file
281
- *.jmconfig
282
+ *.jmconfig
283
+
284
+ # BizTalk build output
285
+ *.btp.cs
286
+ *.btm.cs
287
+ *.odx.cs
288
+ *.xsd.cs
@@ -16,7 +16,13 @@ options:
16
16
  create ruby module boilerplate(s) in library using QB::AnsibleModule.
17
17
  type: array
18
18
  required: false
19
+ # TODO not yet implemented
19
20
  implies: library
21
+ examples:
22
+ - |
23
+ produces library/some_module execuable with a module named SomeModule
24
+
25
+ --modules=some_module
20
26
 
21
27
  - include: qb.role
22
28
  as: false
@@ -2,6 +2,11 @@
2
2
  - set_fact:
3
3
  qb_role_module_class: "{{ qb_role_module | class_case }}"
4
4
  qb_role_module_path: "{{ role_dest }}/library/{{ qb_role_module }}"
5
+
6
+ - name: create library directory
7
+ file:
8
+ dest: "{{ qb_role_module_path | dirname }}"
9
+ state: directory
5
10
 
6
11
  - name: "create {{ qb_role_module }} module"
7
12
  template:
@@ -42,8 +42,8 @@ default_user: null
42
42
  # set to false to not save options in .qb-options.yml files
43
43
  save_options: true
44
44
 
45
- # ask for an ansible vault password
46
- ask_vault_pass: false
45
+ # options to pass to ansible-playbook
46
+ ansible_options: {}
47
47
 
48
48
  options: []
49
49
  # - name: example
@@ -1,4 +1,12 @@
1
- {{ role_role_name }}
2
- {{ '=' * (role_role_name | length) }}
1
+ {{ role_role_name }} role
2
+ {{ '=' * 78 }}
3
3
 
4
4
  {{ role_role_name }} role.
5
+
6
+ {{ '-' * 78 }}
7
+ usage
8
+ {{ '-' * 78 }}
9
+
10
+ CLI help:
11
+
12
+ qb {{ role_role_name }} --help
@@ -2,7 +2,7 @@
2
2
  # tasks file for qb.yarn
3
3
 
4
4
  - name: manage yarn installation
5
- include: "distro/{{ ansible_distribution }}.yml"
5
+ include: "distribution/{{ ansible_distribution }}.yml"
6
6
 
7
7
  - name: add global packages
8
8
  with_items: "{{ yarn_global_packages }}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.53
4
+ version: 0.1.54
5
5
  platform: ruby
6
6
  authors:
7
7
  - nrser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-04 00:00:00.000000000 Z
11
+ date: 2017-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,7 +75,7 @@ dependencies:
75
75
  version: '0.0'
76
76
  - - ">="
77
77
  - !ruby/object:Gem::Version
78
- version: 0.1.3
78
+ version: 0.2.0
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -85,7 +85,27 @@ dependencies:
85
85
  version: '0.0'
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: 0.1.3
88
+ version: 0.2.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: nrser
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.0'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 0.0.16
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '0.0'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 0.0.16
89
109
  - !ruby/object:Gem::Dependency
90
110
  name: nrser-extras
91
111
  requirement: !ruby/object:Gem::Requirement
@@ -597,7 +617,7 @@ files:
597
617
  - roles/qb.yarn/defaults/main.yml
598
618
  - roles/qb.yarn/meta/main.yml
599
619
  - roles/qb.yarn/meta/qb.yml
600
- - roles/qb.yarn/tasks/distro/MacOSX.yml
620
+ - roles/qb.yarn/tasks/distribution/MacOSX.yml
601
621
  - roles/qb.yarn/tasks/main.yml
602
622
  homepage: https://github.com/nrser/qb
603
623
  licenses: