lono 7.5.2 → 8.0.0.pre.rc3

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 (517) hide show
  1. checksums.yaml +4 -4
  2. data/.cody/README.md +5 -15
  3. data/.cody/acceptance/bin/build.sh +52 -0
  4. data/.cody/acceptance/buildspec.yml +10 -0
  5. data/.cody/acceptance/project.rb +6 -0
  6. data/.cody/{role.rb → acceptance/role.rb} +0 -0
  7. data/.cody/shared/script/install/lono.sh +40 -0
  8. data/.cody/shared/script/install.sh +5 -0
  9. data/CHANGELOG.md +46 -5
  10. data/CONTRIBUTING.md +2 -2
  11. data/Gemfile +3 -1
  12. data/LICENSE.txt +201 -1
  13. data/README.md +6 -11
  14. data/lib/lono/api/client.rb +3 -2
  15. data/lib/lono/app/callable_option/concern.rb +12 -0
  16. data/lib/lono/app/callable_option.rb +56 -0
  17. data/lib/lono/app/inits.rb +13 -0
  18. data/lib/lono/app.rb +73 -0
  19. data/lib/lono/autoloader.rb +3 -2
  20. data/lib/lono/aws_services/helper.rb +41 -6
  21. data/lib/lono/aws_services.rb +37 -6
  22. data/lib/lono/blueprint.rb +3 -11
  23. data/lib/lono/booter.rb +28 -0
  24. data/lib/lono/builder/allow/base.rb +54 -0
  25. data/lib/lono/builder/allow/env.rb +17 -0
  26. data/lib/lono/builder/allow/region.rb +20 -0
  27. data/lib/lono/builder/allow.rb +8 -0
  28. data/lib/lono/builder/configset/combiner.rb +145 -0
  29. data/lib/lono/builder/configset/definition/base.rb +47 -0
  30. data/lib/lono/builder/configset/definition/context.rb +29 -0
  31. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/auth.rb +1 -1
  32. data/lib/lono/{configset/strategy/helpers/dsl/core.rb → builder/configset/definition/dsl/syntax/content.rb} +11 -3
  33. data/lib/lono/{configset/strategy/helpers/dsl/syntax.rb → builder/configset/definition/dsl/syntax/core.rb} +15 -9
  34. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/package.rb +1 -1
  35. data/lib/lono/builder/configset/definition/dsl/syntax.rb +5 -0
  36. data/lib/lono/{configset/strategy → builder/configset/definition}/dsl.rb +10 -14
  37. data/lib/lono/{configset/strategy → builder/configset/definition}/erb.rb +13 -16
  38. data/lib/lono/builder/configset/definition.rb +18 -0
  39. data/lib/lono/builder/configset/evaluator.rb +10 -0
  40. data/lib/lono/builder/configset/registration.rb +35 -0
  41. data/lib/lono/builder/context.rb +40 -0
  42. data/lib/lono/builder/dsl/evaluator.rb +45 -0
  43. data/lib/lono/builder/dsl/finalizer/base.rb +8 -0
  44. data/lib/lono/builder/dsl/finalizer/configsets.rb +20 -0
  45. data/lib/lono/builder/dsl/finalizer/files/base.rb +4 -0
  46. data/lib/lono/builder/dsl/finalizer/files/build.rb +58 -0
  47. data/lib/lono/builder/dsl/finalizer/files/replace.rb +31 -0
  48. data/lib/lono/builder/dsl/finalizer/files.rb +9 -0
  49. data/lib/lono/{template/strategy → builder}/dsl/finalizer/parameter_groups.rb +6 -5
  50. data/lib/lono/builder/dsl/finalizer.rb +15 -0
  51. data/lib/lono/{template/strategy/dsl/builder/helpers/ec2_helper.rb → builder/dsl/helpers/ec2.rb} +3 -3
  52. data/lib/lono/builder/dsl/helpers/files.rb +7 -0
  53. data/lib/lono/builder/dsl/helpers/partials.rb +140 -0
  54. data/lib/lono/{template/strategy/dsl/builder/helpers/s3_helper.rb → builder/dsl/helpers/s3.rb} +3 -3
  55. data/lib/lono/{template/context/ssm_fetcher.rb → builder/dsl/helpers/ssm/fetcher.rb} +5 -3
  56. data/lib/lono/{template/context/helpers.rb → builder/dsl/helpers/ssm.rb} +3 -3
  57. data/lib/lono/{template/strategy/dsl/builder/helpers/stack_helper.rb → builder/dsl/helpers/stack.rb} +14 -9
  58. data/lib/lono/{template/strategy/dsl/builder/helpers/tags_helper.rb → builder/dsl/helpers/tags.rb} +2 -2
  59. data/lib/lono/builder/dsl/helpers/template_file.rb +66 -0
  60. data/lib/lono/builder/dsl/helpers.rb +5 -0
  61. data/lib/lono/builder/dsl/syntax/core/base.rb +22 -0
  62. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/condition.rb +1 -1
  63. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/mapping.rb +1 -1
  64. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/output.rb +1 -1
  65. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/parameter.rb +1 -1
  66. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/resource/property_mover.rb +12 -2
  67. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/resource.rb +1 -1
  68. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/section.rb +1 -1
  69. data/lib/lono/builder/dsl/syntax/core/squeezer.rb +38 -0
  70. data/lib/lono/{template/strategy/dsl/builder/section/methods.rb → builder/dsl/syntax/core.rb} +8 -8
  71. data/lib/lono/{template/strategy/dsl/builder → builder/dsl/syntax}/fn.rb +2 -2
  72. data/lib/lono/{template/strategy/dsl/builder → builder/dsl}/syntax/parameter_group.rb +1 -1
  73. data/lib/lono/builder/dsl/syntax.rb +9 -0
  74. data/lib/lono/builder/dsl.rb +14 -0
  75. data/lib/lono/{param/generator.rb → builder/param.rb} +24 -22
  76. data/lib/lono/builder/template/aws_service.rb +15 -0
  77. data/lib/lono/builder/template/bashify.rb +43 -0
  78. data/lib/lono/{output/template.rb → builder/template/output.rb} +14 -7
  79. data/lib/lono/{template → builder/template}/post_processor.rb +4 -4
  80. data/lib/lono/builder/template/upload.rb +8 -0
  81. data/lib/lono/builder/template.rb +55 -0
  82. data/lib/lono/{template/strategy/dsl/builder → builder/util}/stringify.rb +1 -1
  83. data/lib/lono/bundler/cli/base.rb +10 -0
  84. data/lib/lono/bundler/cli/bundle.rb +44 -0
  85. data/lib/lono/bundler/cli/clean.rb +27 -0
  86. data/lib/lono/bundler/cli/help/bundle.md +3 -0
  87. data/lib/lono/bundler/cli/help.rb +11 -0
  88. data/lib/lono/bundler/cli.rb +7 -0
  89. data/lib/lono/bundler/component/concerns/local_concern.rb +10 -0
  90. data/lib/lono/bundler/component/concerns/notation_concern.rb +59 -0
  91. data/lib/lono/bundler/component/concerns/path_concern.rb +68 -0
  92. data/lib/lono/bundler/component/concerns/stack_concern.rb +60 -0
  93. data/lib/lono/bundler/component/fetcher/base.rb +27 -0
  94. data/lib/lono/bundler/component/fetcher/gcs.rb +69 -0
  95. data/lib/lono/bundler/component/fetcher/git.rb +69 -0
  96. data/lib/lono/bundler/component/fetcher/local.rb +15 -0
  97. data/lib/lono/bundler/component/fetcher/s3.rb +66 -0
  98. data/lib/lono/bundler/component/fetcher.rb +18 -0
  99. data/lib/lono/bundler/component/http/concern.rb +45 -0
  100. data/lib/lono/bundler/component/http/source.rb +19 -0
  101. data/lib/lono/bundler/component/org_repo.rb +65 -0
  102. data/lib/lono/bundler/component/props/extension.rb +18 -0
  103. data/lib/lono/bundler/component/props/typer.rb +41 -0
  104. data/lib/lono/bundler/component/props.rb +122 -0
  105. data/lib/lono/bundler/component/registry.rb +136 -0
  106. data/lib/lono/bundler/component.rb +52 -0
  107. data/lib/lono/bundler/config.rb +18 -0
  108. data/lib/lono/bundler/dsl/syntax.rb +46 -0
  109. data/lib/lono/bundler/dsl.rb +21 -0
  110. data/lib/lono/bundler/exporter/base.rb +6 -0
  111. data/lib/lono/bundler/exporter/copy.rb +22 -0
  112. data/lib/lono/bundler/exporter.rb +50 -0
  113. data/lib/lono/bundler/extract/tar.rb +33 -0
  114. data/lib/lono/bundler/extract/zip.rb +16 -0
  115. data/lib/lono/bundler/info.rb +39 -0
  116. data/lib/lono/bundler/list.rb +26 -0
  117. data/lib/lono/bundler/lockfile/version_comparer.rb +56 -0
  118. data/lib/lono/bundler/lockfile/yamler.rb +36 -0
  119. data/lib/lono/bundler/lockfile.rb +66 -0
  120. data/lib/lono/bundler/lonofile.rb +32 -0
  121. data/lib/lono/bundler/runner.rb +27 -0
  122. data/lib/lono/bundler/syncer.rb +70 -0
  123. data/lib/lono/bundler/util/git.rb +37 -0
  124. data/lib/lono/bundler/util/logging.rb +7 -0
  125. data/lib/lono/bundler/util/sure.rb +5 -0
  126. data/lib/lono/{bundle.rb → bundler.rb} +38 -4
  127. data/lib/lono/cfn/base.rb +9 -195
  128. data/lib/lono/cfn/cancel.rb +12 -29
  129. data/lib/lono/cfn/concerns/build.rb +10 -0
  130. data/lib/lono/cfn/concerns/template_output.rb +10 -0
  131. data/lib/lono/cfn/concerns.rb +43 -0
  132. data/lib/lono/cfn/delete.rb +8 -32
  133. data/lib/lono/cfn/deploy/base.rb +4 -0
  134. data/lib/lono/cfn/deploy/iam.rb +48 -0
  135. data/lib/lono/cfn/deploy/notification.rb +8 -0
  136. data/lib/lono/cfn/deploy/operable.rb +18 -0
  137. data/lib/lono/cfn/deploy/opts.rb +49 -0
  138. data/lib/lono/cfn/deploy/rollback.rb +46 -0
  139. data/lib/lono/cfn/deploy/tags.rb +18 -0
  140. data/lib/lono/cfn/deploy.rb +100 -5
  141. data/lib/lono/cfn/download.rb +4 -7
  142. data/lib/lono/cfn/output.rb +49 -0
  143. data/lib/lono/cfn/plan/base.rb +19 -0
  144. data/lib/lono/cfn/plan/changeset/base.rb +19 -0
  145. data/lib/lono/cfn/plan/changeset/notifications.rb +24 -0
  146. data/lib/lono/cfn/plan/changeset/outputs.rb +25 -0
  147. data/lib/lono/cfn/plan/changeset/resources.rb +48 -0
  148. data/lib/lono/cfn/plan/changeset/tags.rb +16 -0
  149. data/lib/lono/cfn/plan/changeset.rb +136 -0
  150. data/lib/lono/cfn/plan/concerns.rb +10 -0
  151. data/lib/lono/cfn/plan/delete.rb +16 -0
  152. data/lib/lono/cfn/plan/diff/base.rb +10 -0
  153. data/lib/lono/cfn/plan/diff/data.rb +62 -0
  154. data/lib/lono/cfn/plan/diff/file.rb +57 -0
  155. data/lib/lono/cfn/plan/new.rb +26 -0
  156. data/lib/lono/cfn/{preview → plan}/param.rb +26 -34
  157. data/lib/lono/cfn/plan/summary.rb +16 -0
  158. data/lib/lono/cfn/plan/template.rb +28 -0
  159. data/lib/lono/cfn/plan.rb +34 -0
  160. data/lib/lono/cfn/show.rb +30 -0
  161. data/lib/lono/cfn/status.rb +1 -1
  162. data/lib/lono/cli/abstract.rb +11 -0
  163. data/lib/lono/cli/base.rb +11 -0
  164. data/lib/lono/cli/build.rb +47 -0
  165. data/lib/lono/cli/bundle.rb +21 -0
  166. data/lib/lono/cli/cfn/opts.rb +59 -0
  167. data/lib/lono/cli/cfn.rb +19 -0
  168. data/lib/lono/cli/clean.rb +23 -0
  169. data/lib/lono/cli/code.rb +22 -0
  170. data/lib/lono/{completion.rb → cli/completion.rb} +2 -2
  171. data/lib/lono/{help → cli/help}/blueprint/new.md +4 -4
  172. data/lib/lono/{help/generate.md → cli/help/build.md} +6 -6
  173. data/lib/lono/{help → cli/help}/cfn/cancel.md +0 -0
  174. data/lib/lono/cli/help/cfn/download.md +3 -0
  175. data/lib/lono/{help → cli/help}/cfn/preview.md +9 -8
  176. data/lib/lono/{help → cli/help}/cfn/status.md +0 -1
  177. data/lib/lono/cli/help/cfn.md +4 -0
  178. data/lib/lono/{help → cli/help}/code/convert.md +0 -0
  179. data/lib/lono/{help → cli/help}/code/import.md +2 -2
  180. data/lib/lono/{help → cli/help}/completion.md +3 -3
  181. data/lib/lono/{help → cli/help}/completion_script.md +0 -0
  182. data/lib/lono/{help → cli/help}/configsets.md +0 -0
  183. data/lib/lono/cli/help/down.md +13 -0
  184. data/lib/lono/cli/help/new/helper/blueprint.md +17 -0
  185. data/lib/lono/cli/help/new/helper/project.md +16 -0
  186. data/lib/lono/cli/help/new/project.md +34 -0
  187. data/lib/lono/{help → cli/help}/param/generate.md +0 -0
  188. data/lib/lono/cli/help/param.md +6 -0
  189. data/lib/lono/{help → cli/help}/pro/blueprints.md +0 -0
  190. data/lib/lono/{help → cli/help}/pro/configsets.md +0 -0
  191. data/lib/lono/{help → cli/help}/script/build.md +0 -0
  192. data/lib/lono/{help → cli/help}/script/upload.md +0 -0
  193. data/lib/lono/cli/help/seed.md +24 -0
  194. data/lib/lono/cli/help/summary.md +33 -0
  195. data/lib/lono/{help → cli/help}/template/bashify.md +0 -0
  196. data/lib/lono/cli/help/template/generate.md +7 -0
  197. data/lib/lono/{help → cli/help}/template.md +0 -0
  198. data/lib/lono/cli/help/up.md +30 -0
  199. data/lib/lono/{help → cli/help}/user_data.md +3 -3
  200. data/lib/lono/cli/help.rb +56 -0
  201. data/lib/lono/cli/list.rb +25 -0
  202. data/lib/lono/cli/new/blueprint.rb +29 -0
  203. data/lib/lono/cli/new/concerns.rb +16 -0
  204. data/lib/lono/cli/new/configset.rb +37 -0
  205. data/lib/lono/{extension/new.rb → cli/new/extension.rb} +2 -10
  206. data/lib/lono/cli/new/helper/blueprint.rb +26 -0
  207. data/lib/lono/cli/new/helper/project.rb +24 -0
  208. data/lib/lono/cli/new/helper.rb +13 -0
  209. data/lib/lono/cli/new/project.rb +77 -0
  210. data/lib/lono/cli/new/sequence.rb +56 -0
  211. data/lib/lono/cli/new/shim.rb +59 -0
  212. data/lib/lono/cli/new/test/blueprint.rb +23 -0
  213. data/lib/lono/cli/new/test/sequence.rb +10 -0
  214. data/lib/lono/cli/new/test.rb +8 -0
  215. data/lib/lono/cli/new.rb +27 -0
  216. data/lib/lono/{opts.rb → cli/opts.rb} +9 -12
  217. data/lib/lono/{s3.rb → cli/s3.rb} +9 -7
  218. data/lib/lono/cli/script/base.rb +5 -0
  219. data/lib/lono/cli/script/build.rb +72 -0
  220. data/lib/lono/cli/script/upload.rb +49 -0
  221. data/lib/lono/{script.rb → cli/script.rb} +2 -2
  222. data/lib/lono/cli/seed.rb +9 -0
  223. data/lib/lono/cli/status.rb +18 -0
  224. data/lib/lono/cli/test.rb +35 -0
  225. data/lib/lono/cli.rb +78 -109
  226. data/lib/lono/command.rb +27 -1
  227. data/lib/lono/component.rb +29 -0
  228. data/lib/lono/concerns/aws_info.rb +14 -0
  229. data/lib/lono/concerns/names.rb +9 -0
  230. data/lib/lono/configset.rb +11 -10
  231. data/lib/lono/core.rb +25 -54
  232. data/lib/lono/ext/core/module.rb +31 -0
  233. data/lib/lono/ext/core/object.rb +32 -0
  234. data/lib/lono/ext/core/string.rb +9 -0
  235. data/lib/lono/ext.rb +4 -0
  236. data/lib/lono/files/base.rb +12 -0
  237. data/lib/lono/files/builder.rb +37 -0
  238. data/lib/lono/files/compressor.rb +53 -0
  239. data/lib/lono/files/concerns/post_processing.rb +35 -0
  240. data/lib/lono/files/concerns/registration.rb +13 -0
  241. data/lib/lono/files/registry.rb +6 -0
  242. data/lib/lono/files.rb +37 -0
  243. data/lib/lono/importer/base.rb +6 -6
  244. data/lib/lono/importer/download.rb +7 -7
  245. data/lib/lono/importer/dsl.rb +3 -3
  246. data/lib/lono/importer/service/coder.rb +67 -63
  247. data/lib/lono/importer.rb +1 -10
  248. data/lib/lono/inspector/base.rb +7 -7
  249. data/lib/lono/inspector/summary.rb +18 -19
  250. data/lib/lono/layering/layer.rb +112 -0
  251. data/lib/lono/layering.rb +13 -55
  252. data/lib/lono/logger/formatter.rb +13 -0
  253. data/lib/lono/logger.rb +32 -0
  254. data/lib/lono/names.rb +50 -0
  255. data/lib/lono/plugin/meta.rb +30 -0
  256. data/lib/lono/plugin/tester.rb +13 -0
  257. data/lib/lono/plugin.rb +10 -0
  258. data/lib/lono/s3/aws_setup.rb +4 -3
  259. data/lib/lono/s3/bucket.rb +42 -42
  260. data/lib/lono/s3/rollback.rb +8 -0
  261. data/lib/lono/s3/uploader.rb +33 -34
  262. data/lib/lono/script/base.rb +3 -3
  263. data/lib/lono/script/build.rb +11 -12
  264. data/lib/lono/script/upload.rb +7 -7
  265. data/lib/lono/seeder.rb +110 -0
  266. data/lib/lono/user_data.rb +10 -13
  267. data/lib/lono/utils/logging.rb +7 -0
  268. data/lib/lono/utils/{pretty_time.rb → pretty.rb} +6 -2
  269. data/lib/lono/utils/quit.rb +7 -0
  270. data/lib/lono/utils/rsync.rb +4 -2
  271. data/lib/lono/utils/sure.rb +4 -4
  272. data/lib/lono/version.rb +1 -1
  273. data/lib/lono/yamler/validator.rb +7 -22
  274. data/lib/lono.rb +15 -12
  275. data/lib/templates/blueprint/template.rb +2 -0
  276. data/lib/templates/configset/configset.rb +2 -0
  277. data/lib/templates/examples/blueprint/template.rb +9 -0
  278. data/lib/templates/{configset/lib → examples/configset}/configset.rb +0 -0
  279. data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
  280. data/lib/templates/{skeleton → project}/.gitignore +1 -2
  281. data/lib/templates/project/Gemfile.tt +11 -0
  282. data/lib/templates/project/README.md +9 -0
  283. data/lib/templates/project/config/app.rb +3 -0
  284. data/lib/templates/shim/lono +7 -0
  285. data/lono.gemspec +51 -44
  286. metadata +282 -296
  287. data/.circleci/README.md +0 -3
  288. data/.circleci/config.yml +0 -58
  289. data/.cody/acceptance.sh +0 -49
  290. data/.cody/buildspec.yml +0 -9
  291. data/.cody/demo.rb +0 -38
  292. data/.cody/project.rb +0 -6
  293. data/.gitmodules +0 -3
  294. data/lib/lono/abstract_base.rb +0 -25
  295. data/lib/lono/app_file/base.rb +0 -28
  296. data/lib/lono/app_file/build/lambda_layer/ruby_packager.rb +0 -153
  297. data/lib/lono/app_file/build/lambda_layer.rb +0 -20
  298. data/lib/lono/app_file/build.rb +0 -84
  299. data/lib/lono/app_file/registry/item.rb +0 -24
  300. data/lib/lono/app_file/registry.rb +0 -16
  301. data/lib/lono/app_file/upload.rb +0 -12
  302. data/lib/lono/aws_services/stack.rb +0 -41
  303. data/lib/lono/aws_services/stack_set.rb +0 -41
  304. data/lib/lono/blueprint/configset/loader.rb +0 -7
  305. data/lib/lono/blueprint/helper.rb +0 -24
  306. data/lib/lono/blueprint/meta.rb +0 -30
  307. data/lib/lono/blueprint/new.rb +0 -127
  308. data/lib/lono/blueprint/root.rb +0 -25
  309. data/lib/lono/cfn/create.rb +0 -41
  310. data/lib/lono/cfn/opts.rb +0 -88
  311. data/lib/lono/cfn/preview/changeset.rb +0 -168
  312. data/lib/lono/cfn/preview/codediff.rb +0 -41
  313. data/lib/lono/cfn/preview/diff_viewer.rb +0 -23
  314. data/lib/lono/cfn/rollback.rb +0 -26
  315. data/lib/lono/cfn/update.rb +0 -71
  316. data/lib/lono/cfn.rb +0 -75
  317. data/lib/lono/clean.rb +0 -14
  318. data/lib/lono/code.rb +0 -22
  319. data/lib/lono/configset/combiner.rb +0 -162
  320. data/lib/lono/configset/evaluate_file.rb +0 -8
  321. data/lib/lono/configset/generator.rb +0 -57
  322. data/lib/lono/configset/list.rb +0 -67
  323. data/lib/lono/configset/meta/dsl.rb +0 -12
  324. data/lib/lono/configset/meta.rb +0 -19
  325. data/lib/lono/configset/new.rb +0 -77
  326. data/lib/lono/configset/preparer.rb +0 -44
  327. data/lib/lono/configset/register/base.rb +0 -122
  328. data/lib/lono/configset/register/blueprint.rb +0 -16
  329. data/lib/lono/configset/register/dsl.rb +0 -14
  330. data/lib/lono/configset/register/project.rb +0 -13
  331. data/lib/lono/configset/resolver.rb +0 -47
  332. data/lib/lono/configset/s3_file/build.rb +0 -33
  333. data/lib/lono/configset/s3_file/item.rb +0 -38
  334. data/lib/lono/configset/s3_file/registry.rb +0 -12
  335. data/lib/lono/configset/s3_file/upload.rb +0 -12
  336. data/lib/lono/configset/strategy/base.rb +0 -83
  337. data/lib/lono/configset/strategy/helpers/dsl.rb +0 -8
  338. data/lib/lono/configset/strategy/helpers/erb.rb +0 -9
  339. data/lib/lono/conventions.rb +0 -23
  340. data/lib/lono/core/config.rb +0 -22
  341. data/lib/lono/default/settings.yml +0 -21
  342. data/lib/lono/extension/helper.rb +0 -13
  343. data/lib/lono/extension/list.rb +0 -40
  344. data/lib/lono/extension.rb +0 -9
  345. data/lib/lono/extensions/dsl.rb +0 -11
  346. data/lib/lono/extensions/loader.rb +0 -30
  347. data/lib/lono/extensions/preparer.rb +0 -26
  348. data/lib/lono/extensions/register.rb +0 -15
  349. data/lib/lono/extensions.rb +0 -18
  350. data/lib/lono/file_uploader.rb +0 -21
  351. data/lib/lono/finder/base.rb +0 -152
  352. data/lib/lono/finder/blueprint/configset.rb +0 -17
  353. data/lib/lono/finder/blueprint.rb +0 -11
  354. data/lib/lono/finder/configset.rb +0 -11
  355. data/lib/lono/finder/extension.rb +0 -11
  356. data/lib/lono/generate.rb +0 -111
  357. data/lib/lono/help/cfn/create.md +0 -26
  358. data/lib/lono/help/cfn/delete.md +0 -13
  359. data/lib/lono/help/cfn/deploy.md +0 -21
  360. data/lib/lono/help/cfn/download.md +0 -3
  361. data/lib/lono/help/cfn/update.md +0 -49
  362. data/lib/lono/help/cfn.md +0 -7
  363. data/lib/lono/help/new.md +0 -57
  364. data/lib/lono/help/param.md +0 -6
  365. data/lib/lono/help/seed.md +0 -23
  366. data/lib/lono/help/set_instances/delete.md +0 -21
  367. data/lib/lono/help/set_instances/deploy.md +0 -31
  368. data/lib/lono/help/set_instances/list.md +0 -14
  369. data/lib/lono/help/set_instances/status.md +0 -15
  370. data/lib/lono/help/set_instances/sync.md +0 -92
  371. data/lib/lono/help/sets/delete.md +0 -8
  372. data/lib/lono/help/sets/deploy.md +0 -76
  373. data/lib/lono/help/sets/status.md +0 -23
  374. data/lib/lono/help/summary.md +0 -33
  375. data/lib/lono/help/template/generate.md +0 -7
  376. data/lib/lono/help/upgrade.md +0 -1
  377. data/lib/lono/help/xgraph.md +0 -16
  378. data/lib/lono/help.rb +0 -15
  379. data/lib/lono/importer/erb.rb +0 -31
  380. data/lib/lono/inspector/graph.rb +0 -125
  381. data/lib/lono/jade/circular.rb +0 -26
  382. data/lib/lono/jade/materializer/final.rb +0 -10
  383. data/lib/lono/jade/materializer/gems_builder.rb +0 -81
  384. data/lib/lono/jade/materializer/source.rb +0 -54
  385. data/lib/lono/jade/materializer.rb +0 -15
  386. data/lib/lono/jade/registry.rb +0 -64
  387. data/lib/lono/jade.rb +0 -110
  388. data/lib/lono/jadespec.rb +0 -68
  389. data/lib/lono/new/helper.rb +0 -15
  390. data/lib/lono/new.rb +0 -95
  391. data/lib/lono/param.rb +0 -14
  392. data/lib/lono/pro/base.rb +0 -16
  393. data/lib/lono/pro/repo.rb +0 -28
  394. data/lib/lono/pro.rb +0 -15
  395. data/lib/lono/project_checker.rb +0 -35
  396. data/lib/lono/registration/base.rb +0 -37
  397. data/lib/lono/registration/check.rb +0 -15
  398. data/lib/lono/registration/temp.rb +0 -53
  399. data/lib/lono/registration/user.rb +0 -60
  400. data/lib/lono/seed/base.rb +0 -116
  401. data/lib/lono/seed/service_role.rb +0 -11
  402. data/lib/lono/seed.rb +0 -39
  403. data/lib/lono/sequence.rb +0 -35
  404. data/lib/lono/set_instances/base.rb +0 -30
  405. data/lib/lono/set_instances/changeable.rb +0 -53
  406. data/lib/lono/set_instances/create.rb +0 -7
  407. data/lib/lono/set_instances/delete.rb +0 -47
  408. data/lib/lono/set_instances/deploy.rb +0 -52
  409. data/lib/lono/set_instances/list.rb +0 -13
  410. data/lib/lono/set_instances/opts.rb +0 -37
  411. data/lib/lono/set_instances/status.rb +0 -12
  412. data/lib/lono/set_instances/sync.rb +0 -181
  413. data/lib/lono/set_instances/update.rb +0 -15
  414. data/lib/lono/set_instances.rb +0 -54
  415. data/lib/lono/sets/base.rb +0 -50
  416. data/lib/lono/sets/create.rb +0 -27
  417. data/lib/lono/sets/delete.rb +0 -43
  418. data/lib/lono/sets/deploy.rb +0 -11
  419. data/lib/lono/sets/list.rb +0 -35
  420. data/lib/lono/sets/opts.rb +0 -18
  421. data/lib/lono/sets/preview/codediff.rb +0 -35
  422. data/lib/lono/sets/preview/param.rb +0 -32
  423. data/lib/lono/sets/status/instance/base.rb +0 -120
  424. data/lib/lono/sets/status/instance/completed.rb +0 -35
  425. data/lib/lono/sets/status/instance/deleted.rb +0 -32
  426. data/lib/lono/sets/status/instance/show.rb +0 -7
  427. data/lib/lono/sets/status/instance.rb +0 -20
  428. data/lib/lono/sets/status/instances.rb +0 -136
  429. data/lib/lono/sets/status.rb +0 -128
  430. data/lib/lono/sets/summarize.rb +0 -22
  431. data/lib/lono/sets/time_spent.rb +0 -11
  432. data/lib/lono/sets/update.rb +0 -74
  433. data/lib/lono/sets/waiter.rb +0 -23
  434. data/lib/lono/sets.rb +0 -34
  435. data/lib/lono/setting.rb +0 -75
  436. data/lib/lono/template/aws_service.rb +0 -20
  437. data/lib/lono/template/bashify.rb +0 -39
  438. data/lib/lono/template/configset_injector.rb +0 -52
  439. data/lib/lono/template/context/loader/load_files.rb +0 -24
  440. data/lib/lono/template/context/loader.rb +0 -52
  441. data/lib/lono/template/context.rb +0 -29
  442. data/lib/lono/template/evaluate.rb +0 -40
  443. data/lib/lono/template/generator.rb +0 -23
  444. data/lib/lono/template/helper.rb +0 -152
  445. data/lib/lono/template/strategy/base.rb +0 -4
  446. data/lib/lono/template/strategy/common/helpers.rb +0 -44
  447. data/lib/lono/template/strategy/dsl/builder/helpers/core_helper.rb +0 -14
  448. data/lib/lono/template/strategy/dsl/builder/helpers/file_helper.rb +0 -48
  449. data/lib/lono/template/strategy/dsl/builder/helpers.rb +0 -16
  450. data/lib/lono/template/strategy/dsl/builder/section/base.rb +0 -30
  451. data/lib/lono/template/strategy/dsl/builder/squeezer.rb +0 -24
  452. data/lib/lono/template/strategy/dsl/builder/syntax/extend_with.rb +0 -9
  453. data/lib/lono/template/strategy/dsl/builder/syntax.rb +0 -11
  454. data/lib/lono/template/strategy/dsl/builder.rb +0 -59
  455. data/lib/lono/template/strategy/dsl/finalizer.rb +0 -12
  456. data/lib/lono/template/strategy/dsl.rb +0 -14
  457. data/lib/lono/template/strategy/erb.rb +0 -82
  458. data/lib/lono/template/strategy/source.rb +0 -8
  459. data/lib/lono/template/template.rb +0 -54
  460. data/lib/lono/template/upload.rb +0 -23
  461. data/lib/lono/template/util.rb +0 -8
  462. data/lib/lono/template.rb +0 -24
  463. data/lib/lono/upgrade.rb +0 -20
  464. data/lib/lono/utils/generators/tree.rb +0 -18
  465. data/lib/lono/utils/item/file_methods.rb +0 -29
  466. data/lib/lono/utils/item/zip.rb +0 -42
  467. data/lib/templates/blueprint/%blueprint_name%.gemspec.tt +0 -45
  468. data/lib/templates/blueprint/.gitignore +0 -11
  469. data/lib/templates/blueprint/CHANGELOG.md +0 -7
  470. data/lib/templates/blueprint/Gemfile +0 -4
  471. data/lib/templates/blueprint/README.md.tt +0 -33
  472. data/lib/templates/blueprint/Rakefile.tt +0 -9
  473. data/lib/templates/blueprint/seed/configs.rb +0 -28
  474. data/lib/templates/blueprint_types/dsl/app/templates/%blueprint_name%.rb +0 -36
  475. data/lib/templates/blueprint_types/dsl/app/user_data/bootstrap.sh +0 -2
  476. data/lib/templates/blueprint_types/erb/app/definitions/base.rb.tt +0 -1
  477. data/lib/templates/blueprint_types/erb/app/templates/%blueprint_name%.yml +0 -67
  478. data/lib/templates/configset/%configset_name%.gemspec.tt +0 -42
  479. data/lib/templates/configset/.gitignore +0 -10
  480. data/lib/templates/configset/CHANGELOG.md +0 -7
  481. data/lib/templates/configset/Gemfile +0 -4
  482. data/lib/templates/configset/README.md.tt +0 -3
  483. data/lib/templates/configset/Rakefile.tt +0 -9
  484. data/lib/templates/extension/%extension_name%.gemspec.tt +0 -46
  485. data/lib/templates/extension/.gitignore +0 -11
  486. data/lib/templates/extension/.rspec +0 -3
  487. data/lib/templates/extension/CHANGELOG.md +0 -7
  488. data/lib/templates/extension/Gemfile.tt +0 -4
  489. data/lib/templates/extension/Rakefile.tt +0 -9
  490. data/lib/templates/extension/spec/spec_helper.rb.tt +0 -29
  491. data/lib/templates/skeleton/Gemfile +0 -3
  492. data/lib/templates/skeleton/README.md +0 -58
  493. data/lib/templates/skeleton/configs/settings.yml +0 -13
  494. data/vendor/cfn-status/CHANGELOG.md +0 -14
  495. data/vendor/cfn-status/Gemfile +0 -4
  496. data/vendor/cfn-status/Gemfile.lock +0 -49
  497. data/vendor/cfn-status/LICENSE.txt +0 -21
  498. data/vendor/cfn-status/README.md +0 -58
  499. data/vendor/cfn-status/Rakefile +0 -6
  500. data/vendor/cfn-status/bin/console +0 -14
  501. data/vendor/cfn-status/bin/setup +0 -8
  502. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  503. data/vendor/cfn-status/lib/cfn-status.rb +0 -1
  504. data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
  505. data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
  506. data/vendor/cfn-status/lib/cfn_status.rb +0 -245
  507. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
  508. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
  509. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
  510. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
  511. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
  512. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
  513. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  514. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  515. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  516. data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
  517. data/vendor/cfn-status/spec/spec_helper.rb +0 -14
@@ -0,0 +1,65 @@
1
+ class Lono::Bundler::Component
2
+ class OrgRepo
3
+ def initialize(url)
4
+ @url = url.sub('ssh://','') # important to copy so dont change the string reference
5
+ end
6
+
7
+ def repo
8
+ org_repo_words[-1]
9
+ end
10
+
11
+ def org
12
+ s = org_folder.split('/').last
13
+ s ? s.split('/').last : 'none'
14
+ end
15
+
16
+ def org_folder
17
+ org_repo_words[-2] # second to last word
18
+ end
19
+
20
+ def repo_folder
21
+ org_repo_words.join('/')
22
+ end
23
+
24
+ def org_repo_words
25
+ if @url.include?(':') && !@url.match(%r{http[s?]://}) # user@host:repo git@github.com:org/repo
26
+ folder, repo = handle_string_with_colon
27
+ else # IE: https://github.com/org/repo, org/repo, etc
28
+ parts = @url.split('/')
29
+ folder = parts[0..-2].join('/')
30
+ repo = parts.last
31
+ end
32
+
33
+ org_path = clean_folder(folder)
34
+ repo = strip_dot_git(repo)
35
+ [org_path, repo]
36
+ end
37
+
38
+ def clean_folder(folder)
39
+ folder.sub(%r{.*@},'') # remove user@
40
+ .sub(%r{http[s?]://},'') # remove https://
41
+ end
42
+
43
+ # user@host:repo git@github.com:org/repo
44
+ def handle_string_with_colon
45
+ host, path = @url.split(':')
46
+ if path.size == 2
47
+ folder, repo = path.split(':')
48
+ else
49
+ folder = join(host, File.dirname(path))
50
+ repo = File.basename(path)
51
+ end
52
+ [folder, repo]
53
+ end
54
+
55
+ def join(*path)
56
+ path.compact!
57
+ path[1] = path[1].sub('/','') if path[1].starts_with?('/')
58
+ path.reject(&:blank?).join('/')
59
+ end
60
+
61
+ def strip_dot_git(s)
62
+ s.sub(/\.git$/,'')
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,18 @@
1
+ class Lono::Bundler::Component::Props
2
+ module Extension
3
+ def props(*names)
4
+ names.each { |n| prop(n) }
5
+ end
6
+
7
+ def prop(name)
8
+ name = name.to_sym
9
+ define_method(name) do
10
+ @props[name]
11
+ end
12
+
13
+ define_method("#{name}=") do |v|
14
+ @props[name] = v
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,41 @@
1
+ class Lono::Bundler::Component::Props
2
+ class Typer
3
+ include Lono::Bundler::Component::Concerns::LocalConcern
4
+ include Lono::Bundler::Component::Concerns::NotationConcern
5
+
6
+ delegate :source, to: :props
7
+
8
+ attr_reader :props
9
+ def initialize(props)
10
+ @props = props # Props.new object
11
+ end
12
+
13
+ # IE: git or registry
14
+ def source_type
15
+ if source.include?('ssh://')
16
+ "git"
17
+ elsif source.include?('::')
18
+ source.split('::').first # IE: git:: s3:: gcs::
19
+ elsif local?
20
+ "local"
21
+ elsif registry?
22
+ "registry"
23
+ else
24
+ "git"
25
+ end
26
+ end
27
+
28
+ private
29
+ # dont use registry? externally. instead use type since it can miss local detection
30
+ def registry?
31
+ if source.nil? ||
32
+ source.starts_with?('git@') || # git@github.com:tongueroo/pet
33
+ source.starts_with?('http') || # https://github.com/tongueroo/pet
34
+ source.include?('::') # git::https:://git.example.com/pet
35
+ return false
36
+ end
37
+ s = remove_notations(@props.source)
38
+ s.split('/').size == 3 || s.split('/').size == 4
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,122 @@
1
+ # Use to build component from Lonofile entry.
2
+ # The Lonofile.lock does not need this because it's simple and just merges the data.
3
+ class Lono::Bundler::Component
4
+ class Props
5
+ extend Memoist
6
+ include Concerns::NotationConcern
7
+ include LB::Util::Logging
8
+
9
+ delegate :source_type, to: :typer
10
+
11
+ attr_reader :source
12
+ def initialize(options={})
13
+ @options = options
14
+ @source, @version = @options[:source], @options[:version]
15
+ end
16
+
17
+ def name
18
+ remove_notations(@options[:name])
19
+ end
20
+
21
+ def build
22
+ unless @source
23
+ logger.error "ERROR: The source option must be set for the #{name} component in the Lonofile".color(:red)
24
+ exit 1
25
+ end
26
+ o = @options.merge(
27
+ name: name,
28
+ source_type: source_type,
29
+ url: url,
30
+ )
31
+ o[:subfolder] ||= subfolder(@source)
32
+ o[:ref] ||= ref(@source)
33
+ o.deep_symbolize_keys
34
+ end
35
+
36
+ # url is normalized
37
+ def url
38
+ url = case source_type
39
+ when 'registry'
40
+ registry.github_url
41
+ when 'local'
42
+ source
43
+ when 'http'
44
+ http_source_url
45
+ else # git
46
+ git_source_url
47
+ end
48
+ remove_notations(clone_with(url))
49
+ end
50
+
51
+ # apply clone_with option if set
52
+ def clone_with(url)
53
+ with = @options[:clone_with] || LB.config.clone_with
54
+ return url unless with
55
+ if with == 'https'
56
+ url.sub(/.*@(.*):/,'https://\1/')
57
+ else # git@
58
+ url.sub(%r{http[s]?://(.*?)/},'git@\1:')
59
+ end
60
+ end
61
+
62
+ def http_source_url
63
+ source = Http::Source.new(@params)
64
+ source.url
65
+ end
66
+
67
+ # git_source_url is normalized
68
+ #
69
+ # See: https://stackoverflow.com/questions/6167905/git-clone-through-ssh
70
+ #
71
+ # ssh://username@host.xz/absolute/path/to/repo.git/ - just a forward slash for absolute path on server
72
+ # username@host.xz:relative/path/to/repo.git/ - just a colon (it mustn't have the ssh:// for relative path on server (relative to home dir of username on server machine)
73
+ #
74
+ # When colon is separator for relative path do not want ssh prepended
75
+ #
76
+ # git clone ec2-user@localhost:repo
77
+ #
78
+ # When slash is separator for absolute path want ssh prepended
79
+ #
80
+ # git clone ssh://ec2-user@localhost/path/to/repo => valid URI
81
+ #
82
+ def git_source_url
83
+ if @source.include?('http') || @source.include?(':')
84
+ # Examples:
85
+ # component "pet1", source: "https://github.com/tongueroo/pet"
86
+ # component "pet2", source: "git@github.com:tongueroo/pet"
87
+ # component "pet3", source: "git@gitlab.com:tongueroo/pet"
88
+ # component "pet4", source: "git@bitbucket.org:tongueroo/pet"
89
+ # component "example3", source: "git::https://example.com/example-module.git"
90
+ #
91
+ # sub to allow for generic git repo notiation
92
+ source = @source.sub('git::','')
93
+ if source.include?('ssh://')
94
+ if source.count(':') == 1
95
+ return source
96
+ else
97
+ return source.sub('ssh://', '')
98
+ end
99
+ end
100
+ source
101
+ else
102
+ # Examples:
103
+ # component "pet", source: "tongueroo/pet"
104
+ # Or:
105
+ # org "tongueroo"
106
+ # component "pet", source: "pet"
107
+ org_source = @source.include?('/') ? @source : "#{LB.config.org}/#{@source}" # adds inferred org
108
+ "#{LB.config.base_clone_url}#{org_source}"
109
+ end
110
+ end
111
+
112
+ def typer
113
+ Typer.new(self)
114
+ end
115
+ memoize :typer
116
+
117
+ def registry
118
+ Registry.new(@source, @version)
119
+ end
120
+ memoize :registry
121
+ end
122
+ end
@@ -0,0 +1,136 @@
1
+ class Lono::Bundler::Component
2
+ class Registry
3
+ include LB::Util::Logging
4
+ include Http::Concern
5
+
6
+ def initialize(source, version)
7
+ @source, @version = source, version
8
+ end
9
+
10
+ def github_url
11
+ if @source.split('/').size > 3 # IE: app.terraform.io/demo-qa/s3-webapp/aws
12
+ private_github_url
13
+ else # assume size is 3. IE: terraform-aws-blueprints/security-group/aws
14
+ public_github_url
15
+ end
16
+ end
17
+ \
18
+ # https://www.terraform.io/docs/cloud/api/blueprints.html#get-a-module
19
+ # GET /organizations/:organization_name/registry-blueprints/:registry_name/:namespace/:name/:provider
20
+ # GET /organizations/demo-qa/registry-blueprints/private/demo-qa/s3-webapp/aws
21
+ #
22
+ # :organization_name The name of the organization the module belongs to.
23
+ # :namespace The namespace of the module. For private blueprints this is the name of the organization that owns the module.
24
+ # :name The module name.
25
+ # :provider The module provider.
26
+ # :registry-name Either public or private.
27
+ #
28
+ # Example: app.terraform.io/demo-qa/s3-webapp/aws
29
+ #
30
+ # domain: app.terraform.io (private registry indicator)
31
+ # org: demo-qa
32
+ # module: s3-webapp
33
+ # provider: aws
34
+ #
35
+ def private_github_url
36
+ domain, org, name, provider = @source.split('/')
37
+ registry_name = 'private'
38
+ namespace = org
39
+
40
+ base_site = "https://#{domain}" # IE: domain = 'app.terraform.io'
41
+ base_url = "#{base_site}/api/v2"
42
+ api_url = "#{base_url}/organizations/#{org}/registry-blueprints/#{registry_name}/#{namespace}/#{name}/#{provider}"
43
+
44
+ resp = http_request(api_url, auth_domain: domain)
45
+
46
+ repo_url = case resp.code.to_i
47
+ when 200
48
+ result = JSON.load(resp.body)
49
+ result['data']['attributes']['vcs-repo']['repository-http-url'] # repo_url
50
+ when 401
51
+ auth_error_exit!(resp)
52
+ else
53
+ logger.error "ERROR: Unable to lookup up module in Terraform Registry: #{@source}".color(:red)
54
+ puts "resp.code #{resp.code}"
55
+ pp resp
56
+ exit 1
57
+ end
58
+
59
+ clone_with = 'git' # TODO: make configurable
60
+ unless clone_with == 'https'
61
+ repo_url.sub!('https://github.com/', 'git@github.com:')
62
+ end
63
+
64
+ repo_url
65
+ end
66
+
67
+ # Lonofile example
68
+ #
69
+ # component "sg", source: "terraform-aws-blueprints/security-group/aws", version: "3.10.0"
70
+ #
71
+ # Resources: https://www.terraform.io/docs/registry/api.html
72
+ #
73
+ # Latest version:
74
+ #
75
+ # https://registry.terraform.io/v1/blueprints/terraform-aws-blueprints/sqs/aws/2.1.0/download
76
+ #
77
+ # The latest version returns an 302 and contains a location header that is followed
78
+ # and then downloaded the same way the specific version is downloaded.
79
+ #
80
+ # Specific version:
81
+ #
82
+ # https://registry.terraform.io/v1/blueprints/terraform-aws-blueprints/sqs/aws/download
83
+ #
84
+ # The specific version returns an 204 and then we grab the download url info form the x-terraform-get header.
85
+ def public_github_url
86
+ base_site = "https://registry.terraform.io"
87
+ base_url = "#{base_site}/v1/blueprints"
88
+ version = get_version(base_url)
89
+ api_url = [base_url, @source, version, "download"].compact.join('/')
90
+
91
+ resp = http_request(api_url)
92
+
93
+ case resp.code.to_i
94
+ when 204 # IE: curl -v https://registry.terraform.io/v1/blueprints/terraform-aws-blueprints/security-group/aws/3.10.0/download
95
+ download_url = resp.header["x-terraform-get"]
96
+ else
97
+ logger.error "ERROR: Unable to lookup up module in Terraform Registry: #{@source}".color(:red)
98
+ logger.error "api_url: #{api_url}"
99
+ puts "resp.code #{resp.code}"
100
+ pp resp
101
+ exit 1
102
+ end
103
+
104
+ url = download_url.sub(%r{/archive/.*},'')
105
+ # IE: git::https://github.com/terraform-aws-blueprints/terraform-aws-security-group?ref=v3.10.0
106
+ url.sub(/^git::/,'').sub(/\?.*/,'')
107
+ end
108
+
109
+ def get_version(base_url)
110
+ return @version.sub(/^v/,'') if @version # v1.0 => 1.0
111
+ api_url = [base_url, @source].join('/')
112
+ resp = http_request(api_url)
113
+ data = JSON.load(resp.body)
114
+ data['version']
115
+ end
116
+
117
+ private
118
+ def auth_error_exit!(resp=nil, domain=nil)
119
+ logger.error <<~EOL.color(:red)
120
+ ERROR: Unauthorized. Unable to lookup up module in Terraform Registry:
121
+
122
+ #{@source}
123
+
124
+ Try logging in with:
125
+
126
+ terraform login #{domain}
127
+
128
+ EOL
129
+ if resp
130
+ puts "resp.code #{resp.code}"
131
+ pp resp
132
+ end
133
+ exit 1
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,52 @@
1
+ module Lono::Bundler
2
+ class Component
3
+ extend Memoist
4
+ extend Props::Extension
5
+ props :export_to, :name, :sha, :source, :subfolder, :source_type, :type, :url, :clone_with
6
+ delegate :repo, :org, :repo_folder, :org_folder, to: :org_repo
7
+
8
+ include Concerns::StackConcern
9
+ include Concerns::LocalConcern
10
+
11
+ attr_reader :props, :version, :ref, :tag, :branch
12
+ def initialize(options={})
13
+ @props = Component::Props.new(options.deep_symbolize_keys).build
14
+ # These props are used for version comparing by VersionComparer
15
+ @version, @ref, @tag, @branch = @props[:version], @props[:ref], @props[:tag], @props[:branch]
16
+ end
17
+
18
+ # support variety of options, prefer version
19
+ def checkout_version
20
+ @version || @ref || @tag || @branch
21
+ end
22
+
23
+ def latest_sha
24
+ fetcher = Fetcher.new(self).instance
25
+ fetcher.run
26
+ fetcher.sha
27
+ end
28
+
29
+ def vcs_provider
30
+ if url.include?('http')
31
+ # "https://github.com/org/repo" => github.com
32
+ url.match(%r{http[s]?://(.*?)/})[1]
33
+ elsif url.include?('http') # git@
34
+ # "git@github.com:org/repo" => github.com
35
+ url.match(%r{git@(.*?):})[1]
36
+ else # ssh://user@domain.com/path/to/repo
37
+ 'none'
38
+ end
39
+ end
40
+
41
+ def export_path
42
+ export_to = self.export_to || LB.config.export_to
43
+ "#{export_to}/#{type.pluralize}/#{name}"
44
+ end
45
+
46
+ private
47
+ def org_repo
48
+ OrgRepo.new(url)
49
+ end
50
+ memoize :org_repo
51
+ end
52
+ end
@@ -0,0 +1,18 @@
1
+ module Lono::Bundler
2
+ class Config
3
+ extend Memoist
4
+ include Singleton
5
+
6
+ def config
7
+ config = ActiveSupport::OrderedOptions.new
8
+ config.base_clone_url = "https://github.com/"
9
+ config.export_to = ENV['LB_EXPORT_TO'] || "vendor"
10
+ config.export_purge = ENV['LB_EXPORT_PRUNE'] == '0' ? false : true
11
+ config.lonofile = ENV['LB_LONOFILE'] || "Lonofile"
12
+ config.lockfile = "#{config.lonofile}.lock"
13
+ config.logger = Lono.config.logger
14
+ config
15
+ end
16
+ memoize :config
17
+ end
18
+ end
@@ -0,0 +1,46 @@
1
+ class Lono::Bundler::Dsl
2
+ module Syntax
3
+ def org(value)
4
+ config.org = value
5
+ end
6
+ alias_method :user, :org
7
+
8
+ def base_clone_url(value)
9
+ config.base_clone_url = value
10
+ end
11
+
12
+ def export_to(path)
13
+ config.export_to = path
14
+ end
15
+
16
+ def export_purge(value)
17
+ config.export_purge = value
18
+ end
19
+
20
+ def stack_options(value={})
21
+ config.stack_options.merge!(value)
22
+ end
23
+
24
+ def clone_with(value)
25
+ config.clone_with = value
26
+ end
27
+
28
+ def config
29
+ LB.config
30
+ end
31
+
32
+ def component(name, options={})
33
+ meta[:components] << options.merge(name: name)
34
+ end
35
+
36
+ def self.friendly_method(meth)
37
+ define_method meth do |name, options={}|
38
+ component(name, options.merge(type: meth.to_s))
39
+ end
40
+ end
41
+
42
+ friendly_method :blueprint
43
+ friendly_method :configset
44
+ friendly_method :extension
45
+ end
46
+ end
@@ -0,0 +1,21 @@
1
+ module Lono::Bundler
2
+ class Dsl
3
+ include DslEvaluator
4
+ include Syntax
5
+
6
+ class_attribute :meta, default: {global: {}, components: []}
7
+
8
+ def run
9
+ evaluate_file(LB.config.lonofile)
10
+ self
11
+ end
12
+
13
+ def meta
14
+ self.class.meta
15
+ end
16
+
17
+ def global
18
+ meta[:global]
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ class Lono::Bundler::Exporter
2
+ class Base
3
+ include LB::Component::Concerns::PathConcern
4
+ include LB::Util::Logging
5
+ end
6
+ end
@@ -0,0 +1,22 @@
1
+ class Lono::Bundler::Exporter
2
+ class Copy < Base
3
+ def initialize(component)
4
+ @component = component
5
+ end
6
+
7
+ def component
8
+ FileUtils.rm_rf(@component.export_path)
9
+ FileUtils.mkdir_p(File.dirname(@component.export_path))
10
+ logger.debug "Copy: cp -r #{src_path} #{@component.export_path}"
11
+ FileUtils.cp_r(src_path, @component.export_path)
12
+ FileUtils.rm_rf("#{@component.export_path}/.git")
13
+ end
14
+
15
+ # src path is from the stage area
16
+ def src_path
17
+ path = stage_path(rel_dest_dir)
18
+ path = "#{path}/#{@component.subfolder}" if @component.subfolder
19
+ path
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,50 @@
1
+ module Lono::Bundler
2
+ class Exporter
3
+ include LB::Component::Concerns::PathConcern
4
+ include LB::Util::Logging
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ end
9
+
10
+ def run
11
+ purge_all
12
+ components.each do |component|
13
+ logger.info "Exporting #{component.export_path}"
14
+ purge(component)
15
+ export(component)
16
+ end
17
+ end
18
+
19
+ def components
20
+ components = lockfile.components
21
+ if LB.update_mode? && !@options[:components].empty?
22
+ components.select! { |component| @options[:components].include?(component.name) }
23
+ end
24
+ components
25
+ end
26
+
27
+ def export(component)
28
+ fetcher = Component::Fetcher.new(component).instance
29
+ fetcher.run
30
+ fetcher.switch_version(component.sha)
31
+ copy = Copy.new(component)
32
+ copy.component
33
+ end
34
+
35
+ private
36
+ def purge_all
37
+ return if LB.update_mode?
38
+ return unless LB.config.export_purge
39
+ FileUtils.rm_rf(LB.config.export_to)
40
+ end
41
+
42
+ def purge(component)
43
+ FileUtils.rm_rf(component.export_path)
44
+ end
45
+
46
+ def lockfile
47
+ Lockfile.instance
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,33 @@
1
+ require 'rubygems/package'
2
+ require 'zlib'
3
+ require 'fileutils'
4
+
5
+ # Thanks: https://gist.github.com/ForeverZer0/2adbba36fd452738e7cca6a63aee2f30
6
+ class Lono::Bundler::Extract
7
+ class Tar
8
+ # tar_gz_archive = '/tmp/lono/bundler/stage/s3-us-west-2.amazonaws.com/demo-terraform-test/blueprints/example-module.tgz'
9
+ # destination = '/tmp/lono/where/extract/to'
10
+ def self.extract(tar_gz_archive, destination)
11
+ reader = Zlib::GzipReader.open(tar_gz_archive)
12
+ Gem::Package::TarReader.new(reader) do |tar|
13
+ dest = nil
14
+ tar.each do |entry|
15
+ dest ||= File.join destination, entry.full_name
16
+ if entry.directory?
17
+ FileUtils.rm_rf dest unless File.directory? dest
18
+ FileUtils.mkdir_p dest, :mode => entry.header.mode, :verbose => false
19
+ elsif entry.file?
20
+ FileUtils.rm_rf dest unless File.file? dest
21
+ File.open dest, "wb" do |f|
22
+ f.print entry.read
23
+ end
24
+ FileUtils.chmod entry.header.mode, dest, :verbose => false
25
+ elsif entry.header.typeflag == '2' #Symlink!
26
+ File.symlink entry.header.linkname, dest
27
+ end
28
+ dest = nil
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ require 'rubygems'
2
+ require 'zip'
3
+
4
+ class Lono::Bundler::Extract
5
+ class Zip
6
+ def self.extract(file, dest)
7
+ ::Zip::File.open(file) { |zip_file|
8
+ zip_file.each { |f|
9
+ f_path=File.join(dest, f.name)
10
+ FileUtils.mkdir_p(File.dirname(f_path))
11
+ zip_file.extract(f, f_path) unless File.exist?(f_path)
12
+ }
13
+ }
14
+ end
15
+ end
16
+ end