lono 7.5.2 → 8.0.0.pre.rc1

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 (458) 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 +21 -4
  10. data/CONTRIBUTING.md +2 -2
  11. data/Gemfile +5 -1
  12. data/LICENSE.txt +201 -1
  13. data/README.md +4 -4
  14. data/lib/lono/api/client.rb +3 -2
  15. data/lib/lono/app/inits.rb +13 -0
  16. data/lib/lono/app.rb +71 -0
  17. data/lib/lono/app_file/base.rb +1 -1
  18. data/lib/lono/app_file/build/lambda_layer/ruby_packager.rb +9 -9
  19. data/lib/lono/app_file/build/lambda_layer.rb +3 -3
  20. data/lib/lono/app_file/build.rb +9 -14
  21. data/lib/lono/app_file/registry/item.rb +4 -4
  22. data/lib/lono/app_file/upload.rb +1 -1
  23. data/lib/lono/autoloader.rb +2 -2
  24. data/lib/lono/aws_services/helper.rb +43 -6
  25. data/lib/lono/aws_services.rb +37 -6
  26. data/lib/lono/blueprint.rb +18 -9
  27. data/lib/lono/booter.rb +28 -0
  28. data/lib/lono/{template → builder}/context/helpers.rb +1 -1
  29. data/lib/lono/{template → builder}/context/loader/load_files.rb +5 -6
  30. data/lib/lono/builder/context/loader.rb +35 -0
  31. data/lib/lono/builder/context/params.rb +7 -0
  32. data/lib/lono/{template → builder}/context/ssm_fetcher.rb +1 -1
  33. data/lib/lono/{template → builder}/context.rb +5 -9
  34. data/lib/lono/{param/generator.rb → builder/param.rb} +21 -22
  35. data/lib/lono/builder/template/aws_service.rb +15 -0
  36. data/lib/lono/builder/template/bashify.rb +43 -0
  37. data/lib/lono/{template → builder/template}/configset_injector.rb +4 -4
  38. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/fn.rb +2 -2
  39. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers/core_helper.rb +1 -1
  40. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers/ec2_helper.rb +1 -1
  41. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers/file_helper.rb +8 -12
  42. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers/s3_helper.rb +2 -2
  43. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers/stack_helper.rb +11 -8
  44. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers/tags_helper.rb +1 -1
  45. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/helpers.rb +2 -2
  46. data/lib/lono/builder/template/dsl/evaluator/section/base.rb +23 -0
  47. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/condition.rb +1 -1
  48. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/mapping.rb +1 -1
  49. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/methods.rb +7 -7
  50. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/output.rb +1 -1
  51. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/parameter.rb +1 -1
  52. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/resource/property_mover.rb +1 -1
  53. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/resource.rb +1 -1
  54. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/section/section.rb +1 -1
  55. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/squeezer.rb +1 -1
  56. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/stringify.rb +1 -1
  57. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/syntax/extend_with.rb +1 -1
  58. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/syntax/parameter_group.rb +1 -1
  59. data/lib/lono/{template/strategy/dsl/builder → builder/template/dsl/evaluator}/syntax.rb +3 -3
  60. data/lib/lono/builder/template/dsl/evaluator.rb +45 -0
  61. data/lib/lono/{template/strategy → builder/template}/dsl/finalizer/parameter_groups.rb +2 -2
  62. data/lib/lono/{template/strategy → builder/template}/dsl/finalizer.rb +1 -1
  63. data/lib/lono/builder/template/dsl.rb +14 -0
  64. data/lib/lono/{template → builder/template}/evaluate.rb +18 -6
  65. data/lib/lono/builder/template/helpers.rb +149 -0
  66. data/lib/lono/{output/template.rb → builder/template/output.rb} +14 -7
  67. data/lib/lono/{template → builder/template}/post_processor.rb +4 -4
  68. data/lib/lono/{template → builder/template}/upload.rb +3 -5
  69. data/lib/lono/builder/template.rb +55 -0
  70. data/lib/lono/bundler/cli/base.rb +10 -0
  71. data/lib/lono/bundler/cli/bundle.rb +44 -0
  72. data/lib/lono/bundler/cli/clean.rb +27 -0
  73. data/lib/lono/bundler/cli/help/bundle.md +3 -0
  74. data/lib/lono/bundler/cli/help.rb +11 -0
  75. data/lib/lono/bundler/cli.rb +7 -0
  76. data/lib/lono/bundler/component/concerns/local_concern.rb +10 -0
  77. data/lib/lono/bundler/component/concerns/notation_concern.rb +59 -0
  78. data/lib/lono/bundler/component/concerns/path_concern.rb +68 -0
  79. data/lib/lono/bundler/component/concerns/stack_concern.rb +60 -0
  80. data/lib/lono/bundler/component/fetcher/base.rb +27 -0
  81. data/lib/lono/bundler/component/fetcher/gcs.rb +69 -0
  82. data/lib/lono/bundler/component/fetcher/git.rb +69 -0
  83. data/lib/lono/bundler/component/fetcher/local.rb +15 -0
  84. data/lib/lono/bundler/component/fetcher/s3.rb +66 -0
  85. data/lib/lono/bundler/component/fetcher.rb +18 -0
  86. data/lib/lono/bundler/component/http/concern.rb +45 -0
  87. data/lib/lono/bundler/component/http/source.rb +19 -0
  88. data/lib/lono/bundler/component/org_repo.rb +65 -0
  89. data/lib/lono/bundler/component/props/extension.rb +19 -0
  90. data/lib/lono/bundler/component/props/typer.rb +41 -0
  91. data/lib/lono/bundler/component/props.rb +122 -0
  92. data/lib/lono/bundler/component/registry.rb +136 -0
  93. data/lib/lono/bundler/component.rb +52 -0
  94. data/lib/lono/bundler/config.rb +18 -0
  95. data/lib/lono/bundler/dsl/syntax.rb +46 -0
  96. data/lib/lono/bundler/dsl.rb +21 -0
  97. data/lib/lono/bundler/exporter/base.rb +6 -0
  98. data/lib/lono/bundler/exporter/copy.rb +22 -0
  99. data/lib/lono/bundler/exporter.rb +50 -0
  100. data/lib/lono/bundler/extract/tar.rb +34 -0
  101. data/lib/lono/bundler/extract/zip.rb +16 -0
  102. data/lib/lono/bundler/info.rb +39 -0
  103. data/lib/lono/bundler/list.rb +26 -0
  104. data/lib/lono/bundler/lockfile/version_comparer.rb +56 -0
  105. data/lib/lono/bundler/lockfile/yamler.rb +36 -0
  106. data/lib/lono/bundler/lockfile.rb +66 -0
  107. data/lib/lono/bundler/lonofile.rb +32 -0
  108. data/lib/lono/bundler/runner.rb +27 -0
  109. data/lib/lono/bundler/syncer.rb +70 -0
  110. data/lib/lono/bundler/util/git.rb +37 -0
  111. data/lib/lono/bundler/util/logging.rb +7 -0
  112. data/lib/lono/bundler/util/sure.rb +5 -0
  113. data/lib/lono/{bundle.rb → bundler.rb} +38 -4
  114. data/lib/lono/cfn/base.rb +9 -195
  115. data/lib/lono/cfn/cancel.rb +9 -26
  116. data/lib/lono/cfn/concerns/build.rb +10 -0
  117. data/lib/lono/cfn/concerns/template_output.rb +10 -0
  118. data/lib/lono/cfn/concerns.rb +43 -0
  119. data/lib/lono/cfn/delete.rb +8 -32
  120. data/lib/lono/cfn/deploy/base.rb +4 -0
  121. data/lib/lono/cfn/deploy/iam.rb +49 -0
  122. data/lib/lono/cfn/deploy/notification.rb +8 -0
  123. data/lib/lono/cfn/deploy/operable.rb +18 -0
  124. data/lib/lono/cfn/deploy/opts.rb +49 -0
  125. data/lib/lono/cfn/deploy/rollback.rb +46 -0
  126. data/lib/lono/cfn/deploy/tags.rb +18 -0
  127. data/lib/lono/cfn/deploy.rb +71 -5
  128. data/lib/lono/cfn/download.rb +5 -7
  129. data/lib/lono/cfn/output.rb +49 -0
  130. data/lib/lono/cfn/plan/base.rb +19 -0
  131. data/lib/lono/cfn/plan/changeset/base.rb +19 -0
  132. data/lib/lono/cfn/plan/changeset/notifications.rb +24 -0
  133. data/lib/lono/cfn/plan/changeset/outputs.rb +25 -0
  134. data/lib/lono/cfn/plan/changeset/resources.rb +48 -0
  135. data/lib/lono/cfn/plan/changeset/tags.rb +16 -0
  136. data/lib/lono/cfn/plan/changeset.rb +136 -0
  137. data/lib/lono/cfn/plan/concerns.rb +10 -0
  138. data/lib/lono/cfn/plan/delete.rb +16 -0
  139. data/lib/lono/cfn/plan/diff/base.rb +10 -0
  140. data/lib/lono/cfn/plan/diff/data.rb +52 -0
  141. data/lib/lono/cfn/plan/diff/file.rb +56 -0
  142. data/lib/lono/cfn/plan/new.rb +26 -0
  143. data/lib/lono/cfn/{preview → plan}/param.rb +26 -34
  144. data/lib/lono/cfn/plan/summary.rb +16 -0
  145. data/lib/lono/cfn/plan/template.rb +28 -0
  146. data/lib/lono/cfn/plan.rb +33 -0
  147. data/lib/lono/cfn/show.rb +30 -0
  148. data/lib/lono/cfn/status.rb +1 -1
  149. data/lib/lono/cli/abstract.rb +17 -0
  150. data/lib/lono/cli/base.rb +9 -0
  151. data/lib/lono/cli/build.rb +101 -0
  152. data/lib/lono/cli/bundle.rb +21 -0
  153. data/lib/lono/cli/cfn/opts.rb +59 -0
  154. data/lib/lono/cli/cfn.rb +19 -0
  155. data/lib/lono/cli/clean.rb +22 -0
  156. data/lib/lono/{code.rb → cli/code.rb} +2 -2
  157. data/lib/lono/{completion.rb → cli/completion.rb} +2 -2
  158. data/lib/lono/{help → cli/help}/blueprint/new.md +4 -4
  159. data/lib/lono/{help/generate.md → cli/help/build.md} +6 -6
  160. data/lib/lono/{help → cli/help}/cfn/cancel.md +0 -0
  161. data/lib/lono/cli/help/cfn/download.md +3 -0
  162. data/lib/lono/{help → cli/help}/cfn/preview.md +9 -8
  163. data/lib/lono/{help → cli/help}/cfn/status.md +0 -0
  164. data/lib/lono/cli/help/cfn.md +4 -0
  165. data/lib/lono/{help → cli/help}/code/convert.md +0 -0
  166. data/lib/lono/{help → cli/help}/code/import.md +2 -2
  167. data/lib/lono/{help → cli/help}/completion.md +3 -3
  168. data/lib/lono/{help → cli/help}/completion_script.md +0 -0
  169. data/lib/lono/{help → cli/help}/configsets.md +0 -0
  170. data/lib/lono/cli/help/down.md +13 -0
  171. data/lib/lono/cli/help/new/project.md +34 -0
  172. data/lib/lono/{help → cli/help}/param/generate.md +0 -0
  173. data/lib/lono/cli/help/param.md +6 -0
  174. data/lib/lono/{help → cli/help}/pro/blueprints.md +0 -0
  175. data/lib/lono/{help → cli/help}/pro/configsets.md +0 -0
  176. data/lib/lono/{help → cli/help}/script/build.md +0 -0
  177. data/lib/lono/{help → cli/help}/script/upload.md +0 -0
  178. data/lib/lono/{help → cli/help}/seed.md +2 -2
  179. data/lib/lono/cli/help/summary.md +33 -0
  180. data/lib/lono/{help → cli/help}/template/bashify.md +0 -0
  181. data/lib/lono/cli/help/template/generate.md +7 -0
  182. data/lib/lono/{help → cli/help}/template.md +0 -0
  183. data/lib/lono/cli/help/up.md +30 -0
  184. data/lib/lono/{help → cli/help}/user_data.md +3 -3
  185. data/lib/lono/cli/help.rb +56 -0
  186. data/lib/lono/cli/list.rb +28 -0
  187. data/lib/lono/cli/new/blueprint.rb +33 -0
  188. data/lib/lono/cli/new/concerns.rb +16 -0
  189. data/lib/lono/{configset/new.rb → cli/new/configset.rb} +2 -9
  190. data/lib/lono/{extension/new.rb → cli/new/extension.rb} +2 -10
  191. data/lib/lono/cli/new/helper.rb +32 -0
  192. data/lib/lono/cli/new/project.rb +77 -0
  193. data/lib/lono/cli/new/sequence.rb +51 -0
  194. data/lib/lono/cli/new/shim.rb +59 -0
  195. data/lib/lono/cli/new/test/blueprint.rb +23 -0
  196. data/lib/lono/cli/new/test/sequence.rb +10 -0
  197. data/lib/lono/cli/new/test.rb +8 -0
  198. data/lib/lono/cli/new.rb +31 -0
  199. data/lib/lono/{opts.rb → cli/opts.rb} +9 -12
  200. data/lib/lono/{s3.rb → cli/s3.rb} +9 -7
  201. data/lib/lono/cli/script/base.rb +5 -0
  202. data/lib/lono/cli/script/build.rb +72 -0
  203. data/lib/lono/cli/script/upload.rb +49 -0
  204. data/lib/lono/{script.rb → cli/script.rb} +2 -2
  205. data/lib/lono/cli/seed.rb +9 -0
  206. data/lib/lono/cli/test.rb +35 -0
  207. data/lib/lono/cli.rb +80 -109
  208. data/lib/lono/command.rb +27 -0
  209. data/lib/lono/configset/{generator.rb → builder.rb} +9 -7
  210. data/lib/lono/configset/combiner.rb +8 -6
  211. data/lib/lono/configset/evaluate_file.rb +1 -1
  212. data/lib/lono/configset/meta.rb +1 -1
  213. data/lib/lono/configset/s3_file/build.rb +5 -4
  214. data/lib/lono/configset/s3_file/item.rb +1 -1
  215. data/lib/lono/configset/s3_file/upload.rb +2 -2
  216. data/lib/lono/configset/strategy/base.rb +6 -6
  217. data/lib/lono/configset/strategy/helpers/dsl/core.rb +1 -1
  218. data/lib/lono/core.rb +25 -54
  219. data/lib/lono/extensions/dsl.rb +2 -5
  220. data/lib/lono/extensions/loader.rb +1 -12
  221. data/lib/lono/extensions.rb +2 -2
  222. data/lib/lono/importer/base.rb +5 -5
  223. data/lib/lono/importer/download.rb +7 -7
  224. data/lib/lono/importer/dsl.rb +3 -3
  225. data/lib/lono/importer/service/coder.rb +10 -10
  226. data/lib/lono/importer.rb +1 -10
  227. data/lib/lono/inspector/base.rb +7 -7
  228. data/lib/lono/inspector/summary.rb +19 -17
  229. data/lib/lono/layering/layer.rb +126 -0
  230. data/lib/lono/layering.rb +13 -55
  231. data/lib/lono/logger/formatter.rb +13 -0
  232. data/lib/lono/logger.rb +33 -0
  233. data/lib/lono/lookup.rb +12 -0
  234. data/lib/lono/names.rb +50 -0
  235. data/lib/lono/plugin/meta.rb +30 -0
  236. data/lib/lono/plugin/tester.rb +13 -0
  237. data/lib/lono/plugin.rb +10 -0
  238. data/lib/lono/s3/aws_setup.rb +4 -3
  239. data/lib/lono/s3/bucket.rb +19 -19
  240. data/lib/lono/s3/uploader.rb +10 -12
  241. data/lib/lono/script/base.rb +3 -3
  242. data/lib/lono/script/build.rb +11 -12
  243. data/lib/lono/script/upload.rb +7 -7
  244. data/lib/lono/{seed → seeder}/service_role.rb +1 -1
  245. data/lib/lono/{seed/base.rb → seeder.rb} +21 -36
  246. data/lib/lono/user_data.rb +8 -13
  247. data/lib/lono/utils/context.rb +15 -0
  248. data/lib/lono/utils/item/zip.rb +5 -5
  249. data/lib/lono/utils/logging.rb +7 -0
  250. data/lib/lono/utils/{pretty_time.rb → pretty.rb} +6 -2
  251. data/lib/lono/utils/quit.rb +7 -0
  252. data/lib/lono/utils/rsync.rb +4 -2
  253. data/lib/lono/utils/sure.rb +4 -4
  254. data/lib/lono/version.rb +1 -1
  255. data/lib/lono.rb +7 -12
  256. data/lib/templates/blueprint/template.rb +2 -0
  257. data/lib/templates/configset/{lib/configset.rb → configset.rb} +0 -0
  258. data/lib/templates/examples/blueprint/template.rb +9 -0
  259. data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
  260. data/lib/templates/{skeleton → project}/.gitignore +1 -2
  261. data/lib/templates/project/Gemfile.tt +11 -0
  262. data/lib/templates/project/README.md +9 -0
  263. data/lib/templates/project/config/app.rb +3 -0
  264. data/lib/templates/shim/lono +7 -0
  265. data/lono.gemspec +51 -44
  266. metadata +246 -269
  267. data/.circleci/README.md +0 -3
  268. data/.circleci/config.yml +0 -58
  269. data/.cody/acceptance.sh +0 -49
  270. data/.cody/buildspec.yml +0 -9
  271. data/.cody/demo.rb +0 -38
  272. data/.cody/project.rb +0 -6
  273. data/.gitmodules +0 -3
  274. data/lib/lono/abstract_base.rb +0 -25
  275. data/lib/lono/aws_services/stack.rb +0 -41
  276. data/lib/lono/aws_services/stack_set.rb +0 -41
  277. data/lib/lono/blueprint/configset/loader.rb +0 -7
  278. data/lib/lono/blueprint/helper.rb +0 -24
  279. data/lib/lono/blueprint/meta.rb +0 -30
  280. data/lib/lono/blueprint/new.rb +0 -127
  281. data/lib/lono/blueprint/root.rb +0 -25
  282. data/lib/lono/cfn/create.rb +0 -41
  283. data/lib/lono/cfn/opts.rb +0 -88
  284. data/lib/lono/cfn/preview/changeset.rb +0 -168
  285. data/lib/lono/cfn/preview/codediff.rb +0 -41
  286. data/lib/lono/cfn/preview/diff_viewer.rb +0 -23
  287. data/lib/lono/cfn/rollback.rb +0 -26
  288. data/lib/lono/cfn/update.rb +0 -71
  289. data/lib/lono/cfn.rb +0 -75
  290. data/lib/lono/clean.rb +0 -14
  291. data/lib/lono/configset/list.rb +0 -67
  292. data/lib/lono/configset/preparer.rb +0 -44
  293. data/lib/lono/configset/register/base.rb +0 -122
  294. data/lib/lono/configset/register/blueprint.rb +0 -16
  295. data/lib/lono/configset/register/dsl.rb +0 -14
  296. data/lib/lono/configset/register/project.rb +0 -13
  297. data/lib/lono/configset/resolver.rb +0 -47
  298. data/lib/lono/configset.rb +0 -16
  299. data/lib/lono/conventions.rb +0 -23
  300. data/lib/lono/core/config.rb +0 -22
  301. data/lib/lono/default/settings.yml +0 -21
  302. data/lib/lono/ext/bundler.rb +0 -7
  303. data/lib/lono/extension/helper.rb +0 -13
  304. data/lib/lono/extension/list.rb +0 -40
  305. data/lib/lono/extension.rb +0 -9
  306. data/lib/lono/extensions/preparer.rb +0 -26
  307. data/lib/lono/extensions/register.rb +0 -15
  308. data/lib/lono/file_uploader.rb +0 -21
  309. data/lib/lono/finder/base.rb +0 -152
  310. data/lib/lono/finder/blueprint/configset.rb +0 -17
  311. data/lib/lono/finder/blueprint.rb +0 -11
  312. data/lib/lono/finder/configset.rb +0 -11
  313. data/lib/lono/finder/extension.rb +0 -11
  314. data/lib/lono/generate.rb +0 -111
  315. data/lib/lono/help/cfn/create.md +0 -26
  316. data/lib/lono/help/cfn/delete.md +0 -13
  317. data/lib/lono/help/cfn/deploy.md +0 -21
  318. data/lib/lono/help/cfn/download.md +0 -3
  319. data/lib/lono/help/cfn/update.md +0 -49
  320. data/lib/lono/help/cfn.md +0 -7
  321. data/lib/lono/help/new.md +0 -57
  322. data/lib/lono/help/param.md +0 -6
  323. data/lib/lono/help/set_instances/delete.md +0 -21
  324. data/lib/lono/help/set_instances/deploy.md +0 -31
  325. data/lib/lono/help/set_instances/list.md +0 -14
  326. data/lib/lono/help/set_instances/status.md +0 -15
  327. data/lib/lono/help/set_instances/sync.md +0 -92
  328. data/lib/lono/help/sets/delete.md +0 -8
  329. data/lib/lono/help/sets/deploy.md +0 -76
  330. data/lib/lono/help/sets/status.md +0 -23
  331. data/lib/lono/help/summary.md +0 -33
  332. data/lib/lono/help/template/generate.md +0 -7
  333. data/lib/lono/help/upgrade.md +0 -1
  334. data/lib/lono/help/xgraph.md +0 -16
  335. data/lib/lono/help.rb +0 -15
  336. data/lib/lono/importer/erb.rb +0 -31
  337. data/lib/lono/inspector/graph.rb +0 -125
  338. data/lib/lono/jade/circular.rb +0 -26
  339. data/lib/lono/jade/materializer/final.rb +0 -10
  340. data/lib/lono/jade/materializer/gems_builder.rb +0 -81
  341. data/lib/lono/jade/materializer/source.rb +0 -54
  342. data/lib/lono/jade/materializer.rb +0 -15
  343. data/lib/lono/jade/registry.rb +0 -64
  344. data/lib/lono/jade.rb +0 -110
  345. data/lib/lono/jadespec.rb +0 -68
  346. data/lib/lono/new/helper.rb +0 -15
  347. data/lib/lono/new.rb +0 -95
  348. data/lib/lono/param.rb +0 -14
  349. data/lib/lono/pro/base.rb +0 -16
  350. data/lib/lono/pro/repo.rb +0 -28
  351. data/lib/lono/pro.rb +0 -15
  352. data/lib/lono/project_checker.rb +0 -35
  353. data/lib/lono/registration/base.rb +0 -37
  354. data/lib/lono/registration/check.rb +0 -15
  355. data/lib/lono/registration/temp.rb +0 -53
  356. data/lib/lono/registration/user.rb +0 -60
  357. data/lib/lono/seed.rb +0 -39
  358. data/lib/lono/sequence.rb +0 -35
  359. data/lib/lono/set_instances/base.rb +0 -30
  360. data/lib/lono/set_instances/changeable.rb +0 -53
  361. data/lib/lono/set_instances/create.rb +0 -7
  362. data/lib/lono/set_instances/delete.rb +0 -47
  363. data/lib/lono/set_instances/deploy.rb +0 -52
  364. data/lib/lono/set_instances/list.rb +0 -13
  365. data/lib/lono/set_instances/opts.rb +0 -37
  366. data/lib/lono/set_instances/status.rb +0 -12
  367. data/lib/lono/set_instances/sync.rb +0 -181
  368. data/lib/lono/set_instances/update.rb +0 -15
  369. data/lib/lono/set_instances.rb +0 -54
  370. data/lib/lono/sets/base.rb +0 -50
  371. data/lib/lono/sets/create.rb +0 -27
  372. data/lib/lono/sets/delete.rb +0 -43
  373. data/lib/lono/sets/deploy.rb +0 -11
  374. data/lib/lono/sets/list.rb +0 -35
  375. data/lib/lono/sets/opts.rb +0 -18
  376. data/lib/lono/sets/preview/codediff.rb +0 -35
  377. data/lib/lono/sets/preview/param.rb +0 -32
  378. data/lib/lono/sets/status/instance/base.rb +0 -120
  379. data/lib/lono/sets/status/instance/completed.rb +0 -35
  380. data/lib/lono/sets/status/instance/deleted.rb +0 -32
  381. data/lib/lono/sets/status/instance/show.rb +0 -7
  382. data/lib/lono/sets/status/instance.rb +0 -20
  383. data/lib/lono/sets/status/instances.rb +0 -136
  384. data/lib/lono/sets/status.rb +0 -128
  385. data/lib/lono/sets/summarize.rb +0 -22
  386. data/lib/lono/sets/time_spent.rb +0 -11
  387. data/lib/lono/sets/update.rb +0 -74
  388. data/lib/lono/sets/waiter.rb +0 -23
  389. data/lib/lono/sets.rb +0 -34
  390. data/lib/lono/setting.rb +0 -75
  391. data/lib/lono/template/aws_service.rb +0 -20
  392. data/lib/lono/template/bashify.rb +0 -39
  393. data/lib/lono/template/context/loader.rb +0 -52
  394. data/lib/lono/template/generator.rb +0 -23
  395. data/lib/lono/template/helper.rb +0 -152
  396. data/lib/lono/template/strategy/base.rb +0 -4
  397. data/lib/lono/template/strategy/common/helpers.rb +0 -44
  398. data/lib/lono/template/strategy/dsl/builder/section/base.rb +0 -30
  399. data/lib/lono/template/strategy/dsl/builder.rb +0 -59
  400. data/lib/lono/template/strategy/dsl.rb +0 -14
  401. data/lib/lono/template/strategy/erb.rb +0 -82
  402. data/lib/lono/template/strategy/source.rb +0 -8
  403. data/lib/lono/template/template.rb +0 -54
  404. data/lib/lono/template/util.rb +0 -8
  405. data/lib/lono/template.rb +0 -24
  406. data/lib/lono/upgrade.rb +0 -20
  407. data/lib/lono/utils/generators/tree.rb +0 -18
  408. data/lib/templates/blueprint/%blueprint_name%.gemspec.tt +0 -45
  409. data/lib/templates/blueprint/.gitignore +0 -11
  410. data/lib/templates/blueprint/CHANGELOG.md +0 -7
  411. data/lib/templates/blueprint/Gemfile +0 -4
  412. data/lib/templates/blueprint/README.md.tt +0 -33
  413. data/lib/templates/blueprint/Rakefile.tt +0 -9
  414. data/lib/templates/blueprint/seed/configs.rb +0 -28
  415. data/lib/templates/blueprint_types/dsl/app/templates/%blueprint_name%.rb +0 -36
  416. data/lib/templates/blueprint_types/dsl/app/user_data/bootstrap.sh +0 -2
  417. data/lib/templates/blueprint_types/erb/app/definitions/base.rb.tt +0 -1
  418. data/lib/templates/blueprint_types/erb/app/templates/%blueprint_name%.yml +0 -67
  419. data/lib/templates/configset/%configset_name%.gemspec.tt +0 -42
  420. data/lib/templates/configset/.gitignore +0 -10
  421. data/lib/templates/configset/CHANGELOG.md +0 -7
  422. data/lib/templates/configset/Gemfile +0 -4
  423. data/lib/templates/configset/README.md.tt +0 -3
  424. data/lib/templates/configset/Rakefile.tt +0 -9
  425. data/lib/templates/extension/%extension_name%.gemspec.tt +0 -46
  426. data/lib/templates/extension/.gitignore +0 -11
  427. data/lib/templates/extension/.rspec +0 -3
  428. data/lib/templates/extension/CHANGELOG.md +0 -7
  429. data/lib/templates/extension/Gemfile.tt +0 -4
  430. data/lib/templates/extension/Rakefile.tt +0 -9
  431. data/lib/templates/extension/spec/spec_helper.rb.tt +0 -29
  432. data/lib/templates/skeleton/Gemfile +0 -3
  433. data/lib/templates/skeleton/README.md +0 -58
  434. data/lib/templates/skeleton/configs/settings.yml +0 -13
  435. data/vendor/cfn-status/CHANGELOG.md +0 -14
  436. data/vendor/cfn-status/Gemfile +0 -4
  437. data/vendor/cfn-status/Gemfile.lock +0 -49
  438. data/vendor/cfn-status/LICENSE.txt +0 -21
  439. data/vendor/cfn-status/README.md +0 -58
  440. data/vendor/cfn-status/Rakefile +0 -6
  441. data/vendor/cfn-status/bin/console +0 -14
  442. data/vendor/cfn-status/bin/setup +0 -8
  443. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  444. data/vendor/cfn-status/lib/cfn-status.rb +0 -1
  445. data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
  446. data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
  447. data/vendor/cfn-status/lib/cfn_status.rb +0 -245
  448. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
  449. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
  450. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
  451. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
  452. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
  453. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
  454. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  455. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  456. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  457. data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
  458. data/vendor/cfn-status/spec/spec_helper.rb +0 -14
@@ -1,19 +1,19 @@
1
1
  class Lono::AppFile::Build
2
2
  class LambdaLayer
3
3
  def initialize(blueprint, registry_item)
4
- @blueprint, @registry_item = blueprint, registry_item
4
+ @blueprint.name, @registry_item = blueprint, registry_item
5
5
  end
6
6
 
7
7
  def build
8
8
  lang = @registry_item.options[:lang]
9
9
  unless lang =~ /ruby/
10
- puts "WARN: Currently only support ruby lambda layers".color(:yellow)
10
+ logger.info "WARN: Currently only support ruby lambda layers".color(:yellow)
11
11
  return
12
12
  end
13
13
 
14
14
  klass_name = "Lono::AppFile::Build::LambdaLayer::#{lang.camelize}Packager"
15
15
  klass = klass_name.constantize
16
- packager = klass.new(@blueprint, @registry_item)
16
+ packager = klass.new(@blueprint.name, @registry_item)
17
17
  packager.build
18
18
  end
19
19
  end
@@ -5,12 +5,12 @@ module Lono::AppFile
5
5
  include Lono::Utils::Item::Zip
6
6
 
7
7
  def initialize_variables
8
- @output_files_path = "#{Lono.config.output_path}/#{@blueprint}/files"
8
+ @output_files_path = "#{Lono.root}/output/#{@blueprint.name}/files"
9
9
  end
10
10
 
11
11
  def run
12
12
  return unless detect_files?
13
- puts "Building app/files for blueprint #{@blueprint}"
13
+ logger.info "Building app/files"
14
14
  build_all
15
15
  end
16
16
 
@@ -29,11 +29,11 @@ module Lono::AppFile
29
29
  end
30
30
  missing_paths = missing.map { |item| item.src_path }.uniq
31
31
  unless missing_paths.empty?
32
- puts "ERROR: These app/files are missing were used by the s3_key method but are missing".color(:red)
32
+ logger.info "ERROR: These app/files are missing were used by the s3_key method but are missing".color(:red)
33
33
  missing_paths.each do |path|
34
- puts " #{path}"
34
+ logger.info " #{path}"
35
35
  end
36
- puts "Please double check that they exist."
36
+ logger.info "Please double check that they exist."
37
37
  exit 1
38
38
  end
39
39
  end
@@ -51,32 +51,27 @@ module Lono::AppFile
51
51
  if item.type == "lambda_layer" || item.exist?
52
52
  zip(item)
53
53
  else
54
- puts "WARN: #{item.src_path} does not exist. Double check that the path is correct in the s3_key call.".color(:yellow)
54
+ logger.info "WARN: #{item.src_path} does not exist. Double check that the path is correct in the s3_key call.".color(:yellow)
55
55
  end
56
56
  end
57
57
  end
58
58
 
59
59
  def copy_to_output
60
- override_source_paths("#{Lono.blueprint_root}/app/files")
60
+ override_source_paths("#{@blueprint.root}/app/files")
61
61
  self.destination_root = @output_files_path
62
62
  directory(".", verbose: false, context: context.get_binding) # Thor::Action
63
63
  end
64
64
 
65
- def context
66
- Lono::Template::Context.new(@options)
67
- end
68
- memoize :context
69
-
70
65
  def clean_output
71
66
  FileUtils.rm_rf(@output_files_path)
72
67
  end
73
68
 
74
69
  def detect_files?
75
- app_files = Dir["#{Lono.blueprint_root}/app/files/*"]
70
+ app_files = Dir["#{@blueprint.root}/app/files/*"]
76
71
  if app_files.empty?
77
72
  false
78
73
  else
79
- puts "Detected app/files for blueprint #{@blueprint}"
74
+ logger.info "Detected app/files"
80
75
  true
81
76
  end
82
77
  end
@@ -5,19 +5,19 @@ class Lono::AppFile::Registry
5
5
 
6
6
  attr_reader :name, :options, :type
7
7
  def initialize(name, blueprint, options={})
8
- @name, @blueprint, @options = name, blueprint, options
8
+ @name, @blueprint.name, @options = name, blueprint, options
9
9
  @type = options[:type] || "file"
10
10
  end
11
11
 
12
12
  def src_path
13
- "#{Lono.blueprint_root}/app/files/#{@name}"
13
+ "#{@blueprint.root}/app/files/#{@name}"
14
14
  end
15
15
 
16
16
  def output_path
17
17
  if @type == "file"
18
- "#{Lono.root}/output/#{@blueprint}/files/#{@name}"
18
+ "#{Lono.root}/output/#{@blueprint.name}/files/#{@name}"
19
19
  else
20
- "#{Lono.root}/output/#{@blueprint}/lambda_layers/#{@name}/opt"
20
+ "#{Lono.root}/output/#{@blueprint.name}/lambda_layers/#{@name}/opt"
21
21
  end
22
22
  end
23
23
  end
@@ -2,7 +2,7 @@ module Lono::AppFile
2
2
  class Upload < Base
3
3
  def upload
4
4
  return unless Registry.items.size > 0
5
- puts "Uploading app/files..."
5
+ logger.info "Uploading app/files..."
6
6
 
7
7
  Registry.items.each do |item|
8
8
  Lono::S3::Uploader.new(item.zip_file_path).upload
@@ -1,5 +1,5 @@
1
- require "lono/bundle"
2
- Lono::Bundle.setup
1
+ require "lono/bundler"
2
+ Lono::Bundler.setup
3
3
  require "zeitwerk"
4
4
 
5
5
  module Lono
@@ -1,14 +1,51 @@
1
1
  module Lono::AwsServices
2
2
  module Helper
3
- include Stack
4
- include StackSet
3
+ def stack_exists?(stack_name)
4
+ return false if ENV['LONO_NOOP']
5
5
 
6
- def rollback_complete?(stack)
7
- stack&.stack_status == 'ROLLBACK_COMPLETE'
6
+ exist = nil
7
+ begin
8
+ # When the stack does not exist an exception is raised. Example:
9
+ # Aws::CloudFormation::Errors::ValidationError: Stack with id blah does not exist
10
+ cfn.describe_stacks(stack_name: stack_name)
11
+ exist = true
12
+ rescue Aws::CloudFormation::Errors::ValidationError => e
13
+ if e.message =~ /does not exist/
14
+ exist = false
15
+ elsif e.message.include?("'stackName' failed to satisfy constraint")
16
+ # Example of e.message when describe_stack with invalid stack name
17
+ # "1 validation error detected: Value 'instance_and_route53' at 'stackName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*|arn:[-a-zA-Z0-9:/._+]*"
18
+ logger.info "Invalid stack name: #{stack_name}"
19
+ logger.info "Full error message: #{e.message}"
20
+ exit 1
21
+ else
22
+ raise # re-raise exception because unsure what other errors can happen
23
+ end
24
+ end
25
+ exist
8
26
  end
9
27
 
10
- def testing_update?
11
- ENV['LONO_TEST'] && self.class.name == "LonoCfn::Update"
28
+ def find_stack(stack_name)
29
+ resp = cfn.describe_stacks(stack_name: stack_name)
30
+ resp.stacks.first
31
+ rescue Aws::CloudFormation::Errors::ValidationError => e
32
+ # example: Stack with id demo-web does not exist
33
+ if e.message =~ /Stack with/ && e.message =~ /does not exist/
34
+ nil
35
+ else
36
+ raise
37
+ end
38
+ end
39
+
40
+ def find_stack_resources(stack_name)
41
+ resp = cfn.describe_stack_resources(stack_name: stack_name)
42
+ resp.stack_resources
43
+ rescue Aws::CloudFormation::Errors::ValidationError => e
44
+ if e.message.include?("does not exist")
45
+ nil
46
+ else
47
+ raise
48
+ end
12
49
  end
13
50
  end
14
51
  end
@@ -11,27 +11,27 @@ module Lono
11
11
  include Helper
12
12
 
13
13
  def cfn
14
- Aws::CloudFormation::Client.new
14
+ Aws::CloudFormation::Client.new(aws_options)
15
15
  end
16
16
  memoize :cfn
17
17
 
18
18
  def ec2
19
- Aws::EC2::Client.new
19
+ Aws::EC2::Client.new(aws_options)
20
20
  end
21
21
  memoize :ec2
22
22
 
23
23
  def iam
24
- Aws::IAM::Client.new
24
+ Aws::IAM::Client.new(aws_options)
25
25
  end
26
26
  memoize :iam
27
27
 
28
28
  def s3
29
- Aws::S3::Client.new
29
+ Aws::S3::Client.new(aws_options)
30
30
  end
31
31
  memoize :s3
32
32
 
33
33
  def s3_resource
34
- Aws::S3::Resource.new
34
+ Aws::S3::Resource.new(aws_options)
35
35
  end
36
36
  memoize :s3_resource
37
37
 
@@ -41,8 +41,39 @@ module Lono
41
41
  memoize :s3_presigner
42
42
 
43
43
  def sts
44
- Aws::STS::Client.new # part of aws-sdk-core
44
+ Aws::STS::Client.new(aws_options) # part of aws-sdk-core
45
45
  end
46
46
  memoize :sts
47
+
48
+ # Override the AWS retry settings with Lono AWS clients.
49
+ #
50
+ # The aws-sdk-core has exponential backup with this formula:
51
+ #
52
+ # 2 ** c.retries * c.config.retry_base_delay
53
+ #
54
+ # Source:
55
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb
56
+ #
57
+ # So the max delay will be 2 ** 7 * 0.6 = 76.8s
58
+ #
59
+ # Only scoping this to deploy because dont want to affect people's application that use the aws sdk.
60
+ #
61
+ # There is also additional rate backoff logic elsewhere, since this is only scoped to deploys.
62
+ #
63
+ # Useful links:
64
+ # https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb
65
+ # https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html
66
+ #
67
+ def aws_options
68
+ options = {
69
+ retry_limit: 7, # default: 3
70
+ retry_base_delay: 0.6, # default: 0.3
71
+ }
72
+ options.merge!(
73
+ log_level: :debug,
74
+ logger: Logger.new($stdout),
75
+ ) if ENV['LONO_DEBUG_AWS_SDK']
76
+ options
77
+ end
47
78
  end
48
79
  end
@@ -1,15 +1,24 @@
1
1
  module Lono
2
- class Blueprint < Command
3
- long_desc Help.text("blueprint/new")
4
- New.cli_options.each do |args|
5
- option(*args)
2
+ class Blueprint
3
+ attr_reader :name
4
+ def initialize(options={})
5
+ @options = options
6
+ @name = options[:blueprint]
6
7
  end
7
- register(New, "new", "new NAME", "Generates new lono blueprint.")
8
8
 
9
- desc "list", "Lists project blueprints"
10
- long_desc Help.text("blueprint/list")
11
- def list
12
- Finder::Blueprint.list
9
+ def exist?
10
+ !root.nil?
11
+ end
12
+
13
+ def root
14
+ paths = Dir.glob("#{Lono.root}/{app,vendor}/blueprints/*")
15
+ paths.find do |path|
16
+ path.include?("blueprints/#{@name}")
17
+ end
18
+ end
19
+
20
+ def output_path
21
+ "#{Lono.root}/output/#{@name}/template.yml"
13
22
  end
14
23
  end
15
24
  end
@@ -0,0 +1,28 @@
1
+ module Lono
2
+ module Booter
3
+ def boot
4
+ run_hooks
5
+ Lono::Bundler.require # load plugins
6
+ end
7
+
8
+ # Special boot hooks run super early.
9
+ # Useful for setting env vars and other early things.
10
+ #
11
+ # config/boot.rb
12
+ # config/boot/dev.rb
13
+ #
14
+ def run_hooks
15
+ run_hook
16
+ run_hook(Lono.env)
17
+ Lono::App::Inits.run_all
18
+ end
19
+
20
+ def run_hook(env=nil)
21
+ name = env ? "boot/#{env}" : "boot"
22
+ path = "#{Lono.root}/config/#{name}.rb"
23
+ require path if File.exist?(path)
24
+ end
25
+
26
+ extend self
27
+ end
28
+ end
@@ -1,4 +1,4 @@
1
- class Lono::Template::Context
1
+ class Lono::Builder::Context
2
2
  module Helpers
3
3
  extend Memoist
4
4
 
@@ -1,13 +1,12 @@
1
- module Lono::Template::Context::Loader
1
+ module Lono::Builder::Context::Loader
2
2
  module LoadFiles
3
3
  # Load custom helper methods from project
4
- def load_files(root)
5
- paths = Dir.glob("#{root}/**/*.rb")
4
+ def load_files(dir)
5
+ paths = Dir.glob("#{dir}/**/*.rb")
6
6
  paths.sort_by! { |p| p.size } # so namespaces are loaded first
7
7
  paths.each do |path|
8
- # lib = gem extensions
9
- # app = project extensions
10
- filename = path.sub(%r{.*/lib/},'').sub(%r{.*/app/helpers/},'').sub('.rb','')
8
+ # helpers = blueprint or project extensions
9
+ filename = path.sub(%r{.*/helpers/},'').sub('.rb','')
11
10
  module_name = filename.camelize
12
11
 
13
12
  # Prepend a period so require works LONO_ROOT is set to a relative path without a period.
@@ -0,0 +1,35 @@
1
+ class Lono::Builder::Context
2
+ module Loader
3
+ include LoadFiles
4
+
5
+ # Variables in base.rb are overridden by their environment specific variables
6
+ # file. Example, file LONO_ENV=dev:
7
+ #
8
+ # config/vars/base.rb
9
+ # config/vars/dev.rb - will override any variables in base.rb
10
+ # config/vars/base.rb
11
+ # config/vars/dev.rb - will override any variables in base.rb
12
+ #
13
+ def load_variables
14
+ layers = Lono::Layering::Layer.new(@blueprint, "vars").paths
15
+ layers.each do |layer|
16
+ evaluate_variables_file(layer)
17
+ end
18
+ end
19
+
20
+ # Load the variables defined in config/vars/* to make available in lono scope.
21
+ #
22
+ # NOTE: Was only able to make instance variables avaialble with instance_eval, wasnt able to make local variables
23
+ # available.
24
+ def evaluate_variables_file(path)
25
+ return unless File.exist?(path)
26
+ instance_eval(IO.read(path), path)
27
+ end
28
+
29
+ # Load blueprint helpers
30
+ # blueprint helpers override extension helpers
31
+ def load_blueprint_helpers
32
+ load_files("#{@blueprint.root}/#{Lono.config.paths.helpers}")
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,7 @@
1
+ class Lono::Builder::Context
2
+ class Params < Lono::Builder::Context
3
+ # These helpers are only defined in the params context.
4
+ # Overriding output resource DSL method
5
+ alias_method :output, :stack_output
6
+ end
7
+ end
@@ -1,6 +1,6 @@
1
1
  require 'aws-sdk-ssm'
2
2
 
3
- class Lono::Template::Context
3
+ class Lono::Builder::Context
4
4
  class SsmFetcher
5
5
  extend Memoist
6
6
 
@@ -1,16 +1,12 @@
1
1
  # Encapsulates helper methods and instance variables to be rendered in the ERB templates.
2
- class Lono::Template
3
- class Context < Lono::AbstractBase
2
+ module Lono::Builder
3
+ class Context < Lono::CLI::Base
4
4
  extend Memoist
5
- include Lono::Template::Helper
5
+ include Lono::Builder::Template::Helpers
6
6
  include Loader
7
7
  include Helpers # ERB
8
- include Strategy::Dsl::Builder::Syntax # DSL
9
-
10
- def initialize(options={})
11
- super
12
- load_context
13
- end
8
+ include Template::Dsl::Evaluator::Syntax # DSL
9
+ include Lono::Utils::Context
14
10
 
15
11
  # Take a hash and makes them instance variables in the current scope.
16
12
  # Use this in custom helper methods to make variables accessible to ERB templates.
@@ -1,15 +1,16 @@
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
4
 
5
- def generate
6
- puts "Generating parameter files for blueprint #{@blueprint.color(:green)}:"
5
+ def build
6
+ logger.info "Building parameters"
7
7
 
8
8
  contents = []
9
- layering = Lono::Layering.new("params", @options, Lono.env)
10
- layering.locations.each do |path|
11
- contents << render_erb(path)
9
+
10
+ layers.each do |layer|
11
+ contents << render_erb(layer)
12
12
  end
13
+
13
14
  contents = contents.compact.join("\n") # result
14
15
 
15
16
  data = convert_to_cfn_format(contents)
@@ -17,30 +18,28 @@ class Lono::Param
17
18
  json = JSON.pretty_generate(camel_data)
18
19
  write_output(json)
19
20
  unless @options[:mute]
20
- short_output_path = output_path.sub("#{Lono.root}/","")
21
- puts " #{short_output_path}"
21
+ short_param_path = param_path.sub("#{Lono.root}/","")
22
+ logger.info " #{short_param_path}"
22
23
  end
23
24
 
24
25
  data
25
26
  end
26
27
 
28
+ def layers
29
+ Lono::Layering::Layer.new(@blueprint, "params").paths
30
+ end
31
+
27
32
  def parameters
28
- generate
33
+ build
29
34
  end
30
35
 
31
36
  def render_erb(path)
32
37
  return unless path
33
38
  if File.exist?(path)
34
- RenderMePretty.result(path, context: context)
39
+ RenderMePretty.result(path, context: params_context)
35
40
  end
36
41
  end
37
42
 
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
43
  def convert_to_cfn_format(contents, casing=:underscore)
45
44
  lines = parse_contents(contents)
46
45
 
@@ -96,14 +95,14 @@ class Lono::Param
96
95
  end
97
96
  end
98
97
 
99
- def output_path
100
- "#{Lono.root}/output/#{@blueprint}/params/#{@stack}.json"
98
+ def param_path
99
+ "#{Lono.root}/output/#{@blueprint.name}/params.json"
101
100
  end
102
101
 
103
102
  def write_output(json)
104
- dir = File.dirname(output_path)
103
+ dir = File.dirname(param_path)
105
104
  FileUtils.mkdir_p(dir)
106
- IO.write(output_path, json)
105
+ IO.write(param_path, json)
107
106
  end
108
107
  end
109
108
  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,5 +1,5 @@
1
- class Lono::Template
2
- class ConfigsetInjector < Lono::AbstractBase
1
+ class Lono::Builder::Template
2
+ class ConfigsetInjector < Lono::CLI::Base
3
3
  def initialize(options={})
4
4
  super
5
5
  end
@@ -16,7 +16,7 @@ class Lono::Template
16
16
  resource = @cfn["Resources"][logical_id]
17
17
 
18
18
  unless resource
19
- puts "WARN: Resources.#{logical_id} not found in the template. Are you sure you are specifying the correct resource id in your configsets configs?".color(:yellow)
19
+ logger.info "WARN: Resources.#{logical_id} not found in the template. Are you sure you are specifying the correct resource id in your configsets configs?".color(:yellow)
20
20
  next
21
21
  end
22
22
 
@@ -46,7 +46,7 @@ class Lono::Template
46
46
  end
47
47
 
48
48
  def template_path
49
- "#{Lono.config.output_path}/#{@blueprint}/templates/#{@template}.yml"
49
+ "#{Lono.root}/output/#{@blueprint.name}/templates/#{@template}.yml"
50
50
  end
51
51
  end
52
52
  end
@@ -1,4 +1,4 @@
1
- class Lono::Template::Strategy::Dsl::Builder
1
+ class Lono::Builder::Template::Dsl::Evaluator
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::Helpers
1
+ module Lono::Builder::Template::Dsl::Evaluator::Helpers
2
2
  module CoreHelper
3
3
  extend Memoist
4
4
 
@@ -1,4 +1,4 @@
1
- module Lono::Template::Strategy::Dsl::Builder::Helpers
1
+ module Lono::Builder::Template::Dsl::Evaluator::Helpers
2
2
  module Ec2Helper
3
3
  extend Memoist
4
4