qb 0.3.12 → 0.3.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +3 -1
- data/README.md +42 -26
- data/ansible.cfg +7 -0
- data/doc/common_issues/qb_run/slow_gather_facts.md +51 -0
- data/doc/getting_started.md +84 -0
- data/doc/intro.md +67 -0
- data/doc/notes/2018.01.06.ansible_devel_submodule.md +29 -0
- data/doc/qb_roles.md +155 -0
- data/doc/qb_roles/metadata/default_dir.md +116 -0
- data/exe/qb +16 -14
- data/lib/qb.rb +5 -20
- data/lib/qb/ansible/cmds/playbook.rb +3 -4
- data/lib/qb/ansible/env.rb +22 -2
- data/lib/qb/ansible/env/devel.rb +49 -0
- data/lib/qb/cli.rb +3 -1
- data/lib/qb/cli/help.rb +1 -1
- data/lib/qb/cli/list.rb +47 -0
- data/lib/qb/cli/run.rb +41 -15
- data/lib/qb/cli/setup.rb +35 -2
- data/lib/qb/options.rb +57 -30
- data/lib/qb/role.rb +32 -170
- data/lib/qb/role/default_dir.rb +231 -0
- data/lib/qb/role/errors.rb +18 -10
- data/lib/qb/role/name.rb +139 -0
- data/lib/qb/util/logging.rb +0 -7
- data/lib/qb/version.rb +1 -1
- data/library/stream +5 -0
- data/plugins/filter_plugins/string_plugins.py +2 -3
- data/plugins/filter_plugins/version_plugins.py +11 -0
- data/qb.gemspec +158 -62
- data/roles/nrser.blockinfile/library/blockinfile.py +14 -0
- data/roles/qb.git_repo/tasks/main.yml +3 -3
- data/roles/qb.npm_package/meta/main.yml +2 -2
- data/roles/qb.npm_package/meta/qb.yml +3 -3
- data/roles/qb.vars/meta/qb.yml +8 -7
- data/roles/qb.vars/tasks/main.yml +10 -1
- data/roles/qb/call/defaults/main.yml +2 -0
- data/roles/qb/call/meta/main.yml +8 -0
- data/roles/qb/call/meta/qb.yml +68 -0
- data/roles/qb/call/tasks/main.yml +92 -0
- data/roles/qb/gem/new/meta/qb.yml +1 -1
- data/roles/qb/gem/new/tasks/main.yml +3 -3
- data/roles/qb/gem/release/tasks/main.yml +3 -5
- data/roles/{qb.gitignore → qb/git/ignore}/defaults/main.yml +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Actionscript.gitignore +2 -3
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Ada.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Agda.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Android.gitignore +3 -2
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/AppEngine.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/AppceleratorTitanium.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ArchLinuxPackages.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Autotools.gitignore +9 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/C++.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/C.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CFWheels.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CMake.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CONTRIBUTING.md +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CUDA.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CakePHP.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ChefCookbook.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Clojure.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CodeIgniter.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CommonLisp.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Composer.gitignore +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Concrete5.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Coq.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/CraftCMS.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/D.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/DM.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Dart.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Delphi.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Drupal.gitignore +3 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/EPiServer.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Eagle.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Elisp.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Elixir.gitignore +2 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Elm.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Erlang.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ExpressionEngine.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ExtJs.gitignore +2 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Fancy.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Finale.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ForceDotCom.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Fortran.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/FuelPHP.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/GWT.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Gcov.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Gem.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/GitBook.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Anjuta.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Ansible.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Archives.gitignore +2 -2
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Bazaar.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/BricxCC.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/CVS.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Calabash.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Cloud9.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/CodeKit.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/DartEditor.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Dreamweaver.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Dropbox.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Eclipse.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/EiffelStudio.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Emacs.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Ensime.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Espresso.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/FlexBuilder.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/GPG.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/JDeveloper.gitignore +0 -0
- data/roles/qb/git/ignore/files/gitignore/Global/JEnv.gitignore +5 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/JetBrains.gitignore +2 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/KDevelop4.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Kate.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Lazarus.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/LibreOffice.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Linux.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/LyX.gitignore +0 -0
- data/roles/qb/git/ignore/files/gitignore/Global/Matlab.gitignore +25 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Mercurial.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/MicrosoftOffice.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/ModelSim.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Momentics.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/MonoDevelop.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/NetBeans.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Ninja.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/NotepadPP.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Otto.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/README.md +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Redcar.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Redis.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/SBT.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/SVN.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/SlickEdit.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Stata.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/SublimeText.gitignore +5 -5
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/SynopsysVCS.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Tags.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/TextMate.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/TortoiseGit.gitignore +0 -0
- data/roles/qb/git/ignore/files/gitignore/Global/Vagrant.gitignore +5 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Vim.gitignore +6 -4
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/VirtualEnv.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/VisualStudioCode.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/WebMethods.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Windows.gitignore +4 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/Xcode.gitignore +9 -9
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/XilinxISE.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Global/macOS.gitignore +2 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Go.gitignore +0 -3
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Gradle.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Grails.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Haskell.gitignore +2 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/IGORPro.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Idris.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Java.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Jboss.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Jekyll.gitignore +1 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Joomla.gitignore +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Julia.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/KiCad.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Kohana.gitignore +0 -0
- data/roles/qb/git/ignore/files/gitignore/Kotlin.gitignore +1 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/LICENSE +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/LabVIEW.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Laravel.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Leiningen.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/LemonStand.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Lilypond.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Lithium.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Lua.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Magento.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Maven.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Mercury.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/MetaProgrammingSystem.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Nanoc.gitignore +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Nim.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Node.gitignore +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/OCaml.gitignore +3 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Objective-C.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Opa.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/OpenCart.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/OracleForms.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Packer.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Perl.gitignore +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Phalcon.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/PlayFramework.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Plone.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Prestashop.gitignore +3 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Processing.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/PureScript.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Python.gitignore +11 -5
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/QB.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Qooxdoo.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Qt.gitignore +8 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/R.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/README.md +2 -2
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ROS.gitignore +2 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Rails.gitignore +4 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/RhodesRhomobile.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Ruby.gitignore +0 -16
- data/roles/qb/git/ignore/files/gitignore/RubyMotion.gitignore +30 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Rust.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/SCons.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Sass.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Scala.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Scheme.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Scrivener.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Sdcc.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/SeamGen.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/SketchUp.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Smalltalk.gitignore +4 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Stella.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/SugarCRM.gitignore +2 -2
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Swift.gitignore +1 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Symfony.gitignore +7 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/SymphonyCMS.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/TeX.gitignore +6 -1
- data/roles/qb/git/ignore/files/gitignore/Terraform.gitignore +9 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Textpattern.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/TurboGears2.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Typo3.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Umbraco.gitignore +7 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Unity.gitignore +7 -6
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/UnrealEngine.gitignore +2 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/VVVV.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/VisualStudio.gitignore +37 -6
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Waf.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/WordPress.gitignore +1 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Xojo.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Yeoman.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Yii.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/ZendFramework.gitignore +0 -1
- data/roles/{qb.gitignore → qb/git/ignore}/files/gitignore/Zephir.gitignore +0 -0
- data/roles/{qb.gitignore → qb/git/ignore}/meta/main.yml +1 -1
- data/roles/{qb.gitignore → qb/git/ignore}/meta/qb +5 -0
- data/roles/{qb.gitignore → qb/git/ignore}/tasks/main.yml +9 -1
- data/roles/qb/github/pages/setup/defaults/main.yml +2 -0
- data/roles/qb/github/pages/setup/meta/main.yml +8 -0
- data/roles/qb/github/pages/setup/meta/qb.yml +68 -0
- data/roles/qb/github/pages/setup/tasks/main.yml +10 -0
- data/roles/{qb.project → qb/project}/.qb-options.yml +1 -1
- data/roles/{qb.project → qb/project}/defaults/main.yml +1 -1
- data/roles/{qb.project → qb/project}/files/ansible.cfg +0 -0
- data/roles/{qb.project → qb/project}/files/hosts +0 -0
- data/roles/qb/project/meta/main.yml +6 -0
- data/roles/{qb.project → qb/project}/meta/qb.yml +4 -2
- data/roles/{qb.project → qb/project}/qb/get_dir +0 -0
- data/roles/qb/project/tasks/dev.yml +53 -0
- data/roles/{qb.project → qb/project}/tasks/main.yml +3 -2
- data/roles/{qb.project → qb/project}/templates/.gitkeep +0 -0
- data/roles/qb/project/templates/README.md.j2 +4 -0
- data/roles/qb/project/templates/setup.qb.yml.j2 +52 -0
- data/roles/{qb.project → qb/project}/templates/setup.yml.j2 +0 -0
- data/roles/{qb.role → qb/role}/.qb-options.yml +0 -0
- data/roles/{qb.role → qb/role}/defaults/main.yml +4 -1
- data/roles/{qb.role → qb/role}/meta/main.yml +1 -1
- data/roles/{qb.role → qb/role}/meta/qb.yml +2 -2
- data/roles/qb/role/qb/meta/main.yml +1 -1
- data/roles/qb/role/qb/meta/qb.yml +1 -1
- data/roles/qb/role/qb/tasks/main.yml +4 -2
- data/roles/qb/role/qb/templates/qb.yml.j2 +1 -1
- data/roles/{qb.role → qb/role}/tasks/main.yml +3 -2
- data/roles/{qb.role → qb/role}/tasks/module.yml +0 -0
- data/roles/{qb.role → qb/role}/tasks/plugins/_filter_plugin.yml +0 -0
- data/roles/{qb.role → qb/role}/tasks/plugins/filter_plugins.yml +5 -5
- data/roles/{qb.role → qb/role}/templates/.gitkeep +0 -0
- data/roles/{qb.role → qb/role}/templates/README.md.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/defaults/main.yml.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/filter_plugins/filters.py.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/handlers/main.yml.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/library/module.rb.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/meta/main.yml.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/tasks/main.yml.j2 +0 -0
- data/roles/{qb.role → qb/role}/templates/vars/main.yml.j2 +0 -0
- data/roles/{qb.role → qb/role}/vars/main.yml +1 -1
- data/roles/qb/ruby/bundler/.qb-options.yml +4 -0
- data/roles/qb/ruby/bundler/defaults/main.yml +7 -0
- data/roles/qb/ruby/bundler/filter_plugins/bundler_filters.py +157 -0
- data/roles/qb/ruby/bundler/meta/main.yml +8 -0
- data/roles/qb/ruby/bundler/meta/qb.yml +69 -0
- data/roles/qb/ruby/bundler/tasks/gems.yml +12 -0
- data/roles/qb/ruby/bundler/tasks/main.yml +12 -0
- data/roles/qb/ruby/bundler/tasks/setup.yml +13 -0
- data/roles/qb/ruby/yard/defaults/args.yml +2 -0
- data/roles/qb/ruby/yard/defaults/main.yml +9 -0
- data/roles/qb/ruby/yard/meta/main.yml +8 -0
- data/roles/qb/ruby/yard/meta/qb.yml +71 -0
- data/roles/qb/ruby/yard/tasks/main.yml +28 -0
- metadata +290 -297
- data/roles/nrser.blockinfile/tests/.gitignore +0 -1
- data/roles/nrser.blockinfile/tests/expected/test-basic/create.txt +0 -5
- data/roles/nrser.blockinfile/tests/expected/test-basic/insert.txt +0 -6
- data/roles/nrser.blockinfile/tests/expected/test-basic/marker.txt +0 -5
- data/roles/nrser.blockinfile/tests/expected/test-basic/remove.txt +0 -2
- data/roles/nrser.blockinfile/tests/expected/test-basic/update.txt +0 -6
- data/roles/nrser.blockinfile/tests/expected/test-block/block.txt +0 -4
- data/roles/nrser.blockinfile/tests/expected/test-block/content.txt +0 -4
- data/roles/nrser.blockinfile/tests/expected/test-follow/link0.txt +0 -6
- data/roles/nrser.blockinfile/tests/expected/test-follow/link1.txt +0 -6
- data/roles/nrser.blockinfile/tests/expected/test-follow/link2.txt +0 -1
- data/roles/nrser.blockinfile/tests/expected/test-follow/real0.txt +0 -2
- data/roles/nrser.blockinfile/tests/expected/test-follow/real1.txt +0 -2
- data/roles/nrser.blockinfile/tests/expected/test-follow/real2.txt +0 -6
- data/roles/nrser.blockinfile/tests/expected/test-insertab/insertafter.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-insertab/insertbefore.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-insertab/insertbof.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-insertab/inserteof.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-insertab/insertunmatched.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-insertab/updateafter.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-insertab/updatebefore.txt +0 -8
- data/roles/nrser.blockinfile/tests/expected/test-multiline/insert.txt +0 -11
- data/roles/nrser.blockinfile/tests/expected/test-multiline/remove.txt +0 -2
- data/roles/nrser.blockinfile/tests/expected/test-multiline/update.txt +0 -12
- data/roles/nrser.blockinfile/tests/expected/test-replace/index.html +0 -6
- data/roles/nrser.blockinfile/tests/expected/test-state/insert-present.txt +0 -5
- data/roles/nrser.blockinfile/tests/expected/test-state/insert.txt +0 -5
- data/roles/nrser.blockinfile/tests/expected/test-state/remove-absent.txt +0 -2
- data/roles/nrser.blockinfile/tests/expected/test-state/remove-present.txt +0 -2
- data/roles/nrser.blockinfile/tests/expected/test-state/remove.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-basic/insert.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-basic/marker.txt +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-basic/remove.txt +0 -6
- data/roles/nrser.blockinfile/tests/fixtures/test-basic/update.txt +0 -6
- data/roles/nrser.blockinfile/tests/fixtures/test-block/block.txt +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-block/content.txt +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-follow/link0.txt +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-follow/link1.txt +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-follow/link2.txt +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-follow/real0.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-follow/real1.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-follow/real2.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/insertafter.txt +0 -4
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/insertbefore.txt +0 -4
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/insertbof.txt +0 -4
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/inserteof.txt +0 -4
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/insertunmatched.txt +0 -4
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/updateafter.txt +0 -8
- data/roles/nrser.blockinfile/tests/fixtures/test-insertab/updatebefore.txt +0 -8
- data/roles/nrser.blockinfile/tests/fixtures/test-multiline/insert.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-multiline/remove.txt +0 -11
- data/roles/nrser.blockinfile/tests/fixtures/test-multiline/update.txt +0 -12
- data/roles/nrser.blockinfile/tests/fixtures/test-replace/index.html +0 -1
- data/roles/nrser.blockinfile/tests/fixtures/test-state/insert-present.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-state/insert.txt +0 -2
- data/roles/nrser.blockinfile/tests/fixtures/test-state/remove-absent.txt +0 -6
- data/roles/nrser.blockinfile/tests/fixtures/test-state/remove-present.txt +0 -6
- data/roles/nrser.blockinfile/tests/fixtures/test-state/remove.txt +0 -6
- data/roles/nrser.blockinfile/tests/hosts +0 -1
- data/roles/nrser.blockinfile/tests/roles/yaegashi.blockinfile +0 -1
- data/roles/nrser.blockinfile/tests/run.sh +0 -64
- data/roles/nrser.blockinfile/tests/test-basic.yml +0 -31
- data/roles/nrser.blockinfile/tests/test-block.yml +0 -16
- data/roles/nrser.blockinfile/tests/test-follow.yml +0 -21
- data/roles/nrser.blockinfile/tests/test-insertab.yml +0 -34
- data/roles/nrser.blockinfile/tests/test-multiline.yml +0 -51
- data/roles/nrser.blockinfile/tests/test-replace.yml +0 -21
- data/roles/nrser.blockinfile/tests/test-state.yml +0 -32
- data/roles/qb.gitignore/files/gitignore/Global/Matlab.gitignore +0 -22
- data/roles/qb.gitignore/files/gitignore/Global/Vagrant.gitignore +0 -1
- data/roles/qb.gitignore/files/gitignore/Terraform.gitignore +0 -6
- data/roles/qb.project/meta/main.yml +0 -6
- data/roles/qb.project/tasks/dev.yml +0 -36
- data/roles/qb.project/tasks/setup.yml +0 -42
- data/roles/qb.project/templates/README.md.j2 +0 -2
- data/roles/qb.project/templates/bootstrap.yml.j2 +0 -20
File without changes
|
File without changes
|
@@ -7,7 +7,10 @@ role_force: false
|
|
7
7
|
# Call `QB::Role.default_role_name role_dest` to get the default name
|
8
8
|
#
|
9
9
|
role_role_name: >-
|
10
|
-
{{ 'QB::Role' | qb_send_const( '
|
10
|
+
{{ 'QB::Role' | qb_send_const( 'default_name_for', role_dest ) }}
|
11
|
+
|
12
|
+
role_namespaceless: >-
|
13
|
+
{{ 'QB::Role' | qb_send_const( 'namespaceless_for', role_role_name ) }}
|
11
14
|
|
12
15
|
role_defaults: true
|
13
16
|
role_files: false
|
@@ -5,7 +5,7 @@
|
|
5
5
|
#
|
6
6
|
|
7
7
|
# prefix for role variables
|
8
|
-
var_prefix:
|
8
|
+
var_prefix: role
|
9
9
|
|
10
10
|
# how to get a default for `dir` if it's not provided as the
|
11
11
|
default_dir: null
|
@@ -102,5 +102,5 @@ vars:
|
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
-
- include: qb
|
105
|
+
- include: qb/project
|
106
106
|
|
@@ -14,7 +14,7 @@ requirements:
|
|
14
14
|
qb: ~> 0.3.0
|
15
15
|
|
16
16
|
# prefix for role variables
|
17
|
-
var_prefix:
|
17
|
+
var_prefix: {{ role_namespaceless }}
|
18
18
|
|
19
19
|
# how to get a default for `dir` if it's not provided as the only
|
20
20
|
# positional argument. if a positional argument is provided it will
|
@@ -145,7 +145,8 @@
|
|
145
145
|
# modules
|
146
146
|
# =======
|
147
147
|
|
148
|
-
-
|
148
|
+
- include_tasks: >-
|
149
|
+
{{ role_path }}/tasks/module.yml
|
149
150
|
with_items: "{{ role_modules }}"
|
150
151
|
loop_control:
|
151
152
|
loop_var: role_module
|
@@ -160,7 +161,7 @@
|
|
160
161
|
- when: role_filter_plugins|length > 0
|
161
162
|
name: >-
|
162
163
|
Generate filter plugin files.
|
163
|
-
|
164
|
+
include_tasks: >-
|
164
165
|
{{ role_path }}/tasks/plugins/filter_plugins.yml
|
165
166
|
|
166
167
|
|
File without changes
|
File without changes
|
@@ -20,19 +20,19 @@
|
|
20
20
|
|
21
21
|
- when: role_filter_plugins_default
|
22
22
|
name: >-
|
23
|
-
Create default `filter_plugins/{{
|
24
|
-
|
23
|
+
Create default `filter_plugins/{{ role_namespaceless }}_plugins.py`
|
24
|
+
include_tasks: >-
|
25
25
|
{{ role_path }}/tasks/plugins/_filter_plugin.yml
|
26
26
|
vars:
|
27
27
|
name: >-
|
28
|
-
{{
|
28
|
+
{{ role_namespaceless }}
|
29
29
|
|
30
30
|
- when: not role_filter_plugins_default
|
31
31
|
name: >-
|
32
|
-
Create each of filter plugins
|
32
|
+
Create each of filter plugins specified in `role_filter_plugins`.
|
33
33
|
with_items: >-
|
34
34
|
{{ role_filter_plugins }}
|
35
35
|
loop_control:
|
36
36
|
loop_var: name
|
37
|
-
|
37
|
+
include_tasks: >-
|
38
38
|
{{ role_path }}/tasks/plugins/_filter_plugin.yml
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
# vars file for qb.role
|
3
3
|
|
4
|
-
# overriding the qb
|
4
|
+
# overriding the qb/project defaults has to happen here - values in
|
5
5
|
# defaults/main.yml **will not** be visible to the included role
|
6
6
|
|
7
7
|
# the name of the project repo, which defaults to "ansible-<role-name>"
|
@@ -0,0 +1,157 @@
|
|
1
|
+
#!/usr/bin/env python2
|
2
|
+
|
3
|
+
# `bundler` Ansible/Jinja2 Filters for `qb/ruby/bundler` Role.
|
4
|
+
#
|
5
|
+
|
6
|
+
|
7
|
+
# Imports
|
8
|
+
# ============================================================================
|
9
|
+
|
10
|
+
# Make Python 2 more Python 3-like
|
11
|
+
# from __future__ import (absolute_import, division, print_function)
|
12
|
+
# __metaclass__ = type
|
13
|
+
|
14
|
+
# from ansible.errors import AnsibleError
|
15
|
+
|
16
|
+
# Some imports you may often want:
|
17
|
+
# import sys
|
18
|
+
# improt os
|
19
|
+
# import subprocess
|
20
|
+
# import yaml
|
21
|
+
# improt json
|
22
|
+
|
23
|
+
|
24
|
+
# Functions
|
25
|
+
# ============================================================================
|
26
|
+
#
|
27
|
+
# Suggested practice seems to be to define each filter as a top-level function
|
28
|
+
# then expose them via the `FilterModule#filters` method below.
|
29
|
+
#
|
30
|
+
|
31
|
+
def gem_group_option( group ):
|
32
|
+
'''
|
33
|
+
Returns the Ruby string for the `group:` option value.
|
34
|
+
|
35
|
+
:rtype: str
|
36
|
+
|
37
|
+
>>> gem_group_option( 'jekyll_plugins' )
|
38
|
+
':jekyll_plugins'
|
39
|
+
|
40
|
+
>>> gem_group_option( ['jekyll_plugins', 'blah'] )
|
41
|
+
'[:blah, :jekyll_plugins]'
|
42
|
+
'''
|
43
|
+
|
44
|
+
if isinstance(group, list):
|
45
|
+
return "[{}]".format(
|
46
|
+
", ".join( ":{}".format( s ) for s in sorted(group))
|
47
|
+
)
|
48
|
+
else:
|
49
|
+
return ":{}".format( group )
|
50
|
+
|
51
|
+
|
52
|
+
'''
|
53
|
+
Map of `gem` call option names to handlers that convert their values to
|
54
|
+
Ruby source stings
|
55
|
+
'''
|
56
|
+
gem_option_handlers = {
|
57
|
+
'group': gem_group_option,
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
def gem_option_value( name, data ):
|
62
|
+
'''
|
63
|
+
Returns the Ruby source string for value of an option to a `gem` call
|
64
|
+
in a Gemfile.
|
65
|
+
|
66
|
+
Implementation just calls the function mapped to by `name` in
|
67
|
+
`gem_option_handlers`.
|
68
|
+
|
69
|
+
:rtype: str
|
70
|
+
|
71
|
+
>>> gem_option_value( 'group', 'jekyll_plugins' )
|
72
|
+
':jekyll_plugins'
|
73
|
+
'''
|
74
|
+
|
75
|
+
return gem_option_handlers[name]( data )
|
76
|
+
|
77
|
+
|
78
|
+
def gem_line( item ):
|
79
|
+
'''
|
80
|
+
Turn an `bundle_gems` item into a Gemfile line.
|
81
|
+
|
82
|
+
>>> gem_line({
|
83
|
+
... 'key': 'github-pages',
|
84
|
+
... 'value': {
|
85
|
+
... 'state': 'present',
|
86
|
+
... 'group': 'jekyll_plugins',
|
87
|
+
... }
|
88
|
+
... })
|
89
|
+
"gem 'github-pages', group: :jekyll_plugins"
|
90
|
+
|
91
|
+
>>> gem_line({
|
92
|
+
... 'key': 'github-pages',
|
93
|
+
... 'value': {
|
94
|
+
... 'state': 'present',
|
95
|
+
... }
|
96
|
+
... })
|
97
|
+
"gem 'github-pages'"
|
98
|
+
'''
|
99
|
+
|
100
|
+
line = "gem '{}'".format( item['key'] )
|
101
|
+
|
102
|
+
options = {
|
103
|
+
key: data
|
104
|
+
for key, data
|
105
|
+
in item['value'].items()
|
106
|
+
if key != 'state'
|
107
|
+
}
|
108
|
+
|
109
|
+
if len( options ) > 0:
|
110
|
+
option_values = ", ".join(
|
111
|
+
"{name}: {value}".format(
|
112
|
+
name = name,
|
113
|
+
value = gem_option_value( name, options[name])
|
114
|
+
)
|
115
|
+
for name
|
116
|
+
in sorted( options.keys() )
|
117
|
+
)
|
118
|
+
|
119
|
+
line = "{line}, {option_values}".format(
|
120
|
+
line = line,
|
121
|
+
option_values = option_values,
|
122
|
+
)
|
123
|
+
|
124
|
+
return line
|
125
|
+
|
126
|
+
|
127
|
+
# Module
|
128
|
+
# ============================================================================
|
129
|
+
#
|
130
|
+
# How Ansible finds the filters. It looks like it gets instantiated with
|
131
|
+
# no arguments, at least most of the time, so it pretty much just serves as
|
132
|
+
# a well-known name to obtain the function references from.
|
133
|
+
#
|
134
|
+
class FilterModule(object):
|
135
|
+
'''
|
136
|
+
`bundler` Ansible/Jinja2 filters for `qb/ruby/bundler` role.
|
137
|
+
'''
|
138
|
+
|
139
|
+
def filters(self):
|
140
|
+
return {
|
141
|
+
'bundle_gem_line': gem_line,
|
142
|
+
}
|
143
|
+
# filters()
|
144
|
+
# FilterModule
|
145
|
+
|
146
|
+
|
147
|
+
# Testing
|
148
|
+
# ============================================================================
|
149
|
+
#
|
150
|
+
# This is not standard Ansible-ness - they use `unittest.TestCase` in separate
|
151
|
+
# files - but `doctest` seemed like a really easy way to add and run tests
|
152
|
+
# for these typically simple functions.
|
153
|
+
#
|
154
|
+
if __name__ == '__main__':
|
155
|
+
import doctest
|
156
|
+
doctest.testmod()
|
157
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
---
|
2
|
+
# meta/qb.yml file for qb/ruby/bundler
|
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: null
|
9
|
+
|
10
|
+
# Gemspec-style requirements. Right now only `gems:qb` is used, but plan to
|
11
|
+
# generalize in the future.
|
12
|
+
requirements:
|
13
|
+
gems:
|
14
|
+
qb: ~> 0.3.0
|
15
|
+
|
16
|
+
# prefix for role variables
|
17
|
+
var_prefix: null
|
18
|
+
|
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.
|
22
|
+
#
|
23
|
+
# options:
|
24
|
+
#
|
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:
|
44
|
+
- find_up: Gemfile
|
45
|
+
- git_root
|
46
|
+
|
47
|
+
# If `true`, QB will ensure the default dir exists before starting the play.
|
48
|
+
#
|
49
|
+
# For legacy reasons, this defaults to `true` if not present, but we want to
|
50
|
+
# default declare it as `false` here so new roles can turn it on only if
|
51
|
+
# they need it.
|
52
|
+
#
|
53
|
+
mkdir: false
|
54
|
+
|
55
|
+
# default user to become for play
|
56
|
+
default_user: null
|
57
|
+
|
58
|
+
# set to false to not save options in .qb-options.yml files
|
59
|
+
save_options: true
|
60
|
+
|
61
|
+
# options to pass to ansible-playbook
|
62
|
+
ansible_options: {}
|
63
|
+
|
64
|
+
options: []
|
65
|
+
# - name: example
|
66
|
+
# description: an example of a variable.
|
67
|
+
# required: false
|
68
|
+
# type: boolean # boolean (default) | string
|
69
|
+
# short: e
|