r10k 3.5.2

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 (358) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +1 -0
  3. data/.github/pull_request_template.md +1 -0
  4. data/.github/workflows/docker.yml +56 -0
  5. data/.github/workflows/release.yml +36 -0
  6. data/.gitignore +9 -0
  7. data/.travis.yml +45 -0
  8. data/CHANGELOG.mkd +1759 -0
  9. data/CODEOWNERS +2 -0
  10. data/CONTRIBUTING.mkd +105 -0
  11. data/Gemfile +15 -0
  12. data/LICENSE +14 -0
  13. data/README.mkd +118 -0
  14. data/Rakefile +3 -0
  15. data/azure-pipelines.yml +86 -0
  16. data/bin/r10k +17 -0
  17. data/doc/common-patterns.mkd +44 -0
  18. data/doc/dynamic-environments.mkd +31 -0
  19. data/doc/dynamic-environments/configuration.mkd +669 -0
  20. data/doc/dynamic-environments/git-environments.mkd +75 -0
  21. data/doc/dynamic-environments/introduction.mkd +69 -0
  22. data/doc/dynamic-environments/master-configuration.mkd +40 -0
  23. data/doc/dynamic-environments/quickstart.mkd +201 -0
  24. data/doc/dynamic-environments/svn-environments.mkd +45 -0
  25. data/doc/dynamic-environments/usage.mkd +132 -0
  26. data/doc/dynamic-environments/workflow-guide.mkd +247 -0
  27. data/doc/faq.mkd +164 -0
  28. data/doc/git/cloning-and-mirroring.mkd +60 -0
  29. data/doc/git/providers.mkd +111 -0
  30. data/doc/puppetfile.mkd +309 -0
  31. data/doc/updating-your-puppetfile.mkd +38 -0
  32. data/docker/.gitignore +1 -0
  33. data/docker/.rspec +4 -0
  34. data/docker/Gemfile +11 -0
  35. data/docker/Makefile +89 -0
  36. data/docker/README.md +28 -0
  37. data/docker/r10k/Dockerfile +67 -0
  38. data/docker/r10k/adduser.sh +13 -0
  39. data/docker/r10k/docker-entrypoint.d/10-analytics.sh +30 -0
  40. data/docker/r10k/docker-entrypoint.sh +11 -0
  41. data/docker/r10k/release.Dockerfile +54 -0
  42. data/docker/spec/dockerfile_spec.rb +43 -0
  43. data/docker/spec/fixtures/Puppetfile +2 -0
  44. data/integration/Gemfile +19 -0
  45. data/integration/README.mkd +29 -0
  46. data/integration/Rakefile +77 -0
  47. data/integration/component/pre-suite/05_install_dev_r10k.rb +12 -0
  48. data/integration/files/README.mkd +4 -0
  49. data/integration/files/hiera.yaml +8 -0
  50. data/integration/files/modules/helloworld/manifests/init.pp +3 -0
  51. data/integration/files/modules/hieratest/manifests/init.pp +3 -0
  52. data/integration/files/modules/unicode/files/pretend_unicode +1 -0
  53. data/integration/files/modules/unicode/manifests/init.pp +6 -0
  54. data/integration/files/pre-suite/git_config.pp.erb +19 -0
  55. data/integration/files/pre-suite/prod_env.config +3 -0
  56. data/integration/files/r10k_conf.yaml.erb +9 -0
  57. data/integration/lib/README.mkd +4 -0
  58. data/integration/lib/git_utils.rb +205 -0
  59. data/integration/lib/master_manipulator.rb +205 -0
  60. data/integration/lib/r10k_utils.rb +222 -0
  61. data/integration/manifests/README.mkd +4 -0
  62. data/integration/pre-suite/00_pe_install.rb +6 -0
  63. data/integration/pre-suite/10_git_config.rb +48 -0
  64. data/integration/pre-suite/20_pe_r10k.rb +55 -0
  65. data/integration/pre-suite/README.mkd +5 -0
  66. data/integration/tests/Puppetfile/HTTP_PROXY_affects_forge_source.rb +72 -0
  67. data/integration/tests/Puppetfile/HTTP_PROXY_affects_git_source.rb +70 -0
  68. data/integration/tests/README.mkd +4 -0
  69. data/integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb +83 -0
  70. data/integration/tests/basic_functionality/negative/neg_deploy_with_invalid_r10k_yaml.rb +51 -0
  71. data/integration/tests/basic_functionality/negative/neg_deploy_with_missing_r10k_yaml.rb +28 -0
  72. data/integration/tests/basic_functionality/negative/neg_invalid_git_provider.rb +45 -0
  73. data/integration/tests/basic_functionality/negative/negative_bad_proxy.rb +34 -0
  74. data/integration/tests/basic_functionality/proxy_specified_in_configuration.rb +103 -0
  75. data/integration/tests/basic_functionality/proxy_with_pe_only_module.rb +128 -0
  76. data/integration/tests/basic_functionality/proxy_with_puppetfile.rb +61 -0
  77. data/integration/tests/basic_functionality/rugged_git_provider_with_ssh.rb +109 -0
  78. data/integration/tests/basic_functionality/rugged_git_provider_without_ssh.rb +108 -0
  79. data/integration/tests/command_line/deploy_env_without_mod_update.rb +76 -0
  80. data/integration/tests/command_line/negative/neg_deploy_env_with_module_update.rb +77 -0
  81. data/integration/tests/command_line/negative/neg_invalid_cmd_line_arg.rb +23 -0
  82. data/integration/tests/git_source/HTTP_proxy_and_git_source.rb +70 -0
  83. data/integration/tests/git_source/git_source_git.rb +128 -0
  84. data/integration/tests/git_source/git_source_ssh.rb +87 -0
  85. data/integration/tests/git_source/git_source_submodule.rb +70 -0
  86. data/integration/tests/git_source/negative/neg_git_broken_remote.rb +38 -0
  87. data/integration/tests/git_source/negative/neg_git_unauthorized_https.rb +46 -0
  88. data/integration/tests/git_source/negative/neg_git_unauthorized_ssh.rb +73 -0
  89. data/integration/tests/git_source/negative/neg_git_unicode_branch.rb +35 -0
  90. data/integration/tests/i18n/deploy_module_with_unicode_in_file_name.rb +64 -0
  91. data/integration/tests/purging/content_not_purged_at_root.rb +89 -0
  92. data/integration/tests/purging/default_purging.rb +125 -0
  93. data/integration/tests/purging/does_not_purge_files_on_white_list.rb +93 -0
  94. data/integration/tests/purging/invalid_whitelist_types.rb +63 -0
  95. data/integration/tests/user_scenario/basic_workflow/multi_env_1000_branches.rb +66 -0
  96. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +111 -0
  97. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +117 -0
  98. data/integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb +100 -0
  99. data/integration/tests/user_scenario/basic_workflow/multi_env_multi_source.rb +133 -0
  100. data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +161 -0
  101. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_basedir.rb +46 -0
  102. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_forge_module.rb +48 -0
  103. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb +45 -0
  104. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +43 -0
  105. data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_remote.rb +45 -0
  106. data/integration/tests/user_scenario/basic_workflow/negative/neg_branch_name_collision.rb +64 -0
  107. data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +75 -0
  108. data/integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb +44 -0
  109. data/integration/tests/user_scenario/basic_workflow/negative/neg_inaccessible_forge.rb +58 -0
  110. data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_env_name.rb +34 -0
  111. data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_puppet_file.rb +36 -0
  112. data/integration/tests/user_scenario/basic_workflow/negative/neg_module_specified_at_deleted_release.rb +49 -0
  113. data/integration/tests/user_scenario/basic_workflow/negative/neg_read_only.rb +58 -0
  114. data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +51 -0
  115. data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +75 -0
  116. data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +104 -0
  117. data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_module.rb +81 -0
  118. data/integration/tests/user_scenario/basic_workflow/single_env_custom_module.rb +49 -0
  119. data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +75 -0
  120. data/integration/tests/user_scenario/basic_workflow/single_env_module_already_installed.rb +82 -0
  121. data/integration/tests/user_scenario/basic_workflow/single_env_module_last_release_deleted.rb +68 -0
  122. data/integration/tests/user_scenario/basic_workflow/single_env_non-existent_base_dir.rb +94 -0
  123. data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +93 -0
  124. data/integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb +117 -0
  125. data/integration/tests/user_scenario/basic_workflow/single_env_unicode_paths.rb +60 -0
  126. data/integration/tests/user_scenario/basic_workflow/single_env_upgrade_forge_mod_revert_change.rb +166 -0
  127. data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +163 -0
  128. data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +111 -0
  129. data/integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb +78 -0
  130. data/integration/tests/user_scenario/complex_workflow/single_env_git_module_update.rb +100 -0
  131. data/lib/r10k.rb +11 -0
  132. data/lib/r10k/action/base.rb +31 -0
  133. data/lib/r10k/action/cri_runner.rb +72 -0
  134. data/lib/r10k/action/deploy.rb +9 -0
  135. data/lib/r10k/action/deploy/deploy_helpers.rb +34 -0
  136. data/lib/r10k/action/deploy/display.rb +89 -0
  137. data/lib/r10k/action/deploy/environment.rb +196 -0
  138. data/lib/r10k/action/deploy/module.rb +84 -0
  139. data/lib/r10k/action/puppetfile.rb +10 -0
  140. data/lib/r10k/action/puppetfile/check.rb +31 -0
  141. data/lib/r10k/action/puppetfile/cri_runner.rb +26 -0
  142. data/lib/r10k/action/puppetfile/install.rb +45 -0
  143. data/lib/r10k/action/puppetfile/purge.rb +28 -0
  144. data/lib/r10k/action/runner.rb +96 -0
  145. data/lib/r10k/action/visitor.rb +31 -0
  146. data/lib/r10k/cli.rb +51 -0
  147. data/lib/r10k/cli/deploy.rb +114 -0
  148. data/lib/r10k/cli/ext/logging.rb +15 -0
  149. data/lib/r10k/cli/help.rb +7 -0
  150. data/lib/r10k/cli/puppetfile.rb +74 -0
  151. data/lib/r10k/cli/version.rb +31 -0
  152. data/lib/r10k/deployment.rb +132 -0
  153. data/lib/r10k/deployment/config.rb +56 -0
  154. data/lib/r10k/environment.rb +37 -0
  155. data/lib/r10k/environment/bare.rb +16 -0
  156. data/lib/r10k/environment/base.rb +150 -0
  157. data/lib/r10k/environment/git.rb +81 -0
  158. data/lib/r10k/environment/name.rb +86 -0
  159. data/lib/r10k/environment/svn.rb +91 -0
  160. data/lib/r10k/environment/with_modules.rb +139 -0
  161. data/lib/r10k/errors.rb +61 -0
  162. data/lib/r10k/errors/formatting.rb +28 -0
  163. data/lib/r10k/feature.rb +56 -0
  164. data/lib/r10k/feature/collection.rb +23 -0
  165. data/lib/r10k/features.rb +20 -0
  166. data/lib/r10k/forge/module_release.rb +228 -0
  167. data/lib/r10k/git.rb +196 -0
  168. data/lib/r10k/git/alternates.rb +63 -0
  169. data/lib/r10k/git/cache.rb +108 -0
  170. data/lib/r10k/git/errors.rb +34 -0
  171. data/lib/r10k/git/rugged.rb +17 -0
  172. data/lib/r10k/git/rugged/bare_repository.rb +85 -0
  173. data/lib/r10k/git/rugged/base_repository.rb +93 -0
  174. data/lib/r10k/git/rugged/cache.rb +11 -0
  175. data/lib/r10k/git/rugged/credentials.rb +91 -0
  176. data/lib/r10k/git/rugged/thin_repository.rb +89 -0
  177. data/lib/r10k/git/rugged/working_repository.rb +145 -0
  178. data/lib/r10k/git/shellgit.rb +9 -0
  179. data/lib/r10k/git/shellgit/bare_repository.rb +43 -0
  180. data/lib/r10k/git/shellgit/base_repository.rb +137 -0
  181. data/lib/r10k/git/shellgit/cache.rb +11 -0
  182. data/lib/r10k/git/shellgit/thin_repository.rb +69 -0
  183. data/lib/r10k/git/shellgit/working_repository.rb +111 -0
  184. data/lib/r10k/git/stateful_repository.rb +95 -0
  185. data/lib/r10k/initializers.rb +67 -0
  186. data/lib/r10k/instance_cache.rb +32 -0
  187. data/lib/r10k/keyed_factory.rb +39 -0
  188. data/lib/r10k/logging.rb +109 -0
  189. data/lib/r10k/logging/terminaloutputter.rb +36 -0
  190. data/lib/r10k/module.rb +38 -0
  191. data/lib/r10k/module/base.rb +113 -0
  192. data/lib/r10k/module/forge.rb +177 -0
  193. data/lib/r10k/module/git.rb +109 -0
  194. data/lib/r10k/module/local.rb +36 -0
  195. data/lib/r10k/module/metadata_file.rb +31 -0
  196. data/lib/r10k/module/svn.rb +112 -0
  197. data/lib/r10k/puppetfile.rb +286 -0
  198. data/lib/r10k/settings.rb +194 -0
  199. data/lib/r10k/settings/collection.rb +123 -0
  200. data/lib/r10k/settings/container.rb +97 -0
  201. data/lib/r10k/settings/definition.rb +124 -0
  202. data/lib/r10k/settings/enum_definition.rb +30 -0
  203. data/lib/r10k/settings/helpers.rb +38 -0
  204. data/lib/r10k/settings/list.rb +107 -0
  205. data/lib/r10k/settings/loader.rb +99 -0
  206. data/lib/r10k/settings/mixin.rb +54 -0
  207. data/lib/r10k/settings/uri_definition.rb +19 -0
  208. data/lib/r10k/source.rb +42 -0
  209. data/lib/r10k/source/base.rb +74 -0
  210. data/lib/r10k/source/exec.rb +51 -0
  211. data/lib/r10k/source/git.rb +142 -0
  212. data/lib/r10k/source/hash.rb +182 -0
  213. data/lib/r10k/source/svn.rb +136 -0
  214. data/lib/r10k/source/yaml.rb +20 -0
  215. data/lib/r10k/source/yamldir.rb +32 -0
  216. data/lib/r10k/svn.rb +6 -0
  217. data/lib/r10k/svn/remote.rb +68 -0
  218. data/lib/r10k/svn/working_dir.rb +125 -0
  219. data/lib/r10k/util/attempt.rb +84 -0
  220. data/lib/r10k/util/basedir.rb +65 -0
  221. data/lib/r10k/util/commands.rb +31 -0
  222. data/lib/r10k/util/exec_env.rb +36 -0
  223. data/lib/r10k/util/license.rb +24 -0
  224. data/lib/r10k/util/platform.rb +42 -0
  225. data/lib/r10k/util/purgeable.rb +88 -0
  226. data/lib/r10k/util/setopts.rb +55 -0
  227. data/lib/r10k/util/subprocess.rb +84 -0
  228. data/lib/r10k/util/subprocess/result.rb +56 -0
  229. data/lib/r10k/util/subprocess/runner.rb +26 -0
  230. data/lib/r10k/util/subprocess/runner/jruby.rb +23 -0
  231. data/lib/r10k/util/subprocess/runner/posix.rb +103 -0
  232. data/lib/r10k/util/subprocess/runner/pump.rb +59 -0
  233. data/lib/r10k/util/subprocess/runner/windows.rb +23 -0
  234. data/lib/r10k/util/subprocess/subprocess_error.rb +24 -0
  235. data/lib/r10k/util/symbolize_keys.rb +35 -0
  236. data/lib/r10k/version.rb +6 -0
  237. data/locales/config.yaml +21 -0
  238. data/locales/r10k.pot +545 -0
  239. data/r10k.gemspec +50 -0
  240. data/r10k.yaml.example +112 -0
  241. data/spec/fixtures/empty/.empty +0 -0
  242. data/spec/fixtures/integration/git/puppet-boolean-bare.tar +0 -0
  243. data/spec/fixtures/module/forge/bad_module/metadata.json +1 -0
  244. data/spec/fixtures/module/forge/eight_hundred/Modulefile +8 -0
  245. data/spec/fixtures/module/forge/eight_hundred/metadata.json +19 -0
  246. data/spec/fixtures/unit/action/r10k.yaml +5 -0
  247. data/spec/fixtures/unit/action/r10k_cachedir.yaml +2 -0
  248. data/spec/fixtures/unit/action/r10k_generate_types.yaml +3 -0
  249. data/spec/fixtures/unit/action/r10k_puppet_path.yaml +3 -0
  250. data/spec/fixtures/unit/puppetfile/argument-error/Puppetfile +1 -0
  251. data/spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile +5 -0
  252. data/spec/fixtures/unit/puppetfile/duplicate-module-error/Puppetfile +10 -0
  253. data/spec/fixtures/unit/puppetfile/invalid-syntax/Puppetfile +1 -0
  254. data/spec/fixtures/unit/puppetfile/load-error/Puppetfile +1 -0
  255. data/spec/fixtures/unit/puppetfile/name-error/Puppetfile +1 -0
  256. data/spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile +1 -0
  257. data/spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile +1 -0
  258. data/spec/fixtures/unit/util/purgeable/managed_one/expected_1 +0 -0
  259. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1 +0 -0
  260. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1 +0 -0
  261. data/spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1 +0 -0
  262. data/spec/fixtures/unit/util/purgeable/managed_two/expected_2 +0 -0
  263. data/spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2 +0 -0
  264. data/spec/fixtures/unit/util/subprocess/runner/no-execute.sh +3 -0
  265. data/spec/integration/git/rugged/bare_repository_spec.rb +13 -0
  266. data/spec/integration/git/rugged/thin_repository_spec.rb +14 -0
  267. data/spec/integration/git/rugged/working_repository_spec.rb +48 -0
  268. data/spec/integration/git/shellgit/bare_repository_spec.rb +13 -0
  269. data/spec/integration/git/shellgit/thin_repository_spec.rb +14 -0
  270. data/spec/integration/git/shellgit/working_repository_spec.rb +13 -0
  271. data/spec/integration/git/stateful_repository_spec.rb +159 -0
  272. data/spec/matchers/exit_with.rb +28 -0
  273. data/spec/matchers/match_realpath.rb +18 -0
  274. data/spec/r10k-mocks.rb +3 -0
  275. data/spec/r10k-mocks/mock_config.rb +33 -0
  276. data/spec/r10k-mocks/mock_env.rb +15 -0
  277. data/spec/r10k-mocks/mock_source.rb +13 -0
  278. data/spec/shared-contexts/git-fixtures.rb +55 -0
  279. data/spec/shared-examples/deploy-actions.rb +69 -0
  280. data/spec/shared-examples/git-repository.rb +38 -0
  281. data/spec/shared-examples/git/bare_repository.rb +132 -0
  282. data/spec/shared-examples/git/thin_repository.rb +26 -0
  283. data/spec/shared-examples/git/working_repository.rb +207 -0
  284. data/spec/shared-examples/puppetfile-action.rb +39 -0
  285. data/spec/shared-examples/settings/ancestry.rb +44 -0
  286. data/spec/shared-examples/subprocess-runner.rb +83 -0
  287. data/spec/spec_helper.rb +40 -0
  288. data/spec/unit/action/cri_runner_spec.rb +72 -0
  289. data/spec/unit/action/deploy/deploy_helpers_spec.rb +38 -0
  290. data/spec/unit/action/deploy/display_spec.rb +31 -0
  291. data/spec/unit/action/deploy/environment_spec.rb +395 -0
  292. data/spec/unit/action/deploy/module_spec.rb +139 -0
  293. data/spec/unit/action/puppetfile/check_spec.rb +41 -0
  294. data/spec/unit/action/puppetfile/cri_runner_spec.rb +47 -0
  295. data/spec/unit/action/puppetfile/install_spec.rb +84 -0
  296. data/spec/unit/action/puppetfile/purge_spec.rb +42 -0
  297. data/spec/unit/action/runner_spec.rb +213 -0
  298. data/spec/unit/action/visitor_spec.rb +39 -0
  299. data/spec/unit/cli_spec.rb +9 -0
  300. data/spec/unit/deployment/config_spec.rb +33 -0
  301. data/spec/unit/deployment_spec.rb +162 -0
  302. data/spec/unit/environment/base_spec.rb +109 -0
  303. data/spec/unit/environment/git_spec.rb +97 -0
  304. data/spec/unit/environment/name_spec.rb +135 -0
  305. data/spec/unit/environment/svn_spec.rb +133 -0
  306. data/spec/unit/errors/formatting_spec.rb +84 -0
  307. data/spec/unit/feature_spec.rb +50 -0
  308. data/spec/unit/forge/module_release_spec.rb +213 -0
  309. data/spec/unit/git/alternates_spec.rb +116 -0
  310. data/spec/unit/git/cache_spec.rb +55 -0
  311. data/spec/unit/git/rugged/cache_spec.rb +29 -0
  312. data/spec/unit/git/rugged/credentials_spec.rb +109 -0
  313. data/spec/unit/git/shellgit/cache_spec.rb +27 -0
  314. data/spec/unit/git/stateful_repository_spec.rb +40 -0
  315. data/spec/unit/git_spec.rb +102 -0
  316. data/spec/unit/initializers_spec.rb +68 -0
  317. data/spec/unit/instance_cache_spec.rb +78 -0
  318. data/spec/unit/keyed_factory_spec.rb +51 -0
  319. data/spec/unit/logging/terminaloutputter_spec.rb +53 -0
  320. data/spec/unit/logging_spec.rb +68 -0
  321. data/spec/unit/module/base_spec.rb +72 -0
  322. data/spec/unit/module/forge_spec.rb +207 -0
  323. data/spec/unit/module/git_spec.rb +274 -0
  324. data/spec/unit/module/metadata_file_spec.rb +68 -0
  325. data/spec/unit/module/svn_spec.rb +178 -0
  326. data/spec/unit/module_spec.rb +29 -0
  327. data/spec/unit/puppetfile_spec.rb +300 -0
  328. data/spec/unit/settings/collection_spec.rb +123 -0
  329. data/spec/unit/settings/container_spec.rb +92 -0
  330. data/spec/unit/settings/definition_spec.rb +79 -0
  331. data/spec/unit/settings/enum_definition_spec.rb +20 -0
  332. data/spec/unit/settings/inheritance_spec.rb +38 -0
  333. data/spec/unit/settings/list_spec.rb +88 -0
  334. data/spec/unit/settings/loader_spec.rb +110 -0
  335. data/spec/unit/settings/uri_definition_spec.rb +23 -0
  336. data/spec/unit/settings_spec.rb +246 -0
  337. data/spec/unit/source/base_spec.rb +31 -0
  338. data/spec/unit/source/exec_spec.rb +81 -0
  339. data/spec/unit/source/git_spec.rb +185 -0
  340. data/spec/unit/source/hash_spec.rb +54 -0
  341. data/spec/unit/source/svn_spec.rb +196 -0
  342. data/spec/unit/source/yaml_spec.rb +42 -0
  343. data/spec/unit/source_spec.rb +10 -0
  344. data/spec/unit/svn/remote_spec.rb +21 -0
  345. data/spec/unit/svn/working_dir_spec.rb +56 -0
  346. data/spec/unit/util/attempt_spec.rb +82 -0
  347. data/spec/unit/util/commands_spec.rb +61 -0
  348. data/spec/unit/util/exec_env_spec.rb +56 -0
  349. data/spec/unit/util/purgeable_spec.rb +230 -0
  350. data/spec/unit/util/setopts_spec.rb +59 -0
  351. data/spec/unit/util/subprocess/result_spec.rb +36 -0
  352. data/spec/unit/util/subprocess/runner/posix_spec.rb +7 -0
  353. data/spec/unit/util/subprocess/runner/pump_spec.rb +79 -0
  354. data/spec/unit/util/subprocess/runner/windows_spec.rb +7 -0
  355. data/spec/unit/util/subprocess/subprocess_error_spec.rb +26 -0
  356. data/spec/unit/util/subprocess_spec.rb +65 -0
  357. data/spec/unit/util/symbolize_keys_spec.rb +67 -0
  358. metadata +582 -0
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/subprocess/runner/pump'
3
+
4
+ describe R10K::Util::Subprocess::Runner::Pump do
5
+
6
+ let(:pair) { IO.pipe }
7
+ let(:r) { pair.first }
8
+ let(:w) { pair.last }
9
+
10
+ after do
11
+ pair.each { |io| io.close unless io.closed? }
12
+ end
13
+
14
+ subject { described_class.new(r) }
15
+
16
+ it "returns an empty string if nothing has been read" do
17
+ expect(subject.string).to eq('')
18
+ end
19
+
20
+ describe "reading all data in the stream" do
21
+ it "reads data until the stream reaches EOF" do
22
+ subject.start
23
+ w << "hello"
24
+ w << " "
25
+ w << "world!"
26
+ w.close
27
+ subject.wait
28
+ expect(subject.string).to eq("hello world!")
29
+ end
30
+ end
31
+
32
+ describe "halting" do
33
+ it "does not read any more information read off the pipe" do
34
+ subject.min_delay = 0.01
35
+ subject.start
36
+ w << "hello"
37
+
38
+ # This should ensure that we yield to the pumping thread. If this test
39
+ # sporadically fails then we may need to increase the timeout.
40
+ sleep 0.1
41
+ subject.halt!
42
+ w << " world!"
43
+
44
+ expect(subject.string).to eq("hello")
45
+ end
46
+ end
47
+
48
+ describe "backing off" do
49
+ it "does not back off more than the max delay time" do
50
+ max_delay = subject.min_delay * 2
51
+ subject.max_delay = max_delay
52
+ subject.start
53
+ sleep max_delay * 2
54
+
55
+ Timeout.timeout(max_delay * 1.5) do
56
+ subject.halt!
57
+ end
58
+
59
+ end
60
+ end
61
+
62
+ # Linux 2.6.11+ has a maximum pipe capacity of 64 KiB, and writing to the
63
+ # pipe when the pipe is at capacity will block. To make sure the pump is
64
+ # actively removing contents from the pipe we need to attempt to fill up
65
+ # the entire pipe.
66
+ #
67
+ # See man pipe(7)
68
+ it "does not block if more than 64 kilobytes are fed into the pipe" do
69
+ # The maximum pipe buffer size is 2 ** 16 bytes, so that's the minimum
70
+ # amount of data needed to cause further writes to block. We then double
71
+ # this value to make sure that we are continuously emptying the pipe.
72
+ pipe_buffer_size = 2 ** 17
73
+ blob = "buffalo!" * pipe_buffer_size
74
+ subject.start
75
+ Timeout.timeout(60) { w << blob }
76
+ w.close
77
+ subject.wait
78
+ end
79
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/subprocess/runner'
3
+
4
+ describe R10K::Util::Subprocess::Runner::Windows, :if => R10K::Util::Platform.windows? do
5
+ fixture_root = File.expand_path('spec/fixtures/unit/util/subprocess/runner', PROJECT_ROOT)
6
+ it_behaves_like 'a subprocess runner', fixture_root
7
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/subprocess'
3
+
4
+ describe R10K::Util::Subprocess::SubprocessError do
5
+ let(:result) do
6
+ R10K::Util::Subprocess::Result.new(%w[/usr/bin/gti --zoom], "zooming on stdout", "zooming on stderr", 42)
7
+ end
8
+
9
+ describe "formatting the message" do
10
+ subject(:message) { described_class.new("Execution failed", :result => result).message }
11
+
12
+ it "includes the exception message and formatted result" do
13
+ expect(message).to eq(
14
+ [
15
+ "Execution failed:",
16
+ "Command: /usr/bin/gti --zoom",
17
+ "Stdout:",
18
+ "zooming on stdout",
19
+ "Stderr:",
20
+ "zooming on stderr",
21
+ "Exit code: 42",
22
+ ].join("\n")
23
+ )
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/subprocess'
3
+
4
+ describe R10K::Util::Subprocess do
5
+
6
+ describe "selecting the runner implementation" do
7
+ it "uses the windows implementation on Windows platforms" do
8
+ expect(R10K::Util::Platform).to receive(:windows?).and_return true
9
+ expect(described_class.runner).to eq R10K::Util::Subprocess::Runner::Windows
10
+ end
11
+
12
+ it "uses the posix implementation when not on windows" do
13
+ expect(R10K::Util::Platform).to receive(:windows?).and_return true
14
+ expect(described_class.runner).to eq R10K::Util::Subprocess::Runner::Windows
15
+ end
16
+ end
17
+
18
+ describe "running commands" do
19
+ subject { described_class.new(['/bin/echo', 'hello', 'world']) }
20
+
21
+ let(:runner) do
22
+ double('R10K::Util::Subprocess::Runner').tap do |i|
23
+ allow(i).to receive(:run).and_return(result)
24
+ end
25
+ end
26
+
27
+ let(:result) { double('R10K::Util::Subprocess::Result').as_null_object }
28
+
29
+ before do
30
+ allow(described_class).to receive(:runner).and_return(double(:new => runner))
31
+ end
32
+
33
+ it "copies the cwd to the runner if a cwd is given" do
34
+ expect(runner).to receive(:cwd=).with('/tmp')
35
+ subject.cwd = '/tmp'
36
+ subject.execute
37
+ end
38
+
39
+ it "returns the result from the execution" do
40
+ expect(subject.execute).to eq result
41
+ end
42
+
43
+ describe "when the command returned with a non-zero exit status" do
44
+ before do
45
+ allow(runner).to receive(:crashed?).and_return true
46
+ end
47
+
48
+ it "raises an exception if raise_on_fail is true" do
49
+ subject.raise_on_fail = true
50
+
51
+ allow(result).to receive(:exit_code).and_return(255)
52
+ allow(result).to receive(:stderr).and_return('Command not found')
53
+
54
+ expect {
55
+ subject.execute
56
+ }.to raise_error(R10K::Util::Subprocess::SubprocessError, /Command exited with non-zero exit code/)
57
+ end
58
+
59
+ it "doesn't raise an exception if raise_on_fail is false" do
60
+ subject.raise_on_fail = false
61
+ expect { subject.execute }.to_not raise_error
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+ require 'r10k/util/symbolize_keys'
3
+
4
+ describe R10K::Util::SymbolizeKeys do
5
+ it "deletes all keys that are strings" do
6
+ hash = {'foo' => 'bar', :baz => 'quux'}
7
+ described_class.symbolize_keys!(hash)
8
+ expect(hash).to_not have_key('foo')
9
+ end
10
+
11
+ it "replaces the deleted keys with interned strings" do
12
+ hash = {'foo' => 'bar', :baz => 'quux'}
13
+
14
+ described_class.symbolize_keys!(hash)
15
+ expect(hash[:foo]).to eq 'bar'
16
+ end
17
+
18
+ it "raises an error if there is an existing symbol for a given string key" do
19
+ hash = {'foo' => 'bar', :foo => 'quux'}
20
+
21
+ expect {
22
+ described_class.symbolize_keys!(hash)
23
+ }.to raise_error(TypeError, /An existing interned key/)
24
+ end
25
+
26
+ it "does not modify existing symbol entries" do
27
+ hash = {'foo' => 'bar', :baz => 'quux'}
28
+
29
+ described_class.symbolize_keys!(hash)
30
+ expect(hash[:baz]).to eq 'quux'
31
+ end
32
+
33
+ it "does not modify keys that are not strings or symbols" do
34
+ key = %w[foo]
35
+ hash = {key => 'bar', :baz => 'quux'}
36
+ described_class.symbolize_keys!(hash)
37
+ expect(hash[key]).to eq 'bar'
38
+ end
39
+
40
+ context "when symbolizing recursively" do
41
+ it "can recursively symbolize keys in nested hash values" do
42
+ hash = {'foo' => {'bar' => 'baz'}}
43
+ described_class.symbolize_keys!(hash, true)
44
+ expect(hash).to eq({:foo => {:bar => 'baz'}})
45
+ end
46
+
47
+ it "recurses into hash values that had symbol keys" do
48
+ hash = {:foo => {'bar' => {'baz' => 'quux'}}}
49
+ described_class.symbolize_keys!(hash, true)
50
+ expect(hash).to eq({:foo => {:bar => {:baz => 'quux'}}})
51
+ end
52
+
53
+ it "recurses into array values whose items are hashes" do
54
+ hash = {'foo' => [ {'item1_key' => 'val'}, {'item2_key' => 'val'} ]}
55
+
56
+ described_class.symbolize_keys!(hash, true)
57
+ expect(hash).to eq({:foo => [ {:item1_key => 'val'}, {:item2_key => 'val'} ]})
58
+ end
59
+
60
+ it "ignores nested array items that are not hashes" do
61
+ hash = {'foo' => [ {'item1_key' => 'val'}, 'banana' ]}
62
+
63
+ described_class.symbolize_keys!(hash, true)
64
+ expect(hash).to eq({:foo => [ {:item1_key => 'val'}, 'banana' ]})
65
+ end
66
+ end
67
+ end
metadata ADDED
@@ -0,0 +1,582 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: r10k
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.5.2
5
+ platform: ruby
6
+ authors:
7
+ - Adrien Thebo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colored2
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: cri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.15.10
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: 3.0.0
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.15.10
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: 3.0.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: log4r
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.1.10
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '='
59
+ - !ruby/object:Gem::Version
60
+ version: 1.1.10
61
+ - !ruby/object:Gem::Dependency
62
+ name: multi_json
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.10'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.10'
75
+ - !ruby/object:Gem::Dependency
76
+ name: puppet_forge
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 2.3.0
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 2.3.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: gettext-setup
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.24'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.24'
103
+ - !ruby/object:Gem::Dependency
104
+ name: fast_gettext
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.1.0
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 1.1.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: gettext
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 3.0.2
124
+ - - "<"
125
+ - !ruby/object:Gem::Version
126
+ version: 3.3.0
127
+ type: :runtime
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 3.0.2
134
+ - - "<"
135
+ - !ruby/object:Gem::Version
136
+ version: 3.3.0
137
+ - !ruby/object:Gem::Dependency
138
+ name: rspec
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.1'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '3.1'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rake
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: yard
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: 0.9.11
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: 0.9.11
179
+ - !ruby/object:Gem::Dependency
180
+ name: minitar
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: 0.9.0
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 0.9.0
193
+ description: |2
194
+ R10K provides a general purpose toolset for deploying Puppet environments and modules.
195
+ It implements the Puppetfile format and provides a native implementation of Puppet
196
+ dynamic environments.
197
+ email: adrien@somethingsinistral.net
198
+ executables:
199
+ - r10k
200
+ extensions: []
201
+ extra_rdoc_files: []
202
+ files:
203
+ - ".gitattributes"
204
+ - ".github/pull_request_template.md"
205
+ - ".github/workflows/docker.yml"
206
+ - ".github/workflows/release.yml"
207
+ - ".gitignore"
208
+ - ".travis.yml"
209
+ - CHANGELOG.mkd
210
+ - CODEOWNERS
211
+ - CONTRIBUTING.mkd
212
+ - Gemfile
213
+ - LICENSE
214
+ - README.mkd
215
+ - Rakefile
216
+ - azure-pipelines.yml
217
+ - bin/r10k
218
+ - doc/common-patterns.mkd
219
+ - doc/dynamic-environments.mkd
220
+ - doc/dynamic-environments/configuration.mkd
221
+ - doc/dynamic-environments/git-environments.mkd
222
+ - doc/dynamic-environments/introduction.mkd
223
+ - doc/dynamic-environments/master-configuration.mkd
224
+ - doc/dynamic-environments/quickstart.mkd
225
+ - doc/dynamic-environments/svn-environments.mkd
226
+ - doc/dynamic-environments/usage.mkd
227
+ - doc/dynamic-environments/workflow-guide.mkd
228
+ - doc/faq.mkd
229
+ - doc/git/cloning-and-mirroring.mkd
230
+ - doc/git/providers.mkd
231
+ - doc/puppetfile.mkd
232
+ - doc/updating-your-puppetfile.mkd
233
+ - docker/.gitignore
234
+ - docker/.rspec
235
+ - docker/Gemfile
236
+ - docker/Makefile
237
+ - docker/README.md
238
+ - docker/r10k/Dockerfile
239
+ - docker/r10k/adduser.sh
240
+ - docker/r10k/docker-entrypoint.d/10-analytics.sh
241
+ - docker/r10k/docker-entrypoint.sh
242
+ - docker/r10k/release.Dockerfile
243
+ - docker/spec/dockerfile_spec.rb
244
+ - docker/spec/fixtures/Puppetfile
245
+ - integration/Gemfile
246
+ - integration/README.mkd
247
+ - integration/Rakefile
248
+ - integration/component/pre-suite/05_install_dev_r10k.rb
249
+ - integration/files/README.mkd
250
+ - integration/files/hiera.yaml
251
+ - integration/files/modules/helloworld/manifests/init.pp
252
+ - integration/files/modules/hieratest/manifests/init.pp
253
+ - integration/files/modules/unicode/files/pretend_unicode
254
+ - integration/files/modules/unicode/manifests/init.pp
255
+ - integration/files/pre-suite/git_config.pp.erb
256
+ - integration/files/pre-suite/prod_env.config
257
+ - integration/files/r10k_conf.yaml.erb
258
+ - integration/lib/README.mkd
259
+ - integration/lib/git_utils.rb
260
+ - integration/lib/master_manipulator.rb
261
+ - integration/lib/r10k_utils.rb
262
+ - integration/manifests/README.mkd
263
+ - integration/pre-suite/00_pe_install.rb
264
+ - integration/pre-suite/10_git_config.rb
265
+ - integration/pre-suite/20_pe_r10k.rb
266
+ - integration/pre-suite/README.mkd
267
+ - integration/tests/Puppetfile/HTTP_PROXY_affects_forge_source.rb
268
+ - integration/tests/Puppetfile/HTTP_PROXY_affects_git_source.rb
269
+ - integration/tests/README.mkd
270
+ - integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb
271
+ - integration/tests/basic_functionality/negative/neg_deploy_with_invalid_r10k_yaml.rb
272
+ - integration/tests/basic_functionality/negative/neg_deploy_with_missing_r10k_yaml.rb
273
+ - integration/tests/basic_functionality/negative/neg_invalid_git_provider.rb
274
+ - integration/tests/basic_functionality/negative/negative_bad_proxy.rb
275
+ - integration/tests/basic_functionality/proxy_specified_in_configuration.rb
276
+ - integration/tests/basic_functionality/proxy_with_pe_only_module.rb
277
+ - integration/tests/basic_functionality/proxy_with_puppetfile.rb
278
+ - integration/tests/basic_functionality/rugged_git_provider_with_ssh.rb
279
+ - integration/tests/basic_functionality/rugged_git_provider_without_ssh.rb
280
+ - integration/tests/command_line/deploy_env_without_mod_update.rb
281
+ - integration/tests/command_line/negative/neg_deploy_env_with_module_update.rb
282
+ - integration/tests/command_line/negative/neg_invalid_cmd_line_arg.rb
283
+ - integration/tests/git_source/HTTP_proxy_and_git_source.rb
284
+ - integration/tests/git_source/git_source_git.rb
285
+ - integration/tests/git_source/git_source_ssh.rb
286
+ - integration/tests/git_source/git_source_submodule.rb
287
+ - integration/tests/git_source/negative/neg_git_broken_remote.rb
288
+ - integration/tests/git_source/negative/neg_git_unauthorized_https.rb
289
+ - integration/tests/git_source/negative/neg_git_unauthorized_ssh.rb
290
+ - integration/tests/git_source/negative/neg_git_unicode_branch.rb
291
+ - integration/tests/i18n/deploy_module_with_unicode_in_file_name.rb
292
+ - integration/tests/purging/content_not_purged_at_root.rb
293
+ - integration/tests/purging/default_purging.rb
294
+ - integration/tests/purging/does_not_purge_files_on_white_list.rb
295
+ - integration/tests/purging/invalid_whitelist_types.rb
296
+ - integration/tests/user_scenario/basic_workflow/multi_env_1000_branches.rb
297
+ - integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb
298
+ - integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb
299
+ - integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb
300
+ - integration/tests/user_scenario/basic_workflow/multi_env_multi_source.rb
301
+ - integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb
302
+ - integration/tests/user_scenario/basic_workflow/negative/neg_bad_basedir.rb
303
+ - integration/tests/user_scenario/basic_workflow/negative/neg_bad_forge_module.rb
304
+ - integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb
305
+ - integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb
306
+ - integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_remote.rb
307
+ - integration/tests/user_scenario/basic_workflow/negative/neg_branch_name_collision.rb
308
+ - integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb
309
+ - integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb
310
+ - integration/tests/user_scenario/basic_workflow/negative/neg_inaccessible_forge.rb
311
+ - integration/tests/user_scenario/basic_workflow/negative/neg_invalid_env_name.rb
312
+ - integration/tests/user_scenario/basic_workflow/negative/neg_invalid_puppet_file.rb
313
+ - integration/tests/user_scenario/basic_workflow/negative/neg_module_specified_at_deleted_release.rb
314
+ - integration/tests/user_scenario/basic_workflow/negative/neg_read_only.rb
315
+ - integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb
316
+ - integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb
317
+ - integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb
318
+ - integration/tests/user_scenario/basic_workflow/single_env_custom_forge_module.rb
319
+ - integration/tests/user_scenario/basic_workflow/single_env_custom_module.rb
320
+ - integration/tests/user_scenario/basic_workflow/single_env_large_files.rb
321
+ - integration/tests/user_scenario/basic_workflow/single_env_module_already_installed.rb
322
+ - integration/tests/user_scenario/basic_workflow/single_env_module_last_release_deleted.rb
323
+ - integration/tests/user_scenario/basic_workflow/single_env_non-existent_base_dir.rb
324
+ - integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb
325
+ - integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb
326
+ - integration/tests/user_scenario/basic_workflow/single_env_unicode_paths.rb
327
+ - integration/tests/user_scenario/basic_workflow/single_env_upgrade_forge_mod_revert_change.rb
328
+ - integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb
329
+ - integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb
330
+ - integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb
331
+ - integration/tests/user_scenario/complex_workflow/single_env_git_module_update.rb
332
+ - lib/r10k.rb
333
+ - lib/r10k/action/base.rb
334
+ - lib/r10k/action/cri_runner.rb
335
+ - lib/r10k/action/deploy.rb
336
+ - lib/r10k/action/deploy/deploy_helpers.rb
337
+ - lib/r10k/action/deploy/display.rb
338
+ - lib/r10k/action/deploy/environment.rb
339
+ - lib/r10k/action/deploy/module.rb
340
+ - lib/r10k/action/puppetfile.rb
341
+ - lib/r10k/action/puppetfile/check.rb
342
+ - lib/r10k/action/puppetfile/cri_runner.rb
343
+ - lib/r10k/action/puppetfile/install.rb
344
+ - lib/r10k/action/puppetfile/purge.rb
345
+ - lib/r10k/action/runner.rb
346
+ - lib/r10k/action/visitor.rb
347
+ - lib/r10k/cli.rb
348
+ - lib/r10k/cli/deploy.rb
349
+ - lib/r10k/cli/ext/logging.rb
350
+ - lib/r10k/cli/help.rb
351
+ - lib/r10k/cli/puppetfile.rb
352
+ - lib/r10k/cli/version.rb
353
+ - lib/r10k/deployment.rb
354
+ - lib/r10k/deployment/config.rb
355
+ - lib/r10k/environment.rb
356
+ - lib/r10k/environment/bare.rb
357
+ - lib/r10k/environment/base.rb
358
+ - lib/r10k/environment/git.rb
359
+ - lib/r10k/environment/name.rb
360
+ - lib/r10k/environment/svn.rb
361
+ - lib/r10k/environment/with_modules.rb
362
+ - lib/r10k/errors.rb
363
+ - lib/r10k/errors/formatting.rb
364
+ - lib/r10k/feature.rb
365
+ - lib/r10k/feature/collection.rb
366
+ - lib/r10k/features.rb
367
+ - lib/r10k/forge/module_release.rb
368
+ - lib/r10k/git.rb
369
+ - lib/r10k/git/alternates.rb
370
+ - lib/r10k/git/cache.rb
371
+ - lib/r10k/git/errors.rb
372
+ - lib/r10k/git/rugged.rb
373
+ - lib/r10k/git/rugged/bare_repository.rb
374
+ - lib/r10k/git/rugged/base_repository.rb
375
+ - lib/r10k/git/rugged/cache.rb
376
+ - lib/r10k/git/rugged/credentials.rb
377
+ - lib/r10k/git/rugged/thin_repository.rb
378
+ - lib/r10k/git/rugged/working_repository.rb
379
+ - lib/r10k/git/shellgit.rb
380
+ - lib/r10k/git/shellgit/bare_repository.rb
381
+ - lib/r10k/git/shellgit/base_repository.rb
382
+ - lib/r10k/git/shellgit/cache.rb
383
+ - lib/r10k/git/shellgit/thin_repository.rb
384
+ - lib/r10k/git/shellgit/working_repository.rb
385
+ - lib/r10k/git/stateful_repository.rb
386
+ - lib/r10k/initializers.rb
387
+ - lib/r10k/instance_cache.rb
388
+ - lib/r10k/keyed_factory.rb
389
+ - lib/r10k/logging.rb
390
+ - lib/r10k/logging/terminaloutputter.rb
391
+ - lib/r10k/module.rb
392
+ - lib/r10k/module/base.rb
393
+ - lib/r10k/module/forge.rb
394
+ - lib/r10k/module/git.rb
395
+ - lib/r10k/module/local.rb
396
+ - lib/r10k/module/metadata_file.rb
397
+ - lib/r10k/module/svn.rb
398
+ - lib/r10k/puppetfile.rb
399
+ - lib/r10k/settings.rb
400
+ - lib/r10k/settings/collection.rb
401
+ - lib/r10k/settings/container.rb
402
+ - lib/r10k/settings/definition.rb
403
+ - lib/r10k/settings/enum_definition.rb
404
+ - lib/r10k/settings/helpers.rb
405
+ - lib/r10k/settings/list.rb
406
+ - lib/r10k/settings/loader.rb
407
+ - lib/r10k/settings/mixin.rb
408
+ - lib/r10k/settings/uri_definition.rb
409
+ - lib/r10k/source.rb
410
+ - lib/r10k/source/base.rb
411
+ - lib/r10k/source/exec.rb
412
+ - lib/r10k/source/git.rb
413
+ - lib/r10k/source/hash.rb
414
+ - lib/r10k/source/svn.rb
415
+ - lib/r10k/source/yaml.rb
416
+ - lib/r10k/source/yamldir.rb
417
+ - lib/r10k/svn.rb
418
+ - lib/r10k/svn/remote.rb
419
+ - lib/r10k/svn/working_dir.rb
420
+ - lib/r10k/util/attempt.rb
421
+ - lib/r10k/util/basedir.rb
422
+ - lib/r10k/util/commands.rb
423
+ - lib/r10k/util/exec_env.rb
424
+ - lib/r10k/util/license.rb
425
+ - lib/r10k/util/platform.rb
426
+ - lib/r10k/util/purgeable.rb
427
+ - lib/r10k/util/setopts.rb
428
+ - lib/r10k/util/subprocess.rb
429
+ - lib/r10k/util/subprocess/result.rb
430
+ - lib/r10k/util/subprocess/runner.rb
431
+ - lib/r10k/util/subprocess/runner/jruby.rb
432
+ - lib/r10k/util/subprocess/runner/posix.rb
433
+ - lib/r10k/util/subprocess/runner/pump.rb
434
+ - lib/r10k/util/subprocess/runner/windows.rb
435
+ - lib/r10k/util/subprocess/subprocess_error.rb
436
+ - lib/r10k/util/symbolize_keys.rb
437
+ - lib/r10k/version.rb
438
+ - locales/config.yaml
439
+ - locales/r10k.pot
440
+ - r10k.gemspec
441
+ - r10k.yaml.example
442
+ - spec/fixtures/empty/.empty
443
+ - spec/fixtures/integration/git/puppet-boolean-bare.tar
444
+ - spec/fixtures/module/forge/bad_module/metadata.json
445
+ - spec/fixtures/module/forge/eight_hundred/Modulefile
446
+ - spec/fixtures/module/forge/eight_hundred/metadata.json
447
+ - spec/fixtures/unit/action/r10k.yaml
448
+ - spec/fixtures/unit/action/r10k_cachedir.yaml
449
+ - spec/fixtures/unit/action/r10k_generate_types.yaml
450
+ - spec/fixtures/unit/action/r10k_puppet_path.yaml
451
+ - spec/fixtures/unit/puppetfile/argument-error/Puppetfile
452
+ - spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile
453
+ - spec/fixtures/unit/puppetfile/duplicate-module-error/Puppetfile
454
+ - spec/fixtures/unit/puppetfile/invalid-syntax/Puppetfile
455
+ - spec/fixtures/unit/puppetfile/load-error/Puppetfile
456
+ - spec/fixtures/unit/puppetfile/name-error/Puppetfile
457
+ - spec/fixtures/unit/puppetfile/valid-forge-with-version/Puppetfile
458
+ - spec/fixtures/unit/puppetfile/valid-forge-without-version/Puppetfile
459
+ - spec/fixtures/unit/util/purgeable/managed_one/expected_1
460
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_expected_1
461
+ - spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/subdir_unmanaged_1
462
+ - spec/fixtures/unit/util/purgeable/managed_one/unmanaged_1
463
+ - spec/fixtures/unit/util/purgeable/managed_two/expected_2
464
+ - spec/fixtures/unit/util/purgeable/managed_two/unmanaged_2
465
+ - spec/fixtures/unit/util/subprocess/runner/no-execute.sh
466
+ - spec/integration/git/rugged/bare_repository_spec.rb
467
+ - spec/integration/git/rugged/thin_repository_spec.rb
468
+ - spec/integration/git/rugged/working_repository_spec.rb
469
+ - spec/integration/git/shellgit/bare_repository_spec.rb
470
+ - spec/integration/git/shellgit/thin_repository_spec.rb
471
+ - spec/integration/git/shellgit/working_repository_spec.rb
472
+ - spec/integration/git/stateful_repository_spec.rb
473
+ - spec/matchers/exit_with.rb
474
+ - spec/matchers/match_realpath.rb
475
+ - spec/r10k-mocks.rb
476
+ - spec/r10k-mocks/mock_config.rb
477
+ - spec/r10k-mocks/mock_env.rb
478
+ - spec/r10k-mocks/mock_source.rb
479
+ - spec/shared-contexts/git-fixtures.rb
480
+ - spec/shared-examples/deploy-actions.rb
481
+ - spec/shared-examples/git-repository.rb
482
+ - spec/shared-examples/git/bare_repository.rb
483
+ - spec/shared-examples/git/thin_repository.rb
484
+ - spec/shared-examples/git/working_repository.rb
485
+ - spec/shared-examples/puppetfile-action.rb
486
+ - spec/shared-examples/settings/ancestry.rb
487
+ - spec/shared-examples/subprocess-runner.rb
488
+ - spec/spec_helper.rb
489
+ - spec/unit/action/cri_runner_spec.rb
490
+ - spec/unit/action/deploy/deploy_helpers_spec.rb
491
+ - spec/unit/action/deploy/display_spec.rb
492
+ - spec/unit/action/deploy/environment_spec.rb
493
+ - spec/unit/action/deploy/module_spec.rb
494
+ - spec/unit/action/puppetfile/check_spec.rb
495
+ - spec/unit/action/puppetfile/cri_runner_spec.rb
496
+ - spec/unit/action/puppetfile/install_spec.rb
497
+ - spec/unit/action/puppetfile/purge_spec.rb
498
+ - spec/unit/action/runner_spec.rb
499
+ - spec/unit/action/visitor_spec.rb
500
+ - spec/unit/cli_spec.rb
501
+ - spec/unit/deployment/config_spec.rb
502
+ - spec/unit/deployment_spec.rb
503
+ - spec/unit/environment/base_spec.rb
504
+ - spec/unit/environment/git_spec.rb
505
+ - spec/unit/environment/name_spec.rb
506
+ - spec/unit/environment/svn_spec.rb
507
+ - spec/unit/errors/formatting_spec.rb
508
+ - spec/unit/feature_spec.rb
509
+ - spec/unit/forge/module_release_spec.rb
510
+ - spec/unit/git/alternates_spec.rb
511
+ - spec/unit/git/cache_spec.rb
512
+ - spec/unit/git/rugged/cache_spec.rb
513
+ - spec/unit/git/rugged/credentials_spec.rb
514
+ - spec/unit/git/shellgit/cache_spec.rb
515
+ - spec/unit/git/stateful_repository_spec.rb
516
+ - spec/unit/git_spec.rb
517
+ - spec/unit/initializers_spec.rb
518
+ - spec/unit/instance_cache_spec.rb
519
+ - spec/unit/keyed_factory_spec.rb
520
+ - spec/unit/logging/terminaloutputter_spec.rb
521
+ - spec/unit/logging_spec.rb
522
+ - spec/unit/module/base_spec.rb
523
+ - spec/unit/module/forge_spec.rb
524
+ - spec/unit/module/git_spec.rb
525
+ - spec/unit/module/metadata_file_spec.rb
526
+ - spec/unit/module/svn_spec.rb
527
+ - spec/unit/module_spec.rb
528
+ - spec/unit/puppetfile_spec.rb
529
+ - spec/unit/settings/collection_spec.rb
530
+ - spec/unit/settings/container_spec.rb
531
+ - spec/unit/settings/definition_spec.rb
532
+ - spec/unit/settings/enum_definition_spec.rb
533
+ - spec/unit/settings/inheritance_spec.rb
534
+ - spec/unit/settings/list_spec.rb
535
+ - spec/unit/settings/loader_spec.rb
536
+ - spec/unit/settings/uri_definition_spec.rb
537
+ - spec/unit/settings_spec.rb
538
+ - spec/unit/source/base_spec.rb
539
+ - spec/unit/source/exec_spec.rb
540
+ - spec/unit/source/git_spec.rb
541
+ - spec/unit/source/hash_spec.rb
542
+ - spec/unit/source/svn_spec.rb
543
+ - spec/unit/source/yaml_spec.rb
544
+ - spec/unit/source_spec.rb
545
+ - spec/unit/svn/remote_spec.rb
546
+ - spec/unit/svn/working_dir_spec.rb
547
+ - spec/unit/util/attempt_spec.rb
548
+ - spec/unit/util/commands_spec.rb
549
+ - spec/unit/util/exec_env_spec.rb
550
+ - spec/unit/util/purgeable_spec.rb
551
+ - spec/unit/util/setopts_spec.rb
552
+ - spec/unit/util/subprocess/result_spec.rb
553
+ - spec/unit/util/subprocess/runner/posix_spec.rb
554
+ - spec/unit/util/subprocess/runner/pump_spec.rb
555
+ - spec/unit/util/subprocess/runner/windows_spec.rb
556
+ - spec/unit/util/subprocess/subprocess_error_spec.rb
557
+ - spec/unit/util/subprocess_spec.rb
558
+ - spec/unit/util/symbolize_keys_spec.rb
559
+ homepage: https://github.com/puppetlabs/r10k
560
+ licenses:
561
+ - Apache-2.0
562
+ metadata: {}
563
+ post_install_message:
564
+ rdoc_options: []
565
+ require_paths:
566
+ - lib
567
+ required_ruby_version: !ruby/object:Gem::Requirement
568
+ requirements:
569
+ - - ">="
570
+ - !ruby/object:Gem::Version
571
+ version: 2.3.0
572
+ required_rubygems_version: !ruby/object:Gem::Requirement
573
+ requirements:
574
+ - - ">="
575
+ - !ruby/object:Gem::Version
576
+ version: '0'
577
+ requirements: []
578
+ rubygems_version: 3.0.3
579
+ signing_key:
580
+ specification_version: 4
581
+ summary: Puppet environment and module deployment
582
+ test_files: []