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,29 +1,25 @@
1
- module Lono::Configset::Strategy
1
+ class Lono::Builder::Configset::Definition
2
2
  class Dsl < Base
3
- # Configset helpers take higher precedence than Lono DSL Helpers. IE: s3_key is overwritten but s3_bucket is the same
4
- include Helpers::Dsl
3
+ include Syntax
5
4
 
6
5
  def initialize(options={})
7
6
  super
8
- @structure = {} # holds in memory the configset hash structure to build AWS::CloudFormation::Init
9
7
  @current = "main" # current configset
10
- @command_counts = Hash.new(0)
11
8
  @tracked = []
9
+ @structure = {} # holds in memory the configset hash structure to build AWS::CloudFormation::Init
10
+ @command_counts = Hash.new(0)
12
11
  # Also support ability to add AWS::CloudFormation::Authentication
13
12
  @authentication = nil # holds IAM policy info to build AWS::CloudFormation::Authentication
14
13
  end
15
14
 
16
- def find_evaluation_path
17
- "#{@root}/lib/configset.rb"
18
- end
19
-
20
- def load
21
- evaluate_file(@evaluation_path)
22
- configsets = @configsets || @tracked.uniq
15
+ def evaluate
16
+ load_context
17
+ evaluate_file(@configset.path)
18
+ configsets = configsets || @tracked.uniq
23
19
  configsets = ["main"] if configsets.empty?
24
20
  configsets_structure = {"configSets" => {"default" => configsets}}.merge(@structure)
25
- full = { "AWS::CloudFormation::Init" => configsets_structure }
26
- full.deep_stringify_keys!
21
+ cloudformation_init = { "AWS::CloudFormation::Init" => configsets_structure }
22
+ wrap_with_metadata(cloudformation_init)
27
23
  end
28
24
  end
29
25
  end
@@ -1,29 +1,22 @@
1
- require "json"
2
-
3
- module Lono::Configset::Strategy
1
+ class Lono::Builder::Configset::Definition
4
2
  class Erb < Base
5
- include Helpers::Erb
6
-
7
- def find_evaluation_path
8
- paths = %w[configset.yml configset.json].map { |p| "#{@root}/lib/#{p}" }
9
- paths.find { |p| File.exist?(p) }
3
+ def evaluate
4
+ load_context
5
+ cloudformation_init = build
6
+ wrap_with_metadata(cloudformation_init)
10
7
  end
11
8
 
12
- def load
13
- content = RenderMePretty.result(@evaluation_path, context: self)
14
- # init structure
15
- if File.extname(@evaluation_path) == ".yml"
9
+ def build
10
+ content = RenderMePretty.result(@configset.path, context: self)
11
+ if File.extname(@configset.path) == ".yml"
16
12
  load_yaml(content)
17
13
  else
18
14
  JSON.load(content)
19
15
  end
20
16
  end
21
17
 
22
- def authentication
23
- # noop
24
- end
25
-
26
18
  def load_yaml(content)
19
+ # init structure
27
20
  # Write to file so can use Yamler::Validator
28
21
  path = "/tmp/lono/configset.yml"
29
22
  FileUtils.mkdir_p(File.dirname(path))
@@ -31,5 +24,9 @@ module Lono::Configset::Strategy
31
24
  Lono::Yamler::Validator.new(path).validate!
32
25
  Lono::Yamler::Loader.new(content).load
33
26
  end
27
+
28
+ def authentication
29
+ # noop
30
+ end
34
31
  end
35
32
  end
@@ -0,0 +1,18 @@
1
+ module Lono::Builder::Configset
2
+ class Definition < Lono::CLI::Base
3
+ attr_reader :configset
4
+ def initialize(options={})
5
+ super
6
+ @meta = options[:meta]
7
+ @configset = Lono::Configset.new(@meta)
8
+ end
9
+
10
+ def evaluate
11
+ strategy_class = configset.path.include?('.rb') ? Dsl : Erb
12
+ strategy = strategy_class.new(@options.merge(path: configset.path))
13
+ metadata = strategy.evaluate
14
+ @configset.metadata = metadata
15
+ @configset
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ # Dsl or Erb
2
+ module Lono::Builder::Configset
3
+ class Evaluator < Lono::CLI::Base
4
+ def evaluate
5
+ Registration.new(@blueprint).evaluate
6
+ combiner = Combiner.new(@options.merge(metas: Registration.metas))
7
+ combiner.combine
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,35 @@
1
+ module Lono::Builder::Configset
2
+ class Registration
3
+ include DslEvaluator
4
+
5
+ def initialize(blueprint)
6
+ @blueprint = blueprint
7
+ end
8
+
9
+ cattr_accessor :metas, default: []
10
+ def metas
11
+ self.class.metas
12
+ end
13
+
14
+ def evaluate
15
+ path = "#{@blueprint.root}/configsets.rb" # plural
16
+ evaluate_file(path)
17
+ end
18
+
19
+ # Only one syntax method so not in separate module.
20
+ #
21
+ # Register configset for later processing.
22
+ # By registering them all up front, can aggregate errors and show them together
23
+ # for a user-friendly experience.
24
+ #
25
+ # The configset method is different with configset registration vs configset definition
26
+ #
27
+ # definition: app/configsets/httpd/configset.rb
28
+ # registration: app/blueprints/demo/configsets.rb
29
+ #
30
+ def configset(name, options={})
31
+ found = metas.detect { |i| i[:name] == name && i[:resource] == options[:resource] }
32
+ metas << options.merge(name: name) unless found
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,40 @@
1
+ module Lono::Builder
2
+ module Context
3
+ include DslEvaluator
4
+
5
+ def load_context
6
+ load_variables
7
+ load_helpers
8
+ end
9
+
10
+ # Variables in base.rb are overridden by their environment specific variables
11
+ # file. Example, file LONO_ENV=dev:
12
+ #
13
+ # config/vars/base.rb
14
+ # config/vars/dev.rb - will override any variables in base.rb
15
+ # config/vars/base.rb
16
+ # config/vars/dev.rb - will override any variables in base.rb
17
+ #
18
+ def load_variables
19
+ return if seed?
20
+ layers = Lono::Layering::Layer.new(@blueprint, "vars").paths
21
+ layers.each do |layer|
22
+ evaluate_file(layer)
23
+ end
24
+ end
25
+
26
+ # Load blueprint helpers
27
+ # blueprint helpers override extension helpers
28
+ def load_helpers
29
+ load_helper_files("#{Lono.root}/vendor/helpers", type: :project)
30
+ load_helper_files("#{Lono.root}/app/helpers", type: :project)
31
+ load_helper_files("#{@blueprint.root}/helpers", type: :blueprint) # takes higher precedence
32
+ end
33
+
34
+ # Dont want any existing files to prevent building the blueprint.
35
+ # This means that parameters cannot be based on vars. It's a trade-off.
36
+ def seed?
37
+ ARGV[0] == "seed"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,45 @@
1
+ class Lono::Builder::Dsl
2
+ class Evaluator < Lono::CLI::Base
3
+ include DslEvaluator
4
+ include Lono::Builder::Context
5
+ include Lono::Builder::Dsl::Syntax
6
+ include Lono::Utils::Pretty
7
+
8
+ def initialize(options={})
9
+ super
10
+ @template_path = "#{@blueprint.root}/template.rb"
11
+ @parameters = [] # built by parameter_groups.rb
12
+ @cfn = {}
13
+ end
14
+
15
+ def evaluate
16
+ load_context
17
+ evaluate_template_paths(@template_path) # modifies @cfn
18
+ finalize
19
+ to_yaml
20
+ @cfn
21
+ end
22
+
23
+ def finalize
24
+ o = @options.merge(parameters: @parameters)
25
+ @cfn = Finalizer.new(@cfn, o).run
26
+ end
27
+
28
+ def to_yaml
29
+ # https://stackoverflow.com/questions/24508364/how-to-emit-yaml-in-ruby-expanding-aliases
30
+ # Trick to prevent YAML from emitting aliases
31
+ @cfn = YAML.load(@cfn.to_json)
32
+ end
33
+
34
+ # Example path: /full/path/to/project/app/blueprints/demo/template.rb
35
+ def evaluate_template_paths(path)
36
+ ext = File.extname(path)
37
+ folder = path.sub(ext, '')
38
+ expr = "#{folder}/**/*.rb"
39
+ evaluate_file(path) # process top-level template.rb first
40
+ Dir.glob(expr).each do |path|
41
+ evaluate_file(path)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,8 @@
1
+ class Lono::Builder::Dsl::Finalizer
2
+ class Base < Lono::CLI::Base
3
+ def initialize(options={})
4
+ super
5
+ @cfn = options[:cfn]
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,20 @@
1
+ class Lono::Builder::Dsl::Finalizer
2
+ class Configsets < Base
3
+ # Replaces metadata under each logical id resource.
4
+ def run
5
+ dsl = Lono::Builder::Configset::Evaluator.new(@options.merge(cfn: @cfn))
6
+ metadata_map = dsl.evaluate
7
+ metadata_map.each do |logical_id, cs|
8
+ resource = @cfn["Resources"][logical_id]
9
+ unless resource
10
+ puts "WARN: Resources.#{logical_id} not found in the template. Are you sure you specified the correct resource logical id in your configsets.rb?".color(:yellow)
11
+ next
12
+ end
13
+
14
+ resource["Metadata"] = cs["Metadata"]
15
+ end
16
+
17
+ @cfn
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,4 @@
1
+ class Lono::Builder::Dsl::Finalizer::Files
2
+ class Base < Lono::Builder::Dsl::Finalizer::Base
3
+ end
4
+ end
@@ -0,0 +1,58 @@
1
+ class Lono::Builder::Dsl::Finalizer::Files
2
+ class Build < Base
3
+ def initialize(options={})
4
+ super
5
+ @output_path = "#{Lono.root}/.output/files"
6
+ end
7
+
8
+ def run
9
+ return if Lono::Files.empty?
10
+ logger.debug "Building files"
11
+ clean
12
+ validate!
13
+ build_files
14
+ # build_layers
15
+ end
16
+
17
+ def build_files
18
+ Lono::Files.files.each do |file| # using singular file, but is like a "file_list"
19
+ file.build
20
+ file.compress
21
+ # Note: Uploading files happen right before create_stack or execute_change_set
22
+ # after user confirms action, instead of part of the build process
23
+ end
24
+ end
25
+
26
+ # TODO: LambdaLayer support
27
+ # def build_layers
28
+ # layer_items = Registry.layers
29
+ # layer_items.each do |item|
30
+ # LambdaLayer.new(@blueprint, item).build
31
+ # end
32
+ # end
33
+ #
34
+
35
+ def clean
36
+ FileUtils.rm_rf(@output_path)
37
+ end
38
+
39
+ def validate!
40
+ missing = Lono::Files.files.select do |file|
41
+ !File.exist?(file.full_path)
42
+ end
43
+ return if missing.empty?
44
+
45
+ logger.info "ERROR: These files are missing".color(:red)
46
+ logger.info <<~EOL
47
+ The file helper is calling them.
48
+ They need to exist to be uploaded to s3.
49
+ EOL
50
+ missing.each do |file|
51
+ logger.info " #{pretty_path(file.full_path)}"
52
+ logger.info " Called at #{file.call_line}"
53
+ end
54
+ logger.info "Please double check that they exist."
55
+ exit 1
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,31 @@
1
+ class Lono::Builder::Dsl::Finalizer::Files
2
+ class Replace < Base
3
+ def run
4
+ replacements.each do |placeholder, replacement|
5
+ update_template!(@cfn)
6
+ end
7
+ @cfn
8
+ end
9
+
10
+ def replacements
11
+ Lono::Files.files.inject({}) do |result, file|
12
+ result.merge(file.marker => file.s3_key)
13
+ end
14
+ end
15
+
16
+ def update_template!(hash)
17
+ hash.each do |k, v|
18
+ if v.is_a?(String)
19
+ if v =~ %r{^LONO://}
20
+ v.replace(replacements[v]) # replace the placeholder
21
+ end
22
+ elsif v.is_a?(Hash)
23
+ update_template!(v) # recurse
24
+ elsif v.is_a?(Array)
25
+ v.each { |x| update_template!(x) if x.is_a?(Hash) }
26
+ end
27
+ end
28
+ hash
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,9 @@
1
+ class Lono::Builder::Dsl::Finalizer
2
+ class Files < Base
3
+ # Replaces metadata under each logical id resource.
4
+ def run
5
+ Build.new(@options).run
6
+ @cfn = Replace.new(@options).run
7
+ end
8
+ end
9
+ end
@@ -1,10 +1,11 @@
1
- class Lono::Template::Strategy::Dsl::Finalizer
2
- class ParameterGroups
1
+ class Lono::Builder::Dsl::Finalizer
2
+ class ParameterGroups < Base
3
3
  extend Memoist
4
- include Lono::Template::Strategy::Dsl::Builder::Stringify
4
+ include Lono::Builder::Util::Stringify
5
5
 
6
- def initialize(cfn, parameters)
7
- @cfn, @parameters = cfn, parameters
6
+ def initialize(options={})
7
+ super
8
+ @parameters = options[:parameters]
8
9
  end
9
10
 
10
11
  def run
@@ -0,0 +1,15 @@
1
+ class Lono::Builder::Dsl
2
+ class Finalizer
3
+ def initialize(cfn, options={})
4
+ @cfn, @options = cfn, options
5
+ end
6
+
7
+ def run
8
+ o = @options.merge(cfn: @cfn)
9
+ @cfn = ParameterGroups.new(o).run
10
+ @cfn = Configsets.new(o).run
11
+ @cfn = Files.new(o).run
12
+ @cfn
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
- module Lono::Template::Strategy::Dsl::Builder::Helpers
2
- module Ec2Helper
1
+ module Lono::Builder::Dsl::Helpers
2
+ module Ec2
3
3
  extend Memoist
4
4
 
5
5
  def default_vpc
@@ -20,7 +20,7 @@ module Lono::Template::Strategy::Dsl::Builder::Helpers
20
20
  def key_pairs(regexp=nil)
21
21
  resp = ec2.describe_key_pairs
22
22
  key_names = resp.key_pairs.map(&:key_name)
23
- key_names.select! { |k| k =~ regexp }
23
+ key_names.select! { |k| k =~ regexp } if regexp
24
24
  key_names
25
25
  end
26
26
  end
@@ -0,0 +1,7 @@
1
+ module Lono::Builder::Dsl::Helpers
2
+ module Files
3
+ def files(path)
4
+ Lono::Files.register(@options.merge(path: path))
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,140 @@
1
+ require "aws-sdk-core"
2
+
3
+ module Lono::Builder::Dsl::Helpers
4
+ module Partials
5
+ def template_s3_path(template_name)
6
+ # hi-jacking Uploader for https_url
7
+ template_path = "output/#{@blueprint.name}/templates/#{template_name}.yml"
8
+ Lono::S3::Uploader.new(template_path).s3_https_url
9
+ end
10
+
11
+ def template_params(param_name)
12
+ o = @options.dup
13
+ o["param"] = param_name
14
+ generator = Lono::CLI::Param::Generator.new(o)
15
+ # do not generate because lono cfn calling logic already generated it we only need the values
16
+ parameters = generator.parameters # Returns Array in underscore keys format
17
+ # convert Array to simplified hash structure
18
+ parameters.inject({}) do |h, param|
19
+ h.merge(param[:parameter_key] => param[:parameter_value])
20
+ end
21
+ end
22
+
23
+ # The partial's path is a relative path.
24
+ #
25
+ # Example:
26
+ # Given file in app/partials/iam/docker.yml
27
+ #
28
+ # <%= partial("iam/docker", {}, indent: 10) %>
29
+ # <%= partial("iam/docker.yml", {}, indent: 10) %>
30
+ #
31
+ # If the user specifies the extension then use that instead of auto-adding
32
+ # the detected format.
33
+ def partial(path,vars={}, options={})
34
+ path = partial_path_for(path)
35
+ path = auto_add_format(path)
36
+
37
+ instance_variables!(vars)
38
+ result = render_path(path)
39
+
40
+ result = indent(result, options[:indent]) if options[:indent]
41
+ result + "\n"
42
+ end
43
+
44
+ # Take a hash and makes them instance variables in the current scope.
45
+ # Use this in custom helper methods to make variables accessible to ERB templates.
46
+ def instance_variables!(variables)
47
+ variables.each do |key, value|
48
+ instance_variable_set('@' + key.to_s, value)
49
+ end
50
+ end
51
+
52
+ # add indentation
53
+ def indent(text, indentation_amount)
54
+ text.split("\n").map do |line|
55
+ " " * indentation_amount + line
56
+ end.join("\n")
57
+ end
58
+
59
+ def partial_exist?(path)
60
+ path = partial_path_for(path)
61
+ path = auto_add_format(path)
62
+ path && File.exist?(path)
63
+ end
64
+
65
+ def region
66
+ AwsData.region
67
+ end
68
+ alias_method :current_region, :region
69
+
70
+ private
71
+ def auto_add_format(path)
72
+ # Return immediately if user provided explicit extension
73
+ extension = File.extname(path) # current extension
74
+ return path if !extension.empty?
75
+
76
+ # Else let's auto detect
77
+ paths = Dir.glob("#{path}.*")
78
+
79
+ if paths.size == 1 # non-ambiguous match
80
+ return paths.first
81
+ end
82
+
83
+ if paths.size > 1 # ambiguous match
84
+ logger.info "ERROR: Multiple possible partials found:".color(:red)
85
+ paths.each do |path|
86
+ logger.info " #{path}"
87
+ end
88
+ logger.info "Please specify an extension in the name to remove the ambiguity.".color(:green)
89
+ exit 1
90
+ end
91
+
92
+ # Account for case when user wants to include a file with no extension at all
93
+ return path if File.exist?(path) && !File.directory?(path)
94
+
95
+ path # original path if this point is reached
96
+ end
97
+
98
+ # Bash code that is meant to included in user-data
99
+ def extract_scripts(options={})
100
+ # defaults also here in case they are removed from settings
101
+ path = options[:path]
102
+ to = options[:to] || "/opt"
103
+ user = options[:as] || "ec2-user"
104
+
105
+ if Dir.glob("#{@bluepint.root}/#{path}*").empty?
106
+ logger.info "WARN: you are using the extract_scripts helper method but you do not have any scripts.".color(:yellow)
107
+ calling_line = caller[0].split(':')[0..1].join(':')
108
+ logger.info "Called from1: #{calling_line}"
109
+ return ""
110
+ end
111
+
112
+ <<~BASH_CODE
113
+ # Generated from the lono extract_scripts helper.
114
+ # Downloads scripts from s3, extract them, and setup.
115
+ mkdir -p #{to}
116
+ aws s3 cp #{scripts_s3_path} #{to}/
117
+ (
118
+ cd #{to}
119
+ tar zxf #{to}/#{scripts_name}
120
+ chown -R #{user}:#{user} #{to}/scripts
121
+ )
122
+ BASH_CODE
123
+ end
124
+
125
+ def scripts_name
126
+ File.basename(scripts_s3_path)
127
+ end
128
+
129
+ def scripts_s3_path
130
+ upload = Lono::Script::Upload.new(@options)
131
+ upload.s3_dest
132
+ end
133
+
134
+ def indent(text, indentation_amount)
135
+ text.split("\n").map do |line|
136
+ " " * indentation_amount + line
137
+ end.join("\n")
138
+ end
139
+ end
140
+ end
@@ -1,14 +1,14 @@
1
- module Lono::Template::Strategy::Dsl::Builder::Helpers
2
- module S3Helper
1
+ module Lono::Builder::Dsl::Helpers
2
+ module S3
3
3
  def s3_bucket
4
4
  Lono::S3::Bucket.name
5
5
  end
6
6
  alias_method :lono_bucket_name, :s3_bucket
7
+ alias_method :files_bucket, :s3_bucket
7
8
 
8
9
  def s3_key(name, options={})
9
10
  default = {type: "file"}
10
11
  options.reverse_merge!(default)
11
- Lono::AppFile::Registry.register(name, @blueprint, options)
12
12
  "file://app/files/#{options[:type]}/#{name}" # placeholder for post processing
13
13
  end
14
14
  alias_method :file_s3_key, :s3_key
@@ -1,8 +1,9 @@
1
1
  require 'aws-sdk-ssm'
2
2
 
3
- class Lono::Template::Context
4
- class SsmFetcher
3
+ module Lono::Builder::Dsl::Helpers::Ssm
4
+ class Fetcher
5
5
  extend Memoist
6
+ include Lono::Utils::Logging
6
7
 
7
8
  def get(name)
8
9
  fetch_ssm_value(name)
@@ -12,7 +13,8 @@ class Lono::Template::Context
12
13
  resp = ssm.get_parameter(name: name, with_decryption: true)
13
14
  resp.parameter.value
14
15
  rescue Aws::SSM::Errors::ParameterNotFound
15
- 'SSM-PARAM-NOT-FOUND'
16
+ logger.warn 'WARN: SSM-PARAM-NOT-FOUND'
17
+ nil
16
18
  end
17
19
 
18
20
  def ssm
@@ -1,5 +1,5 @@
1
- class Lono::Template::Context
2
- module Helpers
1
+ module Lono::Builder::Dsl::Helpers
2
+ module Ssm
3
3
  extend Memoist
4
4
 
5
5
  def ssm(name)
@@ -7,7 +7,7 @@ class Lono::Template::Context
7
7
  end
8
8
 
9
9
  def ssm_fetcher
10
- SsmFetcher.new
10
+ Fetcher.new
11
11
  end
12
12
  memoize :ssm_fetcher
13
13
  end