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,10 +1,11 @@
1
- module Lono::Template::Strategy::Dsl::Builder::Helpers
2
- module StackHelper
1
+ module Lono::Builder::Dsl::Helpers
2
+ module Stack
3
3
  extend Memoist
4
4
  include Lono::AwsServices
5
5
 
6
6
  def stack_output(name)
7
7
  stack_name, key = name.split(".")
8
+ stack_name = stack_name(stack_name)
8
9
  resp = describe_stacks(stack_name: stack_name)
9
10
  stack = resp.stacks.first
10
11
  if stack
@@ -14,27 +15,31 @@ module Lono::Template::Strategy::Dsl::Builder::Helpers
14
15
  if o
15
16
  o.output_value
16
17
  else
17
- "NOT FOUND: output #{key} for stack #{stack_name}"
18
+ logger.info "WARN2: NOT FOUND: output #{key} for stack #{stack_name}"
19
+ nil
18
20
  end
19
21
  end
20
22
 
21
23
  def stack_resource(name)
22
24
  stack_name, logical_id = name.split(".")
25
+ stack_name = stack_name(stack_name)
23
26
  resp = describe_stack_resources(stack_name: stack_name)
24
27
  resources = resp.stack_resources
25
28
  resource = resources.find { |r| r.logical_resource_id == logical_id }
26
29
  if resource
27
30
  resource.physical_resource_id
28
31
  else
29
- "NOT FOUND: logical_id #{logical_id} for stack #{stack_name}"
32
+ logger.info "WARN: NOT FOUND: logical_id #{logical_id} for stack #{stack_name}"
33
+ nil
30
34
  end
31
35
  end
32
36
 
33
- def lookup_output(name)
34
- result = stack_output(name)
35
- return unless ENV['LONO_DEPRECATION_SOFT']
36
- puts "DEPRECATION WARNING: lookup_output is deprecated. Please use stack_output instead".color(:yellow)
37
- result
37
+ def stack_name(blueprint)
38
+ return blueprint unless Lono.config.names.output.expand
39
+ names = Lono::Names.new(blueprint: blueprint)
40
+ # explicit expansion pattern provided by user
41
+ pattern = blueprint.include?(':') ? blueprint : Lono.config.names.output.stack
42
+ names.expansion(pattern)
38
43
  end
39
44
 
40
45
  private
@@ -1,5 +1,5 @@
1
- module Lono::Template::Strategy::Dsl::Builder::Helpers
2
- module TagsHelper
1
+ module Lono::Builder::Dsl::Helpers
2
+ module Tags
3
3
  def tags(hash={})
4
4
  if hash.empty?
5
5
  tag_list(@tags) if @tags # when hash is empty, use @tags variable. If not set then return nil
@@ -0,0 +1,66 @@
1
+ module Lono::Builder::Dsl::Helpers
2
+ module TemplateFile
3
+ extend Memoist
4
+ include Lono::Utils::Pretty
5
+
6
+ def template_file(path)
7
+ path = "#{@blueprint.root}/#{path}"
8
+ if File.exist?(path)
9
+ render_file(path)
10
+ else
11
+ template_file_missing(path)
12
+ end
13
+ end
14
+ # do not memoize :template_file - it'll hide the template_file_missing error
15
+
16
+ # Caller lines are different for OSes:
17
+ #
18
+ # windows: "C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/lono-1.1.1/lib/lono/builder.rb:34:in `build'"
19
+ # linux: "/home/ec2-user/.rvm/gems/ruby-3.0.3/gems/lono-1.1.1/lib/lono/compiler/dsl/syntax/mod.rb:4:in `<module:Mod>'"
20
+ #
21
+ class TempleFileNotFoundError < StandardError; end
22
+ def template_file_missing(path)
23
+ message = "ERROR: path #{pretty_path(path)} not found"
24
+ caller_line = caller.find { |l| l =~ %r{/blueprints/} } # TODO: show code itself
25
+ logger.error message.color(:red)
26
+ logger.error "Called from:"
27
+ logger.error " #{pretty_path(caller_line)}"
28
+ # Raise an error so Dsl::Evaluator#template_evaluation_error provides user friendly info
29
+ raise TempleFileNotFoundError.new
30
+ end
31
+
32
+ def render_file(path)
33
+ if File.exist?(path)
34
+ RenderMePretty.result(path, context: self)
35
+ else
36
+ lines = caller.select { |l| l.include?(Lono.root.to_s) } # TODO: show code itself
37
+ caller_line = pretty_path(lines.first)
38
+ message =<<~EOL
39
+ WARN: #{pretty_path(path)} does not exist
40
+ Called from: #{caller_line}
41
+ EOL
42
+ logger.info message.color(:yellow)
43
+ message
44
+ end
45
+ end
46
+ alias_method :render_path, :render_file
47
+
48
+ def user_data_script
49
+ unless @user_data_script
50
+ script_example = pretty_path("#{@blueprint.root}/template/user_data.sh")
51
+ return <<~EOL
52
+ # @user_data_script variable not set. IE: @user_data_script = "#{script_example}"
53
+ # Also, make sure that "#{script_example}" exists.
54
+ EOL
55
+ end
56
+
57
+ if File.exist?(@user_data_script)
58
+ render_file(@user_data_script)
59
+ else
60
+ message = "WARN: #{@user_data_script} not found"
61
+ logger.info message.color(:yellow)
62
+ "# #{message}"
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,5 @@
1
+ class Lono::Builder::Dsl
2
+ module Helpers
3
+ include_modules("helpers")
4
+ end
5
+ end
@@ -0,0 +1,22 @@
1
+ module Lono::Builder::Dsl::Syntax::Core
2
+ class Base
3
+ include Lono::Builder::Util::Stringify
4
+ include Lono::Builder::Dsl::Syntax::Fn
5
+
6
+ def initialize(blueprint, *definition)
7
+ @blueprint = blueprint
8
+ @definition = definition.flatten
9
+ end
10
+
11
+ private
12
+ def camelize(attributes)
13
+ data = stringify!(attributes)
14
+ clean(data)
15
+ end
16
+
17
+ # Remove items with nil value automatically
18
+ def clean(data)
19
+ Squeezer.new(data).squeeze
20
+ end
21
+ end
22
+ end
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # template - uses @definition to build a CloudFormation template section
4
4
  #
5
- module Lono::Template::Strategy::Dsl::Builder::Section
5
+ module Lono::Builder::Dsl::Syntax::Core
6
6
  class Condition < Base
7
7
  def template
8
8
  camelize(standarize(@definition))
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # template - uses @definition to build a CloudFormation template section
4
4
  #
5
- module Lono::Template::Strategy::Dsl::Builder::Section
5
+ module Lono::Builder::Dsl::Syntax::Core
6
6
  class Mapping < Base
7
7
  def template
8
8
  camelize(standarize(@definition))
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # template - uses @definition to build a CloudFormation template section
4
4
  #
5
- module Lono::Template::Strategy::Dsl::Builder::Section
5
+ module Lono::Builder::Dsl::Syntax::Core
6
6
  class Output < Base
7
7
  def template
8
8
  camelize(standarize(@definition))
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # template - uses @definition to build a CloudFormation template section
4
4
  #
5
- module Lono::Template::Strategy::Dsl::Builder::Section
5
+ module Lono::Builder::Dsl::Syntax::Core
6
6
  class Parameter < Base
7
7
  attr_accessor :group_label
8
8
  attr_reader :conditional, :label
@@ -1,12 +1,22 @@
1
- class Lono::Template::Strategy::Dsl::Builder::Section::Resource
1
+ class Lono::Builder::Dsl::Syntax::Core::Resource
2
2
  # Moves the property to the top-level attributes *destructively*
3
3
  class PropertyMover
4
4
  def initialize(resource, logical_id, properties)
5
5
  @resource, @logical_id, @properties = resource, logical_id, properties
6
6
  end
7
7
 
8
+ # AWS Docs: Resource attribute reference
9
+ # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-product-attribute-reference.html
8
10
  def move!
9
- %w[Condition DeletionPolicy DependsOn].each do |attribute_name|
11
+ %w[
12
+ Condition
13
+ CreationPolicy
14
+ DeletionPolicy
15
+ DependsOn
16
+ Metadata
17
+ UpdatePolicy
18
+ UpdateReplacePolicy
19
+ ].each do |attribute_name|
10
20
  # Account for camelize, underscore, String, and Symbol
11
21
  move(attribute_name.to_sym)
12
22
  move(attribute_name.camelize.to_sym)
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # template - uses @definition to build a CloudFormation template section
4
4
  #
5
- module Lono::Template::Strategy::Dsl::Builder::Section
5
+ module Lono::Builder::Dsl::Syntax::Core
6
6
  class Resource < Base
7
7
  def template
8
8
  camelize(standarize(@definition))
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # template - uses @definition to build a CloudFormation template section
4
4
  #
5
- module Lono::Template::Strategy::Dsl::Builder::Section
5
+ module Lono::Builder::Dsl::Syntax::Core
6
6
  class Section < Base
7
7
  def template
8
8
  hash, _ = @definition
@@ -0,0 +1,38 @@
1
+ module Lono::Builder::Dsl::Syntax::Core
2
+ class Squeezer
3
+ def initialize(data)
4
+ @data = data
5
+ end
6
+
7
+ def squeeze(new_data=nil, previous_key=nil)
8
+ data = new_data.nil? ? @data : new_data
9
+
10
+ case data
11
+ when Array
12
+ data.map! { |v| squeeze(v) }
13
+ when Hash
14
+ data.each_with_object({}) do |(k,v), squeezed|
15
+ # only remove nil and empty Array values within Hash structures
16
+ squeezed[k] = squeeze(v, k) unless v.nil? # || empty_array?(v, previous_key)
17
+ squeezed
18
+ end
19
+ else
20
+ data # do not transform
21
+ end
22
+ end
23
+
24
+ # Special case do not squeeze empty Array when previous_key is "yum". Handles:
25
+ #
26
+ # Metadata:
27
+ # AWS::CloudFormation::Init:
28
+ # config:
29
+ # packages:
30
+ # yum:
31
+ # httpd: []
32
+ #
33
+ def empty_array?(v, previous_key)
34
+ return false if previous_key.to_s == "yum"
35
+ v.is_a?(Array) && v.empty?
36
+ end
37
+ end
38
+ end
@@ -1,6 +1,6 @@
1
1
  # Organize core section method syntax here
2
- module Lono::Template::Strategy::Dsl::Builder::Section
3
- module Methods
2
+ module Lono::Builder::Dsl::Syntax
3
+ module Core
4
4
  def aws_template_format_version(version_date)
5
5
  @cfn["AWSTemplateFormatVersion"] = version_date
6
6
  end
@@ -20,7 +20,7 @@ module Lono::Template::Strategy::Dsl::Builder::Section
20
20
 
21
21
  def parameter(*definition)
22
22
  @cfn["Parameters"] ||= {}
23
- param = Parameter.new(@blueprint, definition)
23
+ param = Parameter.new(@blueprint.name, definition)
24
24
  @cfn["Parameters"].merge!(param.template)
25
25
 
26
26
  # Additional decorations
@@ -33,32 +33,32 @@ module Lono::Template::Strategy::Dsl::Builder::Section
33
33
 
34
34
  def mapping(*definition)
35
35
  @cfn["Mappings"] ||= {}
36
- mapping = Mapping.new(@blueprint, definition)
36
+ mapping = Mapping.new(@blueprint.name, definition)
37
37
  @cfn["Mappings"].merge!(mapping.template)
38
38
  end
39
39
 
40
40
  def resource(*definition)
41
41
  @cfn["Resources"] ||= {}
42
- resource = Resource.new(@blueprint, definition)
42
+ resource = Resource.new(@blueprint.name, definition)
43
43
  @cfn["Resources"].merge!(resource.template)
44
44
  end
45
45
 
46
46
  def condition(*definition)
47
47
  @cfn["Conditions"] ||= {}
48
- condition = Condition.new(@blueprint, definition)
48
+ condition = Condition.new(@blueprint.name, definition)
49
49
  @cfn["Conditions"].merge!(condition.template)
50
50
  end
51
51
 
52
52
  def output(*definition)
53
53
  @cfn["Outputs"] ||= {}
54
- output = Output.new(@blueprint, definition)
54
+ output = Output.new(@blueprint.name, definition)
55
55
  @cfn["Outputs"].merge!(output.template)
56
56
  end
57
57
 
58
58
  # Generic section method in case CloudFormation adds a new future section.
59
59
  # The generic section method adds a new top-level key
60
60
  def section(key, definition)
61
- @cfn[key] = Section.new(@blueprint, definition).template
61
+ @cfn[key] = Section.new(@blueprint.name, definition).template
62
62
  end
63
63
  end
64
64
  end
@@ -1,4 +1,4 @@
1
- class Lono::Template::Strategy::Dsl::Builder
1
+ module Lono::Builder::Dsl::Syntax
2
2
  module Fn
3
3
  # Also act as documentation on the method signatures
4
4
  # Also used in Coder crafting so should always list all the functions here
@@ -83,7 +83,7 @@ class Lono::Template::Strategy::Dsl::Builder
83
83
  end
84
84
  end
85
85
 
86
- def conditional_ref(name, options)
86
+ def conditional_ref(name, options={})
87
87
  fallback = options[:Fallback] || options[:fallback] || ref("AWS::NoValue")
88
88
  if!("Has#{name}", ref(name, options), fallback)
89
89
  end
@@ -1,4 +1,4 @@
1
- module Lono::Template::Strategy::Dsl::Builder::Syntax
1
+ module Lono::Builder::Dsl::Syntax
2
2
  module ParameterGroup
3
3
  def parameter_group(label)
4
4
  @group_label = label
@@ -0,0 +1,9 @@
1
+ # Encapsulates syntax methods so they can be included in both the Evaluator and Context scope
2
+ class Lono::Builder::Dsl
3
+ module Syntax
4
+ include Fn
5
+ include Core
6
+ include ParameterGroup
7
+ include Helpers
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module Lono::Builder
2
+ class Dsl < Lono::CLI::Base
3
+ attr_reader :results
4
+ def run
5
+ logger.info "Building template" unless @options[:quiet]
6
+ build_template
7
+ end
8
+
9
+ def build_template
10
+ evaluator = Evaluator.new(@options)
11
+ evaluator.evaluate
12
+ end
13
+ end
14
+ end
@@ -1,15 +1,19 @@
1
- class Lono::Param
2
- class Generator < Lono::AbstractBase
3
- attr_reader :env_path, :base_path # set when generate is called
1
+ module Lono::Builder
2
+ class Param < Lono::CLI::Base
3
+ attr_reader :env_path, :base_path # set when build is called
4
+ include Lono::Builder::Dsl::Syntax
5
+ # Overriding output resource DSL method
6
+ alias_method :output, :stack_output
4
7
 
5
- def generate
6
- puts "Generating parameter files for blueprint #{@blueprint.color(:green)}:"
8
+ def build
9
+ logger.info "Building parameters"
7
10
 
8
11
  contents = []
9
- layering = Lono::Layering.new("params", @options, Lono.env)
10
- layering.locations.each do |path|
11
- contents << render_erb(path)
12
+
13
+ layers.each do |layer|
14
+ contents << render_erb(layer)
12
15
  end
16
+
13
17
  contents = contents.compact.join("\n") # result
14
18
 
15
19
  data = convert_to_cfn_format(contents)
@@ -17,30 +21,28 @@ class Lono::Param
17
21
  json = JSON.pretty_generate(camel_data)
18
22
  write_output(json)
19
23
  unless @options[:mute]
20
- short_output_path = output_path.sub("#{Lono.root}/","")
21
- puts " #{short_output_path}"
24
+ short_param_path = param_path.sub("#{Lono.root}/","")
25
+ logger.info " #{short_param_path}"
22
26
  end
23
27
 
24
28
  data
25
29
  end
26
30
 
31
+ def layers
32
+ Lono::Layering::Layer.new(@blueprint, "params").paths
33
+ end
34
+
27
35
  def parameters
28
- generate
36
+ build
29
37
  end
30
38
 
31
39
  def render_erb(path)
32
40
  return unless path
33
41
  if File.exist?(path)
34
- RenderMePretty.result(path, context: context)
42
+ RenderMePretty.result(path, context: self)
35
43
  end
36
44
  end
37
45
 
38
- # Context for ERB rendering.
39
- # This is where we control what references get passed to the ERB rendering.
40
- def context
41
- @context ||= Lono::Template::Context.new(@options)
42
- end
43
-
44
46
  def convert_to_cfn_format(contents, casing=:underscore)
45
47
  lines = parse_contents(contents)
46
48
 
@@ -96,14 +98,14 @@ class Lono::Param
96
98
  end
97
99
  end
98
100
 
99
- def output_path
100
- "#{Lono.root}/output/#{@blueprint}/params/#{@stack}.json"
101
+ def param_path
102
+ "#{Lono.root}/output/#{@blueprint.name}/params.json"
101
103
  end
102
104
 
103
105
  def write_output(json)
104
- dir = File.dirname(output_path)
106
+ dir = File.dirname(param_path)
105
107
  FileUtils.mkdir_p(dir)
106
- IO.write(output_path, json)
108
+ IO.write(param_path, json)
107
109
  end
108
110
  end
109
111
  end
@@ -0,0 +1,15 @@
1
+ require "aws-sdk-s3"
2
+
3
+ class Lono::Builder::Template::AwsService
4
+ def s3
5
+ return @s3 if @s3
6
+
7
+ options = {}
8
+ endpoint = ENV['S3_ENDPOINT'] if ENV['S3_ENDPOINT']
9
+ options[:endpoint] = endpoint if endpoint
10
+ if options[:endpoint]
11
+ options[:region] = options[:endpoint].split('.')[1]
12
+ end
13
+ @s3 = Aws::S3::Client.new(options)
14
+ end
15
+ end
@@ -0,0 +1,43 @@
1
+ require 'open-uri'
2
+
3
+ class Lono::Builder::Template
4
+ class Bashify
5
+ include Lono::Utils::Logging
6
+
7
+ def initialize(options={})
8
+ @options = options
9
+ @path = options[:path]
10
+ end
11
+
12
+ def user_data_paths(data,path="")
13
+ paths = []
14
+ paths << path
15
+ data.each do |key,value|
16
+ if value.is_a?(Hash)
17
+ paths += user_data_paths(value,"#{path}/#{key}")
18
+ else
19
+ paths += ["#{path}/#{key}"]
20
+ end
21
+ end
22
+ paths.select {|p| p =~ /UserData/ && p =~ /Fn::Join/ }
23
+ end
24
+
25
+ def run
26
+ raw = open(@path).read
27
+ json = JSON.load(raw)
28
+ paths = user_data_paths(json)
29
+ if paths.empty?
30
+ logger.info "No UserData script found"
31
+ return
32
+ end
33
+ paths.each do |path|
34
+ logger.info "UserData script for #{path}:"
35
+ key = path.sub('/','').split("/").map {|x| "['#{x}']"}.join('')
36
+ user_data = eval("json#{key}")
37
+ delimiter = user_data[0]
38
+ script = user_data[1]
39
+ logger.info script.join(delimiter)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,9 +1,9 @@
1
- module Lono::Output
2
- class Template
1
+ class Lono::Builder::Template
2
+ class Output
3
3
  extend Memoist
4
4
 
5
- def initialize(blueprint, template)
6
- @blueprint, @template = blueprint, template
5
+ def initialize(blueprint)
6
+ @blueprint = blueprint
7
7
  end
8
8
 
9
9
  def required_parameters
@@ -34,8 +34,16 @@ module Lono::Output
34
34
  end
35
35
  end
36
36
 
37
+ def outputs
38
+ data["Outputs"] || {}
39
+ end
40
+
41
+ def resources
42
+ data["Resources"] || {}
43
+ end
44
+
37
45
  def data
38
- template_path = "#{Lono.config.output_path}/#{@blueprint}/templates/#{@template}.yml"
46
+ template_path = "#{Lono.root}/output/#{@blueprint.name}/template.yml"
39
47
  check_template_exists!(template_path)
40
48
  YAML.load(IO.read(template_path))
41
49
  end
@@ -55,8 +63,7 @@ module Lono::Output
55
63
  # does not exist.
56
64
  def check_template_exists!(template_path)
57
65
  return if File.exist?(template_path)
58
- puts "The template #{template_path} does not exist. Are you sure you use the right template name? The template name does not require the extension.".color(:red)
59
- exit 1
66
+ raise "The template #{template_path} does not exist. Are you sure you use the right template name? The template name does not require the extension.".color(:red)
60
67
  end
61
68
  end
62
69
  end
@@ -1,5 +1,5 @@
1
- class Lono::Template
2
- class PostProcessor < Lono::AbstractBase
1
+ class Lono::Builder::Template
2
+ class PostProcessor < Lono::CLI::Base
3
3
  def run
4
4
  replacements.each do |placeholder, replacement|
5
5
  update_template!(template)
@@ -20,7 +20,7 @@ class Lono::Template
20
20
  elsif item.directory? || item.file?
21
21
  placeholder = "file://app/files/file/#{item.name}"
22
22
  else
23
- puts "WARN: PostProcessor replacements Cannot find file: #{item.output_path}"
23
+ logger.info "WARN: PostProcessor replacements Cannot find file: #{item.output_path}"
24
24
  next
25
25
  end
26
26
  map[placeholder] = item.s3_path
@@ -61,7 +61,7 @@ class Lono::Template
61
61
  memoize :template
62
62
 
63
63
  def template_path
64
- "#{Lono.config.output_path}/#{@blueprint}/templates/#{@template}.yml"
64
+ "#{Lono.root}/output/#{@blueprint.name}/templates/#{@template}.yml"
65
65
  end
66
66
  end
67
67
  end
@@ -0,0 +1,8 @@
1
+ class Lono::Builder::Template
2
+ class Upload < Lono::CLI::Base
3
+ def run
4
+ path = "#{Lono.root}/output/#{@blueprint.name}/template.yml"
5
+ Lono::S3::Uploader.new(path).upload
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ require "yaml"
2
+
3
+ module Lono::Builder
4
+ class Template < Lono::CLI::Base
5
+ extend Memoist
6
+
7
+ def run
8
+ check_blueprint_exist!
9
+ data = dsl.run # The generator strategy classes write templates to disk
10
+ write_output(data)
11
+ end
12
+
13
+ private
14
+ def check_blueprint_exist!
15
+ return if @blueprint.exist?
16
+ logger.error "ERROR: Blueprint #{@blueprint.name} not found.".color(:red)
17
+ logger.error <<~EOL
18
+ Searched:
19
+
20
+ app/blueprints
21
+ vendor/blueprints
22
+
23
+ Are you sure it exists? To check, you can run:
24
+
25
+ lono list
26
+
27
+ EOL
28
+ exit 1
29
+ end
30
+
31
+ def write_output(data)
32
+ path = @blueprint.output_path
33
+ ensure_parent_dir(path)
34
+ text = YAML.dump(data)
35
+ IO.write(path, text)
36
+
37
+ Lono::Yamler::Validator.new(path).validate!
38
+
39
+ unless @options[:quiet]
40
+ pretty_path = path.sub("#{Lono.root}/",'')
41
+ logger.info " #{pretty_path}"
42
+ end
43
+ end
44
+
45
+ def ensure_parent_dir(path)
46
+ dir = File.dirname(path)
47
+ FileUtils.mkdir_p(dir) unless File.exist?(dir)
48
+ end
49
+
50
+ def dsl
51
+ Dsl.new(@options)
52
+ end
53
+ memoize :dsl
54
+ end
55
+ end