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
@@ -1,4 +1,4 @@
1
- class Lono::Template::Strategy::Dsl::Builder
1
+ module Lono::Builder::Util
2
2
  module Stringify
3
3
  # Accounts for Arrays also. ActiveSupport only works for Hashes.
4
4
  def stringify!(data)
@@ -0,0 +1,10 @@
1
+ class Lono::Bundler::CLI
2
+ class Base
3
+ include LB::Util::Logging
4
+ include LB::Util::Sure
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,44 @@
1
+ class Lono::Bundler::CLI
2
+ class Bundle < Lono::Command
3
+ lonofile_option = Proc.new {
4
+ option :lonofile, default: ENV['LONOFILE'] || "Lonofile", desc: "Lonofile to use"
5
+ }
6
+
7
+ desc "list", "List bundled blueprints included by Lonofile"
8
+ long_desc Help.text("bundle/list")
9
+ lonofile_option.call
10
+ def list
11
+ Lono::Bundler::List.new(options).run
12
+ end
13
+
14
+ desc "info COMPONENT", "Provide info about a bundled component"
15
+ long_desc Help.text("bundle/info")
16
+ lonofile_option.call
17
+ option :type, aliases: :t, desc: "Type. IE: blueprint, configset, extension"
18
+ def info(component)
19
+ Lono::Bundler::Info.new(options.merge(component: component)).run
20
+ end
21
+
22
+ desc "install", "Install blueprints from the Lonofile"
23
+ long_desc Help.text("bundle/install")
24
+ lonofile_option.call
25
+ def install
26
+ Lono::Bundler::Runner.new(options).run
27
+ end
28
+
29
+ desc "clean", "Clean cache"
30
+ long_desc Help.text("bundle/clean")
31
+ option :yes, aliases: :y, type: :boolean, desc: "bypass are you sure prompt"
32
+ def clean
33
+ Clean.new(options).run
34
+ end
35
+
36
+ desc "update [COMPONENT]", "Update bundled blueprints"
37
+ long_desc Help.text("bundle/update")
38
+ lonofile_option.call
39
+ def update(*components)
40
+ Lono::Bundler.update_mode = true
41
+ Lono::Bundler::Runner.new(options.merge(components: components)).run
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,27 @@
1
+ class Lono::Bundler::CLI
2
+ class Clean < Base
3
+ include LB::Component::Concerns::PathConcern
4
+
5
+ def run
6
+ paths = [tmp_root]
7
+ are_you_sure?(paths)
8
+ paths.each do |path|
9
+ FileUtils.rm_rf(path)
10
+ logger.info "Removed #{path}"
11
+ end
12
+
13
+ end
14
+
15
+ def are_you_sure?(paths)
16
+ pretty_paths = paths.map { |p| " #{p}" }.join("\n")
17
+ message = <<~EOL.chomp
18
+ Will remove these folders and all their files:
19
+
20
+ #{pretty_paths}
21
+
22
+ Are you sure?
23
+ EOL
24
+ sure?(message) # from Util::Sure
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ ## Examples
2
+
3
+ lono bundle
@@ -0,0 +1,11 @@
1
+ class Lono::Bundler::CLI
2
+ module Help
3
+ class << self
4
+ def text(namespaced_command)
5
+ path = namespaced_command.to_s.gsub(':','/')
6
+ path = File.expand_path("../help/#{path}.md", __FILE__)
7
+ IO.read(path) if File.exist?(path)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module Lono::Bundler
2
+ class CLI < Lono::Command
3
+ desc "bundle SUBCOMMAND", "bundle subcommands"
4
+ long_desc Help.text(:bundle)
5
+ subcommand "bundle", Bundle
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module Lono::Bundler::Component::Concerns
2
+ module LocalConcern
3
+ def local?
4
+ source.starts_with?("/") ||
5
+ source.starts_with?(".") ||
6
+ source.starts_with?("..") ||
7
+ source.starts_with?("~")
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,59 @@
1
+ require 'uri'
2
+
3
+ module Lono::Bundler::Component::Concerns
4
+ module NotationConcern
5
+ def remove_notations(source)
6
+ remove_subfolder_notation(remove_ref_notation(source))
7
+ end
8
+
9
+ def remove_ref_notation(source)
10
+ source.sub(/\?.*/,'')
11
+ end
12
+
13
+ def remove_subfolder_notation(source)
14
+ clean = clean_notation(source)
15
+ parts = clean.split('//')
16
+ if parts.size == 2 # has subfolder
17
+ source.split('//')[0..-2].join('//') # remove only subfolder, keep rest of original source
18
+ else
19
+ source
20
+ end
21
+ end
22
+
23
+ def subfolder(source)
24
+ clean = clean_notation(source)
25
+ parts = clean.split('//')
26
+ if parts.size == 2 # has subfolder
27
+ remove_ref_notation(parts.last)
28
+ end
29
+ end
30
+
31
+ def ref(source)
32
+ url = clean_notation(source)
33
+ uri = URI(url)
34
+ if uri.query
35
+ params = URI::decode_www_form(uri.query).to_h # if you are in 2.1 or later version of Ruby
36
+ params['ref']
37
+ end
38
+ end
39
+
40
+
41
+ def clean_notation(source)
42
+ clean = source
43
+ .sub(/.*::/,'') # remove git::
44
+ .sub(%r{http[s?]://},'') # remove https://
45
+ .sub(%r{git@(.*?):},'') # remove git@word
46
+ remove_host(clean)
47
+ end
48
+
49
+ def remove_host(clean)
50
+ return clean unless clean.include?('ssh://')
51
+ if clean.count(':') == 1
52
+ uri = URI(clean)
53
+ uri.path
54
+ else
55
+ clean.split(':').last
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,68 @@
1
+ module Lono::Bundler::Component::Concerns
2
+ module PathConcern
3
+ def setup_tmp
4
+ FileUtils.mkdir_p(cache_root)
5
+ FileUtils.mkdir_p(stage_root)
6
+ end
7
+
8
+ def tmp_root
9
+ "/tmp/lono/bundler"
10
+ end
11
+
12
+ def cache_root
13
+ "#{tmp_root}/cache"
14
+ end
15
+
16
+ def stage_root
17
+ "#{tmp_root}/stage"
18
+ end
19
+
20
+ def cache_path(name)
21
+ [cache_root, @component.source_type, name].compact.join('/')
22
+ end
23
+
24
+ def stage_path(name)
25
+ [stage_root, @component.source_type, name].compact.join('/')
26
+ end
27
+
28
+ # Fetcher: Downloader/Local copies to a slightly different folder.
29
+ # Also, Copy will use this and reference same method so it's consistent.
30
+ def rel_dest_dir
31
+ case @component.source_type
32
+ when 'local'
33
+ @component.name # example-module
34
+ when 's3'
35
+ path = type_path # https://s3-us-west-2.amazonaws.com/demo-terraform-test/example-module.zip
36
+ remove_ext(path) # demo-terraform-test/blueprints/example-module
37
+ when 'gcs'
38
+ path = type_path # https://www.googleapis.com/storage/v1/BUCKET_NAME/PATH/TO/module.zip
39
+ path.sub!(%r{storage/v\d+/},'')
40
+ remove_ext(path) # terraform-example-blueprints/blueprints/example-module
41
+ when 'http'
42
+ path = type_path # https://www.googleapis.com/storage/v1/BUCKET_NAME/PATH/TO/module.zip
43
+ remove_ext(path) # terraform-example-blueprints/blueprints/example-module
44
+ else # inferred git, registry, git::, ssh://, git::ssh://
45
+ @component.repo_folder # tongueroo/example-module
46
+ end
47
+ end
48
+
49
+ def type_path
50
+ source = @component.source
51
+ url = source.sub("#{@component.source_type}::",'')
52
+ uri = URI(url)
53
+ uri.path.sub('/','') # removing leading slash to bucket name is the first thing
54
+ .sub(%r{//(.*)},'') # remove subfolder
55
+ end
56
+
57
+ def remove_ext(path)
58
+ ext = File.extname(path)
59
+ path.sub(ext,'')
60
+ end
61
+
62
+ def get_bucket_key(path)
63
+ bucket, *rest = path.split('/')
64
+ key = rest.join('/')
65
+ [bucket, key]
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,60 @@
1
+ module Lono::Bundler::Component::Concerns
2
+ module StackConcern
3
+ def stacks
4
+ stacks = @props[:stacks] || @props[:stack]
5
+ return unless stacks
6
+ if all_stacks?(stacks)
7
+ stacks = all_stacks
8
+ elsif stacks.is_a?(Array)
9
+ stacks = array_stacks(stacks)
10
+ end
11
+ normalize_stacks(stacks)
12
+ end
13
+ alias_method :stack, :stacks # important to have alias for VersionCheck
14
+
15
+ def all_stacks?(*stacks)
16
+ stacks.flatten == [:all]
17
+ end
18
+
19
+ def all_stacks
20
+ stack = Lono::Bundler::Exporter::Stacks::Stack.new(self) # to get the component src path
21
+ expr = "#{stack.examples_folder}/*"
22
+ dirs = Dir.glob(expr).select { |path| File.directory?(path) }
23
+ dirs.map do |dir|
24
+ example = File.basename(dir)
25
+ # Set name so multiple app/stacks are created instead of just one app/stack/component
26
+ {
27
+ name: example,
28
+ src: example,
29
+ }
30
+ end
31
+ end
32
+
33
+ def array_stacks(stacks)
34
+ stacks.map do |example|
35
+ if example.is_a?(Hash)
36
+ example
37
+ else
38
+ {
39
+ name: example,
40
+ src: example,
41
+ }
42
+ end
43
+ end
44
+ end
45
+
46
+ # Normalizes stack options to an Array of Hashes or just a single Hash
47
+ def normalize_stacks(option)
48
+ defaults = LB.config.stack_options.dup
49
+ result = case option
50
+ when String
51
+ [defaults.merge(src: option)]
52
+ when Array
53
+ option.map! {|s| normalize_stacks(s) }
54
+ else # Hash
55
+ [defaults.merge!(option)]
56
+ end
57
+ result.flatten
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,27 @@
1
+ # Interface of subclasses should implement
2
+ #
3
+ # run
4
+ # switch_version(component.sha)
5
+ # sha
6
+ #
7
+ class Lono::Bundler::Component::Fetcher
8
+ class Base
9
+ include LB::Util::Git
10
+ include LB::Util::Logging
11
+ include LB::Component::Concerns::PathConcern
12
+
13
+ attr_reader :sha # returns nil for Local
14
+ def initialize(component)
15
+ @component = component
16
+ end
17
+
18
+ def switch_version(*)
19
+ # noop
20
+ end
21
+
22
+ def extract(archive, dest)
23
+ Lono::Bundler::Extract.extract(archive, dest)
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,69 @@
1
+ begin
2
+ require "google/cloud/storage"
3
+ rescue LoadError => e
4
+ $stderr.puts "#{e.class}: #{e.message}".color(:red)
5
+ $stderr.puts <<~EOL
6
+
7
+ Unable to: require "google/cloud/storage"
8
+
9
+ In order to use gcs as a lono bundler source,
10
+ please add the google-cloud-storage gem to
11
+ your Lono project's Gemfile and run bundle.
12
+
13
+ To add the gem to your Gemfile, you can run:
14
+
15
+ bundle add google-cloud-storage
16
+
17
+ Then download blueprints in defined your Lonofile with:
18
+
19
+ lono bundle
20
+ EOL
21
+ exit 1
22
+ end
23
+
24
+ class Lono::Bundler::Component::Fetcher
25
+ class Gcs < Base
26
+ extend Memoist
27
+
28
+ def run
29
+ bucket, key, path = gcs_info
30
+ download(bucket, key, path)
31
+ end
32
+
33
+ def download(bucket_name, key, path)
34
+ # Download to cache area
35
+ bucket = storage.bucket(bucket_name)
36
+ unless bucket
37
+ logger.error "ERROR: bucket #{bucket_name} does not exist".color(:red)
38
+ exit 1
39
+ end
40
+ file = bucket.file(key)
41
+ unless file
42
+ logger.error "ERROR: Unable to find gs://#{bucket_name}/#{key}".color(:red)
43
+ exit 1
44
+ end
45
+
46
+ archive = cache_path(path) # temporary path
47
+ logger.debug "Gcs save archive to #{archive}"
48
+ FileUtils.mkdir_p(File.dirname(archive))
49
+ file.download(archive)
50
+
51
+ # Save to stage
52
+ dest = stage_path(rel_dest_dir)
53
+ extract(archive, dest)
54
+ end
55
+
56
+ private
57
+ def gcs_info
58
+ path = type_path
59
+ path.sub!(%r{storage/v\d+/},'')
60
+ bucket, key = get_bucket_key(path)
61
+ [bucket, key, path]
62
+ end
63
+
64
+ def storage
65
+ Google::Cloud::Storage.new
66
+ end
67
+ memoize :storage
68
+ end
69
+ end
@@ -0,0 +1,69 @@
1
+ class Lono::Bundler::Component::Fetcher
2
+ class Git < Base
3
+ extend Memoist
4
+
5
+ def run
6
+ setup_tmp
7
+ org_folder = cache_path(@component.org_folder)
8
+ FileUtils.mkdir_p(org_folder)
9
+
10
+ Dir.chdir(org_folder) do
11
+ logger.debug "Current root dir: #{org_folder}"
12
+ clone unless File.exist?(@component.repo)
13
+
14
+ Dir.chdir(@component.repo) do
15
+ logger.debug "Change dir: #{@component.repo}"
16
+ git "pull"
17
+ git "submodule update --init"
18
+ stage
19
+ end
20
+ end
21
+ end
22
+ memoize :run
23
+
24
+ def clone
25
+ command = ["git clone", ENV['LB_GIT_CLONE_ARGS'], @component.url].compact.join(' ')
26
+ sh command
27
+ rescue LB::GitError => e
28
+ logger.error "ERROR: #{e.message}".color(:red)
29
+ exit 1
30
+ end
31
+
32
+ def stage
33
+ copy_to_stage
34
+ checkout = @component.checkout_version || default_branch
35
+ switch_version(checkout)
36
+ end
37
+
38
+ # Note: if not in a git repo, will get this error message in stderr
39
+ #
40
+ # fatal: Not a git repository (or any of the parent directories): .git
41
+ #
42
+ def default_branch
43
+ origin = `git remote show origin`.strip
44
+ found = origin.split("\n").find { |l| l.include?("HEAD") }
45
+ if found
46
+ found.split(':').last.strip
47
+ else
48
+ ENV['TS_GIT_DEFAULT_BRANCH'] || 'master'
49
+ end
50
+ end
51
+
52
+ def switch_version(version)
53
+ stage_path = stage_path(rel_dest_dir)
54
+ logger.debug "stage_path #{stage_path}"
55
+ Dir.chdir(stage_path) do
56
+ git "checkout #{version}"
57
+ @sha = git("rev-parse HEAD").strip
58
+ end
59
+ end
60
+
61
+ def copy_to_stage
62
+ cache_path = cache_path(rel_dest_dir)
63
+ stage_path = stage_path(rel_dest_dir)
64
+ FileUtils.rm_rf(stage_path)
65
+ FileUtils.mkdir_p(File.dirname(stage_path))
66
+ FileUtils.cp_r(cache_path, stage_path)
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,15 @@
1
+ class Lono::Bundler::Component::Fetcher
2
+ class Local < Base
3
+ def run
4
+ stage_path = stage_path(rel_dest_dir)
5
+ source = @component.source
6
+ src = source.sub(/^~/, ENV['HOME']) # allow ~/ notation
7
+ FileUtils.rm_rf(stage_path)
8
+ FileUtils.mkdir_p(File.dirname(stage_path))
9
+ logger.debug "Local: cp -r #{src} #{stage_path}"
10
+ # copy from stage area to vendor/blueprints/NAME
11
+ # IE: cp -r /tmp/lono/bundler/stage/local/local1 vendor/blueprints/local1
12
+ FileUtils.cp_r(src, stage_path)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,66 @@
1
+ require 'aws-sdk-s3'
2
+ require 'uri'
3
+
4
+ class Lono::Bundler::Component::Fetcher
5
+ class S3 < Base
6
+ extend Memoist
7
+
8
+ def run
9
+ region, bucket, key, path = s3_info
10
+ download(region, bucket, key, path)
11
+ end
12
+
13
+ def download(region, bucket, key, path)
14
+ # Download to cache area
15
+ response_target = cache_path(path) # temporary path
16
+
17
+ unless File.exist?(response_target)
18
+ logger.debug "S3 save archive to #{response_target}".color(:yellow)
19
+ FileUtils.mkdir_p(File.dirname(response_target))
20
+ s3_get(region, response_target, bucket, key)
21
+ end
22
+
23
+ # Save to stage
24
+ dest = stage_path(rel_dest_dir)
25
+ extract(response_target, dest)
26
+ end
27
+
28
+ private
29
+ def s3_get(region, response_target, bucket, key)
30
+ s3(region).get_object(
31
+ response_target: response_target,
32
+ bucket: bucket,
33
+ key: key,
34
+ )
35
+ rescue Aws::S3::Errors::NoSuchBucket, Aws::S3::Errors::NoSuchKey => e
36
+ logger.error(<<~EOL.color(:red))
37
+ ERROR: #{e.class} #{e.message}
38
+
39
+ bucket: #{bucket}
40
+ key: #{key}
41
+
42
+ EOL
43
+ exit 1
44
+ end
45
+
46
+ def s3_info
47
+ path = type_path
48
+ bucket, key = get_bucket_key(path)
49
+
50
+ url = @component.source.sub('s3::','')
51
+ uri = URI(url)
52
+ region = if uri.host == 'https://s3.amazonaws.com'
53
+ 'us-east-1'
54
+ else
55
+ uri.host.match(/s3-(.*)\.amazonaws/)[1]
56
+ end
57
+
58
+ [region, bucket, key, path]
59
+ end
60
+
61
+ def s3(region)
62
+ Aws::S3::Client.new(region: region)
63
+ end
64
+ memoize :s3
65
+ end
66
+ end
@@ -0,0 +1,18 @@
1
+ # Delegates to:
2
+ #
3
+ # 1. Local
4
+ # 2. Git
5
+ #
6
+ class Lono::Bundler::Component
7
+ class Fetcher
8
+ def initialize(component)
9
+ @component = component
10
+ end
11
+
12
+ def instance
13
+ type = @component.source_type == "registry" ? "git" : @component.source_type
14
+ klass = "Lono::Bundler::Component::Fetcher::#{type.camelize}".constantize
15
+ klass.new(@component) # IE: Local.new(@component), Git.new(@component), S3.new(@component), etc
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,45 @@
1
+ require 'net/http'
2
+ require 'open-uri'
3
+
4
+ module Lono::Bundler::Component::Http
5
+ module Concern
6
+ include LB::Util::Logging
7
+
8
+ def http_request(url, auth_domain: nil)
9
+ uri = URI(url)
10
+ http = Net::HTTP.new(uri.host, uri.port)
11
+ http.use_ssl = uri.scheme == "https"
12
+ # Total time will be 40s = 20 x 2
13
+ http.max_retries = 1 # Default is already 1, just being explicit
14
+ http.read_timeout = 20 # Sites that dont return in 20 seconds are considered down
15
+ request = Net::HTTP::Get.new(uri)
16
+
17
+ if auth_domain
18
+ path = "#{ENV['HOME']}/.terraform.d/credentials.tfrc.json"
19
+ if File.exist?(path)
20
+ data = JSON.load(IO.read(path))
21
+ token = data['credentials'][auth_domain]['token']
22
+ request.add_field 'Authorization', "Bearer #{token}"
23
+ else
24
+ auth_error_exit!
25
+ end
26
+ end
27
+
28
+ begin
29
+ http.request(request) # response
30
+ rescue Net::OpenTimeout => e # internal ELB but VPC is not configured for Lambda function
31
+ http_request_error_message(e)
32
+ rescue Exception => e
33
+ # Net::ReadTimeout - too slow
34
+ # Errno::ECONNREFUSED - completely down
35
+ # SocketError - improper url "dsfjsl" instead of example.com
36
+ http_request_error_message(e)
37
+ end
38
+ end
39
+
40
+ def http_request_error_message(e)
41
+ logger.info "ERROR: #{e.message}\n#{e.message}".color(:red)
42
+ exit 1
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ require 'net/http'
2
+ require 'open-uri'
3
+
4
+ module Lono::Bundler::Component::Http
5
+ class Source
6
+ include LB::Util::Logging
7
+ include Concern
8
+
9
+ def initialize(params)
10
+ @params = params
11
+ @options = params[:options]
12
+ @source = @options[:source]
13
+ end
14
+
15
+ def url
16
+ @source
17
+ end
18
+ end
19
+ end