qb 0.3.13 → 0.3.14

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/doc/getting_started.md +2 -0
  3. data/doc/qb_roles.md +4 -109
  4. data/doc/qb_roles/metadata.md +221 -0
  5. data/exe/qb +23 -11
  6. data/lib/qb.rb +1 -3
  7. data/lib/qb/cli.rb +97 -85
  8. data/lib/qb/options.rb +6 -6
  9. data/lib/qb/role/default_dir.rb +28 -28
  10. data/lib/qb/util.rb +3 -2
  11. data/lib/qb/version.rb +1 -1
  12. data/qb.gemspec +22 -9
  13. data/roles/nrser.rbenv_gem/tasks/main.yml +3 -3
  14. data/roles/qb/gem/build/defaults/main.yml +12 -0
  15. data/roles/{qb.build_gem → qb/gem/build}/meta/main.yml +0 -0
  16. data/roles/qb/gem/build/meta/qb.yml +42 -0
  17. data/roles/qb/gem/build/tasks/main.yml +61 -0
  18. data/roles/{qb.install_gem → qb/gem/install}/defaults/main.yml +1 -1
  19. data/roles/qb/gem/install/meta/main.yml +17 -0
  20. data/roles/{qb.install_gem → qb/gem/install}/meta/qb.yml +5 -2
  21. data/roles/{qb.install_gem → qb/gem/install}/tasks/main.yml +0 -0
  22. data/roles/qb/git/ignore/files/gitignore/Eagle.gitignore +9 -1
  23. data/roles/qb/git/ignore/files/gitignore/Global/Eclipse.gitignore +3 -0
  24. data/roles/qb/git/ignore/files/gitignore/Go.gitignore +1 -0
  25. data/roles/qb/git/ignore/files/gitignore/Node.gitignore +2 -0
  26. data/roles/qb/git/ignore/files/gitignore/Python.gitignore +7 -19
  27. data/roles/qb/git/ignore/files/gitignore/Python/Packaging.gitignore +25 -0
  28. data/roles/qb/git/ignore/files/gitignore/Ruby.gitignore +15 -5
  29. data/roles/qb/git/ignore/files/gitignore/Umbraco.gitignore +2 -2
  30. data/roles/qb/git/ignore/files/gitignore/VisualStudio.gitignore +4 -0
  31. data/roles/qb/role/qb/templates/qb.yml.j2 +19 -39
  32. data/roles/qb/role/templates/README.md.j2 +1 -1
  33. data/roles/qb/role/templates/defaults/main.yml.j2 +6 -1
  34. data/roles/qb/role/templates/filter_plugins/filters.py.j2 +5 -5
  35. data/roles/qb/role/templates/handlers/main.yml.j2 +3 -1
  36. data/roles/qb/role/templates/meta/main.yml.j2 +4 -2
  37. data/roles/qb/role/templates/tasks/main.yml.j2 +3 -1
  38. data/roles/qb/role/templates/vars/main.yml.j2 +3 -1
  39. metadata +43 -34
  40. data/roles/qb.build_gem/defaults/main.yml +0 -2
  41. data/roles/qb.build_gem/tasks/main.yml +0 -27
  42. data/roles/qb.install_gem/meta/main.yml +0 -12
@@ -36,11 +36,11 @@
36
36
  # msg: "{{ rbenv_gem_rubies_list }}"
37
37
 
38
38
  # this will clone the repo, build the .gem and point rbenv_gem_source to it
39
- - include: clone-repo.yml
39
+ - include_tasks: clone-repo.yml
40
40
  when: rbenv_gem_repo is defined
41
41
 
42
- - include: manage-source.yml
42
+ - include_tasks: manage-source.yml
43
43
  when: rbenv_gem_source is defined
44
44
 
45
- - include: manage-version.yml
45
+ - include_tasks: manage-version.yml
46
46
  when: rbenv_gem_source is not defined
@@ -0,0 +1,12 @@
1
+ ---
2
+ ##############################################################################
3
+ # Variable defaults for `qb/gem/build` role
4
+ ##############################################################################
5
+
6
+ # Default the gem root to the DIRECTORY from QB
7
+ gem_root: >-
8
+ {{ qb_dir }}
9
+
10
+ # Where to move the built gem to
11
+ gem_build_dest: >-
12
+ {{ gem_root }}/pkg
@@ -0,0 +1,42 @@
1
+ ---
2
+ ##############################################################################
3
+ # QB metadata for `qb/gem/build` role
4
+ #
5
+ # qb settings for this role. see README.md for more info.
6
+ #
7
+ ##############################################################################
8
+
9
+ # description of the role to show in it's help output.
10
+ description: Build an installable `.gem` file from a source directory.
11
+
12
+ # Gemspec-style requirements. Right now only `gems:qb` is used, but plan to
13
+ # generalize in the future.
14
+ requirements:
15
+ gems:
16
+ qb: ~> 0.3.0
17
+
18
+ # prefix for role variables
19
+ var_prefix: gem_build
20
+
21
+ # Closest gemspec climbing down tree from working dir
22
+ default_dir:
23
+ find_up: '*.gemspec'
24
+
25
+ # Have QB ensure DIRECTORY exists before starting the play.
26
+ mkdir: false
27
+
28
+ # default user to become for play
29
+ default_user: null
30
+
31
+ # set to false to not save options in .qb-options.yml files
32
+ save_options: false
33
+
34
+ # options to pass to ansible-playbook
35
+ ansible_options: {}
36
+
37
+ options:
38
+ - name: dest
39
+ description: Destination directory for the `.gem` file
40
+ required: false
41
+ type: path
42
+ short: d
@@ -0,0 +1,61 @@
1
+ ---
2
+ ##############################################################################
3
+ # Main tasks for `qb/gem/build` role
4
+ ##############################################################################
5
+
6
+ - when: get_root_facts is not defined
7
+ name: >-
8
+ Get the QB path facts for `gem_root={{ gem_root }}`
9
+ path_facts:
10
+ path: >-
11
+ {{ gem_root }}
12
+ register: gem_root_facts
13
+
14
+
15
+ - name: >-
16
+ Set `gem_build_filename` to the (presumed) filename of the new `.gem`
17
+ set_fact:
18
+ gem_build_filename: >-
19
+ {{ gem_root_facts.gem.name }}-{{ gem_root_facts.gem.version.raw }}.gem
20
+
21
+
22
+ - name: >
23
+ Set `gem_build_path` to the absolute path we want
24
+ `{{ gem_build_filename }}` to end up at
25
+ set_fact:
26
+ gem_build_path: >-
27
+ {{ gem_build_dest | path_resolve( gem_build_filename ) }}
28
+
29
+
30
+ - when: not gem_root_facts.gem.version.is_dev
31
+ block:
32
+ - name: >-
33
+ Stat destination path `{{ gem_build_path }}`
34
+ stat:
35
+ path: >-
36
+ {{ gem_build_path }}
37
+ register: gem_build_path_stat
38
+
39
+ - when: gem_build_path_stat.stat.exists
40
+ fail:
41
+ msg: >-
42
+ Gem build destination `{{ gem_build_path }}` exists
43
+ (and gem at `{{ gem_root }}` is not at a `dev` version)
44
+
45
+
46
+ - name: >-
47
+ Build gem from {{ gem_root_facts.gem.gemspec_path }}
48
+ stream:
49
+ cmd: gem build {{ gem_root_facts.gem.gemspec_path | basename | quote }}
50
+ chdir: >-
51
+ {{ gem_root }}
52
+
53
+
54
+ - when: gem_root != gem_build_dest
55
+ name: >-
56
+ Move new `{{ gem_build_filename }}` file to `{{ gem_build_path }}`
57
+ command: >-
58
+ mv {{ gem_build_filename | quote }} {{ gem_build_path | quote }}
59
+ args:
60
+ chdir: >-
61
+ {{ gem_root }}
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  # defaults file for qb.install_gem
3
- install_gem_rubies: current
3
+ gem_install_rubies: current
@@ -0,0 +1,17 @@
1
+ ---
2
+ # meta file for qb.install_gem
3
+ allow_duplicates: yes
4
+
5
+ dependencies:
6
+ - role: qb/gem/build
7
+
8
+ - role: nrser.rbenv_gem
9
+ rbenv_gem_rubies: >-
10
+ {{ gem_install_rubies }}
11
+ rbenv_gem_name: >-
12
+ {{ gem_root_facts.gem.name }}
13
+ # Ugh... this is named "source" because that's what it's called in Ansible's
14
+ # `gem` module, but it's *not* the source directory, it's the `.gem` file
15
+ rbenv_gem_source: >-
16
+ {{ gem_build_path }}
17
+ rbenv_gem_state: present
@@ -1,5 +1,8 @@
1
1
  ---
2
- default_dir: cwd
2
+ default_dir:
3
+ find_up: '*.gemspec'
4
+ parent_dir:
5
+ $where:
3
6
 
4
7
  save_options: false
5
8
 
@@ -7,4 +10,4 @@ vars:
7
10
  - name: rubies
8
11
  description: rubies to install for
9
12
  required: false
10
- type: string
13
+ type: string
@@ -4,6 +4,9 @@
4
4
  *.s#?
5
5
  *.b#?
6
6
  *.l#?
7
+ *.b$?
8
+ *.s$?
9
+ *.l$?
7
10
 
8
11
  # Eagle project file
9
12
  # It contains a serial number and references to the file structure
@@ -31,14 +34,19 @@ eagle.epf
31
34
  *.drl
32
35
  *.gpi
33
36
  *.pls
37
+ *.ger
38
+ *.gpi
39
+ *.xln
34
40
 
35
41
  *.drd
36
42
  *.drd.*
37
43
 
44
+ *.s#*
45
+ *.b#*
46
+
38
47
  *.info
39
48
 
40
49
  *.eps
41
50
 
42
51
  # file locks introduced since 7.x
43
52
  *.lck
44
-
@@ -23,6 +23,9 @@ local.properties
23
23
  # CDT-specific (C/C++ Development Tooling)
24
24
  .cproject
25
25
 
26
+ # CDT- autotools
27
+ .autotools
28
+
26
29
  # Java annotation processor (APT)
27
30
  .factorypath
28
31
 
@@ -1,5 +1,6 @@
1
1
  # Binaries for programs and plugins
2
2
  *.exe
3
+ *.exe~
3
4
  *.dll
4
5
  *.so
5
6
  *.dylib
@@ -57,3 +57,5 @@ typings/
57
57
  # dotenv environment variables file
58
58
  .env
59
59
 
60
+ # next.js build output
61
+ .next
@@ -1,3 +1,10 @@
1
+ # General Git ignore file for Python
2
+ #
3
+ # Packaging and distribution patterns have been moved out to
4
+ #
5
+ # //Python/Packaging.gitignore
6
+ #
7
+
1
8
  # Byte-compiled / optimized / DLL files
2
9
  __pycache__/
3
10
  *.py[cod]
@@ -6,25 +13,6 @@ __pycache__/
6
13
  # C extensions
7
14
  *.so
8
15
 
9
- # Distribution / packaging
10
- .Python
11
- build/
12
- develop-eggs/
13
- dist/
14
- downloads/
15
- eggs/
16
- .eggs/
17
- lib/
18
- lib64/
19
- parts/
20
- sdist/
21
- var/
22
- wheels/
23
- *.egg-info/
24
- .installed.cfg
25
- *.egg
26
- MANIFEST
27
-
28
16
  # PyInstaller
29
17
  # Usually these files are written by a python script from a template
30
18
  # before PyInstaller builds the exe, so as to inject date/other infos into it.
@@ -0,0 +1,25 @@
1
+ # Patterns that are only applicable if you are packaging and distributing
2
+ # your Python source.
3
+ #
4
+ # Moved here from `//Python.gitignore` because they include several common
5
+ # directory names *that are ignored anywhere in the directory tree* and you
6
+ # probably don't want or need those sweeping effects for the common case of
7
+ # ignoring `*.pyc` and the like.
8
+ #
9
+
10
+ .Python
11
+ # env/
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ *.egg-info/
24
+ .installed.cfg
25
+ *.egg
@@ -1,3 +1,17 @@
1
+ # General Git ignore file for Ruby, including support for:
2
+ #
3
+ # - Bundler
4
+ # - RDoc and Yard
5
+ # - RBEnv and RVM
6
+ # - DotEnv (optional)
7
+ #
8
+ # Additional support is available in separate ignore files:
9
+ #
10
+ # - Gem.gitignore (for gem source directories)
11
+ # - Rails.gitignore
12
+ # - RubyMotion.gitignore
13
+ #
14
+
1
15
  /*.gem
2
16
  *.rbc
3
17
  /.config
@@ -24,11 +38,7 @@
24
38
  /vendor/bundle
25
39
  /lib/bundler/man/
26
40
 
27
- # for a library or gem, you might want to ignore these files since the code is
28
- # intended to run in multiple environments; otherwise, check them in:
29
- # Gemfile.lock
30
- # .ruby-version
31
- # .ruby-gemset
41
+ # for a library or gem, add `Gem.gitignore`
32
42
 
33
43
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
44
  .rvmrc
@@ -16,8 +16,8 @@
16
16
 
17
17
  # Don't ignore Umbraco packages (VisualStudio.gitignore mistakes this for a NuGet packages folder)
18
18
  # Make sure to include details from VisualStudio.gitignore BEFORE this
19
- !**/App_Data/[Pp]ackages/
20
- !**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages
19
+ !**/App_Data/[Pp]ackages/*
20
+ !**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages/*
21
21
 
22
22
  # ImageProcessor DiskCache
23
23
  **/App_Data/cache/
@@ -219,6 +219,10 @@ ClientBin/
219
219
  *.publishsettings
220
220
  orleans.codegen.cs
221
221
 
222
+ # Including strong name files can present a security risk
223
+ # (https://github.com/github/gitignore/pull/2483#issue-259490424)
224
+ #*.snk
225
+
222
226
  # Since there are multiple workflows, uncomment next line to ignore bower_components
223
227
  # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
224
228
  #bower_components/
@@ -1,64 +1,44 @@
1
1
  ---
2
- # meta/qb.yml file for {{ role_role_name }}
2
+ ##############################################################################
3
+ # QB metadata for `{{ role_role_name }}` role.
3
4
  #
4
- # qb settings for this role. see README.md for more info.
5
+ # QB settings for this role.
6
+ #
7
+ # @see http://www.rubydoc.info/gems/qb/file/doc/qb_roles/metadata.md
5
8
  #
9
+ ##############################################################################
6
10
 
7
- # description of the role to show in it's help output.
8
- description: null
11
+ # Shown in help output, etc.
12
+ description: >-
13
+ TODO describe {{ role_role_name }} role
9
14
 
10
- # Gemspec-style requirements. Right now only `gems:qb` is used, but plan to
11
- # generalize in the future.
15
+ # Gemspec-style requirements. Right now only `.gems.qb` is used.
12
16
  requirements:
13
17
  gems:
14
18
  qb: ~> 0.3.0
15
19
 
16
- # prefix for role variables
20
+ # Prefix for role variables
17
21
  var_prefix: {{ role_namespaceless }}
18
22
 
19
- # how to get a default for `dir` if it's not provided as the only
20
- # positional argument. if a positional argument is provided it will
21
- # override the method defined here.
23
+ # How to get a default for `DIRECTORY` arg if not provided by user.
22
24
  #
23
- # options:
25
+ # @see http://www.rubydoc.info/gems/qb/file/doc/qb_roles/metadata/default_dir.md
24
26
  #
25
- # - null
26
- # - require the value on the command line.
27
- # - false
28
- # - don't provide qb_dir (means doesn't load or save options either).
29
- # - git_root
30
- # - use the git root of the directory that the `qb` command is invoked
31
- # from. useful for 'project-centric' commands so they can be invoked
32
- # from anywhere in the repo.
33
- # - cwd
34
- # - use the directory the `qb` command is invoked form.
35
- # - {exe: PATH}
36
- # - invoke an executable, passing a JSON serialization of the options
37
- # mapping their CLI names to values. path can be relative to role
38
- # directory.
39
- # - {find_up: FILENAME}
40
- # - starting at the current directory and climbing up to parent
41
- # directories, use the first one that contains FILENAME. error
42
- # if none is found.
43
- default_dir: null
27
+ default_dir: null # means use *must* provide `DIRECTORY` arg
44
28
 
45
- # If `true`, QB will ensure the default dir exists before starting the play.
46
- #
47
- # For legacy reasons, this defaults to `true` if not present, but we want to
48
- # default declare it as `false` here so new roles can turn it on only if
49
- # they need it.
50
- #
29
+ # If `true`, QB will ensure `DIRECTORY` exists before starting the play.
51
30
  mkdir: false
52
31
 
53
- # default user to become for play
32
+ # Default user to become for play
54
33
  default_user: null
55
34
 
56
- # set to false to not save options in .qb-options.yml files
35
+ # Save options in `.qb-options.yml` files
57
36
  save_options: true
58
37
 
59
- # options to pass to ansible-playbook
38
+ # Options to pass to `ansible-playbook`
60
39
  ansible_options: {}
61
40
 
41
+ # Role CLI options that become Ansible vars
62
42
  options: []
63
43
  # - name: example
64
44
  # description: an example of a variable.
@@ -4,7 +4,7 @@
4
4
  {{ role_role_name }} role.
5
5
 
6
6
  {{ '-' * 78 }}
7
- usage
7
+ Usage
8
8
  {{ '-' * 78 }}
9
9
 
10
10
  CLI help: