qb 0.1.53 → 0.1.54

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
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: