r10k 3.5.2

Sign up to get free protection for your applications and to get access to all the features.
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: []