qb 0.1.60 → 0.1.61

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qb/options.rb +6 -6
  3. data/lib/qb/role.rb +20 -33
  4. data/lib/qb/role/errors.rb +30 -0
  5. data/lib/qb/version.rb +1 -1
  6. data/library/path_facts +304 -0
  7. data/plugins/lookup_plugins/every.py +165 -0
  8. data/roles/qb.facts/defaults/main.yml +3 -0
  9. data/roles/{qb.yarn → qb.facts}/meta/main.yml +1 -1
  10. data/roles/{qb.yarn → qb.facts}/meta/qb.yml +21 -26
  11. data/roles/qb.facts/tasks/main.yml +10 -0
  12. data/roles/qb.git_repo/defaults/main.yml +1 -0
  13. data/roles/qb.git_repo/meta/main.yml +1 -9
  14. data/roles/qb.git_repo/tasks/main.yml +26 -1
  15. data/roles/qb.qb_role/templates/qb.yml.j2 +8 -0
  16. data/roles/qb.role/defaults/main.yml +1 -1
  17. data/roles/qb.role/tasks/main.yml +1 -1
  18. data/roles/qb.yarn_release/defaults/main.yml +4 -0
  19. data/roles/{qb.release_yarn → qb.yarn_release}/meta/main.yml +1 -1
  20. data/roles/{qb.release_yarn → qb.yarn_release}/meta/qb.yml +1 -1
  21. data/roles/qb.yarn_release/tasks/main.yml +73 -0
  22. data/roles/qb.yarn_setup/defaults/main.yml +11 -0
  23. data/roles/qb.yarn_setup/meta/main.yml +8 -0
  24. data/roles/qb.yarn_setup/meta/qb.yml +100 -0
  25. data/roles/qb.yarn_setup/tasks/distribution/MacOSX/brew_create.yml +59 -0
  26. data/roles/qb.yarn_setup/tasks/distribution/MacOSX/main.yml +42 -0
  27. data/roles/qb.yarn_setup/tasks/main.yml +11 -0
  28. data/roles/qb.yarn_setup/templates/yarn@M.m.p.rb.j2 +22 -0
  29. metadata +20 -12
  30. data/lib/qb/options/errors.rb +0 -11
  31. data/roles/qb.release_yarn/defaults/main.yml +0 -4
  32. data/roles/qb.release_yarn/tasks/main.yml +0 -73
  33. data/roles/qb.yarn/defaults/main.yml +0 -5
  34. data/roles/qb.yarn/tasks/distribution/MacOSX.yml +0 -7
  35. data/roles/qb.yarn/tasks/main.yml +0 -11
@@ -0,0 +1,8 @@
1
+ ---
2
+ # meta file for qb.yarn_setup
3
+
4
+ allow_duplicates: yes
5
+
6
+ dependencies: []
7
+ # - role: role-name
8
+
@@ -0,0 +1,100 @@
1
+ ---
2
+ # meta/qb.yml file for qb.yarn_setup
3
+ #
4
+ # qb settings for this role. see README.md for more info.
5
+ #
6
+
7
+ # description of the role to show in it's help output.
8
+ description: >-
9
+ Install and configure Yarn package manager (for Node).
10
+
11
+ # prefix for role variables
12
+ var_prefix: null
13
+
14
+ # how to get a default for `dir` if it's not provided as the only
15
+ # positional argument. if a positional argument is provided it will
16
+ # override the method defined here.
17
+ #
18
+ # options:
19
+ #
20
+ # - null
21
+ # - require the value on the command line.
22
+ # - false
23
+ # - don't provide qb_dir (means doesn't load or save options either).
24
+ # - git_root
25
+ # - use the git root fof the directory that the `qb` command is invoked
26
+ # from. useful for 'project-centric' commands so they can be invoked
27
+ # from anywhere in the repo.
28
+ # - cwd
29
+ # - use the directory the `qb` command is invoked form.
30
+ # - {exe: PATH}
31
+ # - invoke an execuable, passing a JSON serialization of the options
32
+ # mapping their CLI names to values. path can be relative to role
33
+ # directory.
34
+ # - {find_up: FILENAME}
35
+ # - starting at the current direcotry and climbing up to parent
36
+ # directories, use the first one that contains FILENAME. error
37
+ # if none is found.
38
+ default_dir: false
39
+
40
+ # default user to become for play
41
+ default_user: null
42
+
43
+ # set to false to not save options in .qb-options.yml files
44
+ save_options: false
45
+
46
+ # options to pass to ansible-playbook
47
+ ansible_options: {}
48
+
49
+ options:
50
+ # - name: example
51
+ # description: an example of a variable.
52
+ # required: false
53
+ # type: boolean # boolean (default) | string
54
+ # short: e
55
+ - name: version
56
+ description: Version to install. If missing installs latest stable.
57
+ type: string
58
+ short: v
59
+
60
+ - name: state
61
+ description: >-
62
+ `present` to install, `absent` to uninstall. `unlinked` should work.
63
+ Not sure what `head` will do. We handle linking with separate `brew_link`
64
+ option.
65
+ see:
66
+ - http://docs.ansible.com/ansible/homebrew_module.html
67
+ short: s
68
+ type:
69
+ one_of:
70
+ - present
71
+ - absent
72
+ - latest
73
+ - head
74
+ - unlinked
75
+
76
+ - name: brew_link
77
+ description: >-
78
+ When installing on OSX (which uses Homebrew) link the installed packages.
79
+ type: boolean
80
+
81
+ - name: force
82
+ description: >-
83
+ Force write operations.
84
+ short: f
85
+ type: boolean
86
+
87
+ - name: brew_create
88
+ description: >-
89
+ On OSX create a Homebrew formula to install the desired version if no
90
+ formula is found.
91
+ type: boolean
92
+
93
+ - name: brew_tap
94
+ description: >-
95
+ The Homebrew Tap (repo) to use on OSX when creating a new formula for the
96
+ Yarn version.
97
+ short: t
98
+ type: string
99
+
100
+
@@ -0,0 +1,59 @@
1
+ # Create a Homebrew formula for a version of Yarn so we can install it.
2
+
3
+ - name: >-
4
+ Tap {{ yarn_setup_brew_tap }} in Homebrew
5
+ homebrew_tap:
6
+ name: "{{ yarn_setup_brew_tap }}"
7
+
8
+ - name: >-
9
+ Get location of {{ yarn_setup_brew_tap }}
10
+ command: >-
11
+ brew --repo {{ yarn_setup_brew_tap }}
12
+ changed_when: false
13
+ register: yarn_setup_brew_tap_dir
14
+
15
+ - name: >-
16
+ The formula name is 'yarn@<version>'
17
+ set_fact:
18
+ yarn_setup_formula_name: "yarn@{{ yarn_setup_version }}"
19
+
20
+ - name: >-
21
+ The new formula path is '<brew_tap_dir>/Formula/<formula_name>.rb'
22
+ set_fact:
23
+ yarn_setup_formula_path: >-
24
+ {{ yarn_setup_brew_tap_dir.stdout }}/Formula/{{ yarn_setup_formula_name }}.rb
25
+
26
+ - name: >-
27
+ Template formula to {{ yarn_setup_formula_path }}
28
+ template:
29
+ src: yarn@M.m.p.rb.j2
30
+ dest: "{{ yarn_setup_formula_path }}"
31
+ force: "{{ yarn_setup_force }}"
32
+
33
+ - name: >-
34
+ Install new {{ yarn_setup_formula_name }} formula
35
+ homebrew:
36
+ name: "{{ yarn_setup_brew_name }}"
37
+ state: present
38
+
39
+ - name: >-
40
+ Add new formlua to {{ yarn_setup_brew_tap }} repo
41
+ command: >-
42
+ git add Formula/{{ yarn_setup_formula_name }}.rb
43
+ args:
44
+ chdir: "{{ yarn_setup_brew_tap_dir.stdout }}"
45
+
46
+ - name: >-
47
+ Commit new formula to {{ yarn_setup_brew_tap }}
48
+ command: >-
49
+ git commit -m "qb.yarn_setup added {{ yarn_setup_formula_name }} formula"
50
+ args:
51
+ chdir: "{{ yarn_setup_brew_tap_dir.stdout }}"
52
+
53
+ - name: >-
54
+ Push {{ yarn_setup_brew_tap }}
55
+ command: >-
56
+ git push origin master
57
+ args:
58
+ chdir: "{{ yarn_setup_brew_tap_dir.stdout }}"
59
+
@@ -0,0 +1,42 @@
1
+ ---
2
+ - name: >-
3
+ homebrew_name is 'yarn' if no versions is specified,
4
+ else it is 'yarn@<version>'
5
+ set_fact:
6
+ yarn_setup_brew_name: >-
7
+ {% if yarn_setup_version -%}
8
+ yarn@{{ yarn_setup_version }}
9
+ {%- else -%}
10
+ yarn
11
+ {%- endif %}
12
+
13
+ - name: >-
14
+ can_brew_create is true when the brew_create option is true and the state
15
+ is either 'linked' or 'present'
16
+ set_fact:
17
+ yarn_setup_can_brew_create: >-
18
+ {{ yarn_setup_brew_create and yarn_setup_state == 'present' }}
19
+
20
+ - name: Manage Yarn installtion state on MacOSX via Homebrew
21
+ homebrew:
22
+ name: "{{ yarn_setup_brew_name }}"
23
+ state: "{{ yarn_setup_state }}"
24
+ update_homebrew: >-
25
+ {{ lookup('every', 'update_homebrew', days=1) }}
26
+ # ignore errors if we're in a config where we can create the formula
27
+ ignore_errors: "{{ yarn_setup_can_brew_create }}"
28
+ register: yarn_setup_brew_result
29
+
30
+ - name: Create Homebrew formula
31
+ when: >-
32
+ yarn_setup_brew_result.failed and yarn_setup_can_brew_create
33
+ include: "{{ role_path }}/tasks/distribution/MacOSX/brew_create.yml"
34
+
35
+ - name: Link Yarn in Homebrew
36
+ when: yarn_setup_brew_link
37
+ homebrew:
38
+ name: "{{ yarn_setup_brew_name }}"
39
+ state: linked
40
+ install_options:
41
+ - overwrite
42
+
@@ -0,0 +1,11 @@
1
+ ---
2
+ # tasks file for qb.yarn_setup
3
+
4
+ - name: Manage Yarn installation on MacOSX
5
+ include: "{{ role_path }}/tasks/distribution/{{ ansible_distribution }}/main.yml"
6
+
7
+ - name: Add global Yarn packages
8
+ with_items: "{{ yarn_setup_global_packages }}"
9
+ stream:
10
+ cmd: "yarn global add {{ item }}"
11
+
@@ -0,0 +1,22 @@
1
+ class YarnAT{{ yarn_setup_version | regex_replace('\\D', '') }} < Formula
2
+ desc "JavaScript package manager"
3
+ homepage "https://yarnpkg.com/"
4
+ url "https://github.com/yarnpkg/yarn/releases/download/v{{ yarn_setup_version }}/yarn-v{{ yarn_setup_version }}.tar.gz"
5
+ head "https://github.com/yarnpkg/yarn.git"
6
+
7
+ bottle :unneeded
8
+
9
+ depends_on "node"
10
+
11
+ def install
12
+ libexec.install Dir["*"]
13
+ bin.install_symlink "#{libexec}/bin/yarn.js" => "yarn"
14
+ bin.install_symlink "#{libexec}/bin/yarn.js" => "yarnpkg"
15
+ inreplace "#{libexec}/package.json", '"installationMethod": "tar"', '"installationMethod": "homebrew"'
16
+ end
17
+
18
+ test do
19
+ (testpath/"package.json").write('{"name": "test"}')
20
+ system bin/"yarn", "add", "jquery"
21
+ end
22
+ end
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.60
4
+ version: 0.1.61
5
5
  platform: ruby
6
6
  authors:
7
7
  - nrser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-18 00:00:00.000000000 Z
11
+ date: 2017-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -182,13 +182,14 @@ files:
182
182
  - lib/qb.rb
183
183
  - lib/qb/ansible_module.rb
184
184
  - lib/qb/options.rb
185
- - lib/qb/options/errors.rb
186
185
  - lib/qb/options/option.rb
187
186
  - lib/qb/role.rb
187
+ - lib/qb/role/errors.rb
188
188
  - lib/qb/util.rb
189
189
  - lib/qb/util/stdio.rb
190
190
  - lib/qb/version.rb
191
191
  - library/git_mkdir.py
192
+ - library/path_facts
192
193
  - library/qb_facts.py
193
194
  - library/stream
194
195
  - node_modules/.bin/semver
@@ -201,6 +202,7 @@ files:
201
202
  - package.json
202
203
  - plugins/filter_plugins/string.py
203
204
  - plugins/filter_plugins/version.py
205
+ - plugins/lookup_plugins/every.py
204
206
  - plugins/lookup_plugins/resolve.py
205
207
  - qb.gemspec
206
208
  - roles/nrser.blockinfile/CONTRIBUTING.md
@@ -318,6 +320,10 @@ files:
318
320
  - roles/qb.bump/tasks/frontend/level/release.yml
319
321
  - roles/qb.bump/tasks/frontend/main.yml
320
322
  - roles/qb.bump/tasks/main.yml
323
+ - roles/qb.facts/defaults/main.yml
324
+ - roles/qb.facts/meta/main.yml
325
+ - roles/qb.facts/meta/qb.yml
326
+ - roles/qb.facts/tasks/main.yml
321
327
  - roles/qb.gem/.qb-options.yml
322
328
  - roles/qb.gem/defaults/main.yml
323
329
  - roles/qb.gem/files/.gitkeep
@@ -598,10 +604,6 @@ files:
598
604
  - roles/qb.release_gem/meta/main.yml
599
605
  - roles/qb.release_gem/meta/qb.yml
600
606
  - roles/qb.release_gem/tasks/main.yml
601
- - roles/qb.release_yarn/defaults/main.yml
602
- - roles/qb.release_yarn/meta/main.yml
603
- - roles/qb.release_yarn/meta/qb.yml
604
- - roles/qb.release_yarn/tasks/main.yml
605
607
  - roles/qb.role/.qb-options.yml
606
608
  - roles/qb.role/defaults/main.yml
607
609
  - roles/qb.role/meta/main.yml
@@ -627,11 +629,17 @@ files:
627
629
  - roles/qb.vars/meta/main.yml
628
630
  - roles/qb.vars/meta/qb.yml
629
631
  - roles/qb.vars/tasks/main.yml
630
- - roles/qb.yarn/defaults/main.yml
631
- - roles/qb.yarn/meta/main.yml
632
- - roles/qb.yarn/meta/qb.yml
633
- - roles/qb.yarn/tasks/distribution/MacOSX.yml
634
- - roles/qb.yarn/tasks/main.yml
632
+ - roles/qb.yarn_release/defaults/main.yml
633
+ - roles/qb.yarn_release/meta/main.yml
634
+ - roles/qb.yarn_release/meta/qb.yml
635
+ - roles/qb.yarn_release/tasks/main.yml
636
+ - roles/qb.yarn_setup/defaults/main.yml
637
+ - roles/qb.yarn_setup/meta/main.yml
638
+ - roles/qb.yarn_setup/meta/qb.yml
639
+ - roles/qb.yarn_setup/tasks/distribution/MacOSX/brew_create.yml
640
+ - roles/qb.yarn_setup/tasks/distribution/MacOSX/main.yml
641
+ - roles/qb.yarn_setup/tasks/main.yml
642
+ - roles/qb.yarn_setup/templates/yarn@M.m.p.rb.j2
635
643
  homepage: https://github.com/nrser/qb
636
644
  licenses:
637
645
  - MIT
@@ -1,11 +0,0 @@
1
- module QB
2
- class Options
3
- # base for errors in the module, extends QB:Error
4
- class Error < QB::Error
5
- end
6
-
7
- # raised when there's bad option metadata
8
- class MetadataError < Error
9
- end
10
- end # Options
11
- end # QB
@@ -1,4 +0,0 @@
1
- ---
2
- # defaults file for qb.release_yarn
3
- release_yarn_level: patch
4
- release_yarn_package_dir: "{{ qb_dir }}"
@@ -1,73 +0,0 @@
1
- ---
2
- # tasks file for qb.release_yarn
3
-
4
- - name: load package.json
5
- include_vars:
6
- file: "{{ release_yarn_package_dir }}/package.json"
7
- name: release_yarn_package_json
8
-
9
- - name: get current version
10
- set_fact:
11
- release_yarn_current_version: "{{ release_yarn_package_json.version }}"
12
-
13
- - name: create release version
14
- set_fact:
15
- release_yarn_release_version: >-
16
- {{ release_yarn_current_version | semver_inc(release_yarn_level) }}
17
-
18
- - name: >
19
- increment to version {{ release_yarn_release_version }}
20
- and create the git tag
21
- command: "yarn version --new-version={{ release_yarn_release_version }}"
22
- args:
23
- chdir: "{{ release_yarn_package_dir }}"
24
-
25
- - name: >
26
- git push the v{{ release_yarn_release_version }} tag
27
- command: "git push origin v{{ release_yarn_release_version }}"
28
- args:
29
- chdir: "{{ release_yarn_package_dir }}"
30
-
31
- - name: >
32
- npm publish v{{ release_yarn_release_version }}
33
- command: npm publish
34
- args:
35
- chdir: "{{ release_yarn_package_dir }}"
36
-
37
- - name: create the next -dev version
38
- set_fact:
39
- release_yarn_next_version: "{{
40
- release_yarn_release_version | semver_inc(
41
- level='prerelease',
42
- preid='dev'
43
- )
44
- }}"
45
-
46
- - name: >
47
- increment to {{ release_yarn_next_version }} version
48
- command: >
49
- yarn version
50
- --new-version={{ release_yarn_next_version }}
51
- --no-git-tag-version
52
- args:
53
- chdir: "{{ release_yarn_package_dir }}"
54
-
55
- - name: git add package.json
56
- command: git add package.json
57
- args:
58
- chdir: "{{ release_yarn_package_dir }}"
59
-
60
- - name: >
61
- git commit next dev version
62
- command: git commit -m "start {{ release_yarn_next_version }}"
63
- args:
64
- chdir: "{{ release_yarn_package_dir }}"
65
-
66
- - name: git push next dev version
67
- command: git push
68
- args:
69
- chdir: "{{ release_yarn_package_dir }}"
70
-
71
- - debug:
72
- msg: >
73
- v{{ release_yarn_release_version }} released.
@@ -1,5 +0,0 @@
1
- ---
2
- # defaults file for qb.yarn
3
- yarn_version: null
4
- yarn_homebrew_name: yarn
5
- yarn_state: present
@@ -1,7 +0,0 @@
1
- ---
2
- - name: manage state on OSX via homebrew
3
- homebrew:
4
- name: "{{ yarn_setup_homebrew_name }}"
5
- state: "{{ yarn_setup_state }}"
6
- update_homebrew: "{{ update_homebrew | default(False) }}"
7
-
@@ -1,11 +0,0 @@
1
- ---
2
- # tasks file for qb.yarn
3
-
4
- - name: manage yarn installation
5
- include: "distribution/{{ ansible_distribution }}.yml"
6
-
7
- - name: add global packages
8
- with_items: "{{ yarn_global_packages }}"
9
- stream:
10
- cmd: "yarn global add {{ item }}"
11
-