lono 7.5.2 → 8.0.0.pre.rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. checksums.yaml +4 -4
  2. data/.cody/README.md +5 -15
  3. data/.cody/acceptance/bin/build.sh +52 -0
  4. data/.cody/acceptance/buildspec.yml +10 -0
  5. data/.cody/acceptance/project.rb +6 -0
  6. data/.cody/{role.rb → acceptance/role.rb} +0 -0
  7. data/.cody/shared/script/install/lono.sh +40 -0
  8. data/.cody/shared/script/install.sh +5 -0
  9. data/CHANGELOG.md +46 -5
  10. data/CONTRIBUTING.md +2 -2
  11. data/Gemfile +3 -1
  12. data/LICENSE.txt +201 -1
  13. data/README.md +6 -11
  14. data/lib/lono/api/client.rb +3 -2
  15. data/lib/lono/app/callable_option/concern.rb +12 -0
  16. data/lib/lono/app/callable_option.rb +56 -0
  17. data/lib/lono/app/inits.rb +13 -0
  18. data/lib/lono/app.rb +73 -0
  19. data/lib/lono/autoloader.rb +3 -2
  20. data/lib/lono/aws_services/helper.rb +41 -6
  21. data/lib/lono/aws_services.rb +37 -6
  22. data/lib/lono/blueprint.rb +3 -11
  23. data/lib/lono/booter.rb +28 -0
  24. data/lib/lono/builder/allow/base.rb +54 -0
  25. data/lib/lono/builder/allow/env.rb +17 -0
  26. data/lib/lono/builder/allow/region.rb +20 -0
  27. data/lib/lono/builder/allow.rb +8 -0
  28. data/lib/lono/builder/configset/combiner.rb +145 -0
  29. data/lib/lono/builder/configset/definition/base.rb +47 -0
  30. data/lib/lono/builder/configset/definition/context.rb +29 -0
  31. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/auth.rb +1 -1
  32. data/lib/lono/{configset/strategy/helpers/dsl/core.rb → builder/configset/definition/dsl/syntax/content.rb} +11 -3
  33. data/lib/lono/{configset/strategy/helpers/dsl/syntax.rb → builder/configset/definition/dsl/syntax/core.rb} +15 -9
  34. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/package.rb +1 -1
  35. data/lib/lono/builder/configset/definition/dsl/syntax.rb +5 -0
  36. data/lib/lono/{configset/strategy → builder/configset/definition}/dsl.rb +10 -14
  37. data/lib/lono/{configset/strategy → builder/configset/definition}/erb.rb +13 -16
  38. data/lib/lono/builder/configset/definition.rb +18 -0
  39. data/lib/lono/builder/configset/evaluator.rb +10 -0
  40. data/lib/lono/builder/configset/registration.rb +35 -0
  41. data/lib/lono/builder/context.rb +40 -0
  42. data/lib/lono/builder/dsl/evaluator.rb +45 -0
  43. data/lib/lono/builder/dsl/finalizer/base.rb +8 -0
  44. data/lib/lono/builder/dsl/finalizer/configsets.rb +20 -0
  45. data/lib/lono/builder/dsl/finalizer/files/base.rb +4 -0
  46. data/lib/lono/builder/dsl/finalizer/files/build.rb +58 -0
  47. data/lib/lono/builder/dsl/finalizer/files/replace.rb +31 -0
  48. data/lib/lono/builder/dsl/finalizer/files.rb +9 -0
  49. data/lib/lono/{template/strategy → builder}/dsl/finalizer/parameter_groups.rb +6 -5
  50. data/lib/lono/builder/dsl/finalizer.rb +15 -0
  51. data/lib/lono/{template/strategy/dsl/builder/helpers/ec2_helper.rb → builder/dsl/helpers/ec2.rb} +3 -3
  52. data/lib/lono/builder/dsl/helpers/files.rb +7 -0
  53. data/lib/lono/builder/dsl/helpers/partials.rb +140 -0
  54. data/lib/lono/{template/strategy/dsl/builder/helpers/s3_helper.rb → builder/dsl/helpers/s3.rb} +3 -3
  55. data/lib/lono/{template/context/ssm_fetcher.rb → builder/dsl/helpers/ssm/fetcher.rb} +5 -3
  56. data/lib/lono/{template/context/helpers.rb → builder/dsl/helpers/ssm.rb} +3 -3
  57. data/lib/lono/{template/strategy/dsl/builder/helpers/stack_helper.rb → builder/dsl/helpers/stack.rb} +14 -9
  58. data/lib/lono/{template/strategy/dsl/builder/helpers/tags_helper.rb → builder/dsl/helpers/tags.rb} +2 -2
  59. data/lib/lono/builder/dsl/helpers/template_file.rb +66 -0
  60. data/lib/lono/builder/dsl/helpers.rb +5 -0
  61. data/lib/lono/builder/dsl/syntax/core/base.rb +22 -0
  62. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/condition.rb +1 -1
  63. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/mapping.rb +1 -1
  64. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/output.rb +1 -1
  65. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/parameter.rb +1 -1
  66. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/resource/property_mover.rb +12 -2
  67. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/resource.rb +1 -1
  68. data/lib/lono/{template/strategy/dsl/builder/section → builder/dsl/syntax/core}/section.rb +1 -1
  69. data/lib/lono/builder/dsl/syntax/core/squeezer.rb +38 -0
  70. data/lib/lono/{template/strategy/dsl/builder/section/methods.rb → builder/dsl/syntax/core.rb} +8 -8
  71. data/lib/lono/{template/strategy/dsl/builder → builder/dsl/syntax}/fn.rb +2 -2
  72. data/lib/lono/{template/strategy/dsl/builder → builder/dsl}/syntax/parameter_group.rb +1 -1
  73. data/lib/lono/builder/dsl/syntax.rb +9 -0
  74. data/lib/lono/builder/dsl.rb +14 -0
  75. data/lib/lono/{param/generator.rb → builder/param.rb} +24 -22
  76. data/lib/lono/builder/template/aws_service.rb +15 -0
  77. data/lib/lono/builder/template/bashify.rb +43 -0
  78. data/lib/lono/{output/template.rb → builder/template/output.rb} +14 -7
  79. data/lib/lono/{template → builder/template}/post_processor.rb +4 -4
  80. data/lib/lono/builder/template/upload.rb +8 -0
  81. data/lib/lono/builder/template.rb +55 -0
  82. data/lib/lono/{template/strategy/dsl/builder → builder/util}/stringify.rb +1 -1
  83. data/lib/lono/bundler/cli/base.rb +10 -0
  84. data/lib/lono/bundler/cli/bundle.rb +44 -0
  85. data/lib/lono/bundler/cli/clean.rb +27 -0
  86. data/lib/lono/bundler/cli/help/bundle.md +3 -0
  87. data/lib/lono/bundler/cli/help.rb +11 -0
  88. data/lib/lono/bundler/cli.rb +7 -0
  89. data/lib/lono/bundler/component/concerns/local_concern.rb +10 -0
  90. data/lib/lono/bundler/component/concerns/notation_concern.rb +59 -0
  91. data/lib/lono/bundler/component/concerns/path_concern.rb +68 -0
  92. data/lib/lono/bundler/component/concerns/stack_concern.rb +60 -0
  93. data/lib/lono/bundler/component/fetcher/base.rb +27 -0
  94. data/lib/lono/bundler/component/fetcher/gcs.rb +69 -0
  95. data/lib/lono/bundler/component/fetcher/git.rb +69 -0
  96. data/lib/lono/bundler/component/fetcher/local.rb +15 -0
  97. data/lib/lono/bundler/component/fetcher/s3.rb +66 -0
  98. data/lib/lono/bundler/component/fetcher.rb +18 -0
  99. data/lib/lono/bundler/component/http/concern.rb +45 -0
  100. data/lib/lono/bundler/component/http/source.rb +19 -0
  101. data/lib/lono/bundler/component/org_repo.rb +65 -0
  102. data/lib/lono/bundler/component/props/extension.rb +18 -0
  103. data/lib/lono/bundler/component/props/typer.rb +41 -0
  104. data/lib/lono/bundler/component/props.rb +122 -0
  105. data/lib/lono/bundler/component/registry.rb +136 -0
  106. data/lib/lono/bundler/component.rb +52 -0
  107. data/lib/lono/bundler/config.rb +18 -0
  108. data/lib/lono/bundler/dsl/syntax.rb +46 -0
  109. data/lib/lono/bundler/dsl.rb +21 -0
  110. data/lib/lono/bundler/exporter/base.rb +6 -0
  111. data/lib/lono/bundler/exporter/copy.rb +22 -0
  112. data/lib/lono/bundler/exporter.rb +50 -0
  113. data/lib/lono/bundler/extract/tar.rb +33 -0
  114. data/lib/lono/bundler/extract/zip.rb +16 -0
  115. data/lib/lono/bundler/info.rb +39 -0
  116. data/lib/lono/bundler/list.rb +26 -0
  117. data/lib/lono/bundler/lockfile/version_comparer.rb +56 -0
  118. data/lib/lono/bundler/lockfile/yamler.rb +36 -0
  119. data/lib/lono/bundler/lockfile.rb +66 -0
  120. data/lib/lono/bundler/lonofile.rb +32 -0
  121. data/lib/lono/bundler/runner.rb +27 -0
  122. data/lib/lono/bundler/syncer.rb +70 -0
  123. data/lib/lono/bundler/util/git.rb +37 -0
  124. data/lib/lono/bundler/util/logging.rb +7 -0
  125. data/lib/lono/bundler/util/sure.rb +5 -0
  126. data/lib/lono/{bundle.rb → bundler.rb} +38 -4
  127. data/lib/lono/cfn/base.rb +9 -195
  128. data/lib/lono/cfn/cancel.rb +12 -29
  129. data/lib/lono/cfn/concerns/build.rb +10 -0
  130. data/lib/lono/cfn/concerns/template_output.rb +10 -0
  131. data/lib/lono/cfn/concerns.rb +43 -0
  132. data/lib/lono/cfn/delete.rb +8 -32
  133. data/lib/lono/cfn/deploy/base.rb +4 -0
  134. data/lib/lono/cfn/deploy/iam.rb +48 -0
  135. data/lib/lono/cfn/deploy/notification.rb +8 -0
  136. data/lib/lono/cfn/deploy/operable.rb +18 -0
  137. data/lib/lono/cfn/deploy/opts.rb +49 -0
  138. data/lib/lono/cfn/deploy/rollback.rb +46 -0
  139. data/lib/lono/cfn/deploy/tags.rb +18 -0
  140. data/lib/lono/cfn/deploy.rb +100 -5
  141. data/lib/lono/cfn/download.rb +4 -7
  142. data/lib/lono/cfn/output.rb +49 -0
  143. data/lib/lono/cfn/plan/base.rb +19 -0
  144. data/lib/lono/cfn/plan/changeset/base.rb +19 -0
  145. data/lib/lono/cfn/plan/changeset/notifications.rb +24 -0
  146. data/lib/lono/cfn/plan/changeset/outputs.rb +25 -0
  147. data/lib/lono/cfn/plan/changeset/resources.rb +48 -0
  148. data/lib/lono/cfn/plan/changeset/tags.rb +16 -0
  149. data/lib/lono/cfn/plan/changeset.rb +136 -0
  150. data/lib/lono/cfn/plan/concerns.rb +10 -0
  151. data/lib/lono/cfn/plan/delete.rb +16 -0
  152. data/lib/lono/cfn/plan/diff/base.rb +10 -0
  153. data/lib/lono/cfn/plan/diff/data.rb +62 -0
  154. data/lib/lono/cfn/plan/diff/file.rb +57 -0
  155. data/lib/lono/cfn/plan/new.rb +26 -0
  156. data/lib/lono/cfn/{preview → plan}/param.rb +26 -34
  157. data/lib/lono/cfn/plan/summary.rb +16 -0
  158. data/lib/lono/cfn/plan/template.rb +28 -0
  159. data/lib/lono/cfn/plan.rb +34 -0
  160. data/lib/lono/cfn/show.rb +30 -0
  161. data/lib/lono/cfn/status.rb +1 -1
  162. data/lib/lono/cli/abstract.rb +11 -0
  163. data/lib/lono/cli/base.rb +11 -0
  164. data/lib/lono/cli/build.rb +47 -0
  165. data/lib/lono/cli/bundle.rb +21 -0
  166. data/lib/lono/cli/cfn/opts.rb +59 -0
  167. data/lib/lono/cli/cfn.rb +19 -0
  168. data/lib/lono/cli/clean.rb +23 -0
  169. data/lib/lono/cli/code.rb +22 -0
  170. data/lib/lono/{completion.rb → cli/completion.rb} +2 -2
  171. data/lib/lono/{help → cli/help}/blueprint/new.md +4 -4
  172. data/lib/lono/{help/generate.md → cli/help/build.md} +6 -6
  173. data/lib/lono/{help → cli/help}/cfn/cancel.md +0 -0
  174. data/lib/lono/cli/help/cfn/download.md +3 -0
  175. data/lib/lono/{help → cli/help}/cfn/preview.md +9 -8
  176. data/lib/lono/{help → cli/help}/cfn/status.md +0 -1
  177. data/lib/lono/cli/help/cfn.md +4 -0
  178. data/lib/lono/{help → cli/help}/code/convert.md +0 -0
  179. data/lib/lono/{help → cli/help}/code/import.md +2 -2
  180. data/lib/lono/{help → cli/help}/completion.md +3 -3
  181. data/lib/lono/{help → cli/help}/completion_script.md +0 -0
  182. data/lib/lono/{help → cli/help}/configsets.md +0 -0
  183. data/lib/lono/cli/help/down.md +13 -0
  184. data/lib/lono/cli/help/new/helper/blueprint.md +17 -0
  185. data/lib/lono/cli/help/new/helper/project.md +16 -0
  186. data/lib/lono/cli/help/new/project.md +34 -0
  187. data/lib/lono/{help → cli/help}/param/generate.md +0 -0
  188. data/lib/lono/cli/help/param.md +6 -0
  189. data/lib/lono/{help → cli/help}/pro/blueprints.md +0 -0
  190. data/lib/lono/{help → cli/help}/pro/configsets.md +0 -0
  191. data/lib/lono/{help → cli/help}/script/build.md +0 -0
  192. data/lib/lono/{help → cli/help}/script/upload.md +0 -0
  193. data/lib/lono/cli/help/seed.md +24 -0
  194. data/lib/lono/cli/help/summary.md +33 -0
  195. data/lib/lono/{help → cli/help}/template/bashify.md +0 -0
  196. data/lib/lono/cli/help/template/generate.md +7 -0
  197. data/lib/lono/{help → cli/help}/template.md +0 -0
  198. data/lib/lono/cli/help/up.md +30 -0
  199. data/lib/lono/{help → cli/help}/user_data.md +3 -3
  200. data/lib/lono/cli/help.rb +56 -0
  201. data/lib/lono/cli/list.rb +25 -0
  202. data/lib/lono/cli/new/blueprint.rb +29 -0
  203. data/lib/lono/cli/new/concerns.rb +16 -0
  204. data/lib/lono/cli/new/configset.rb +37 -0
  205. data/lib/lono/{extension/new.rb → cli/new/extension.rb} +2 -10
  206. data/lib/lono/cli/new/helper/blueprint.rb +26 -0
  207. data/lib/lono/cli/new/helper/project.rb +24 -0
  208. data/lib/lono/cli/new/helper.rb +13 -0
  209. data/lib/lono/cli/new/project.rb +77 -0
  210. data/lib/lono/cli/new/sequence.rb +56 -0
  211. data/lib/lono/cli/new/shim.rb +59 -0
  212. data/lib/lono/cli/new/test/blueprint.rb +23 -0
  213. data/lib/lono/cli/new/test/sequence.rb +10 -0
  214. data/lib/lono/cli/new/test.rb +8 -0
  215. data/lib/lono/cli/new.rb +27 -0
  216. data/lib/lono/{opts.rb → cli/opts.rb} +9 -12
  217. data/lib/lono/{s3.rb → cli/s3.rb} +9 -7
  218. data/lib/lono/cli/script/base.rb +5 -0
  219. data/lib/lono/cli/script/build.rb +72 -0
  220. data/lib/lono/cli/script/upload.rb +49 -0
  221. data/lib/lono/{script.rb → cli/script.rb} +2 -2
  222. data/lib/lono/cli/seed.rb +9 -0
  223. data/lib/lono/cli/status.rb +18 -0
  224. data/lib/lono/cli/test.rb +35 -0
  225. data/lib/lono/cli.rb +78 -109
  226. data/lib/lono/command.rb +27 -1
  227. data/lib/lono/component.rb +29 -0
  228. data/lib/lono/concerns/aws_info.rb +14 -0
  229. data/lib/lono/concerns/names.rb +9 -0
  230. data/lib/lono/configset.rb +11 -10
  231. data/lib/lono/core.rb +25 -54
  232. data/lib/lono/ext/core/module.rb +31 -0
  233. data/lib/lono/ext/core/object.rb +32 -0
  234. data/lib/lono/ext/core/string.rb +9 -0
  235. data/lib/lono/ext.rb +4 -0
  236. data/lib/lono/files/base.rb +12 -0
  237. data/lib/lono/files/builder.rb +37 -0
  238. data/lib/lono/files/compressor.rb +53 -0
  239. data/lib/lono/files/concerns/post_processing.rb +35 -0
  240. data/lib/lono/files/concerns/registration.rb +13 -0
  241. data/lib/lono/files/registry.rb +6 -0
  242. data/lib/lono/files.rb +37 -0
  243. data/lib/lono/importer/base.rb +6 -6
  244. data/lib/lono/importer/download.rb +7 -7
  245. data/lib/lono/importer/dsl.rb +3 -3
  246. data/lib/lono/importer/service/coder.rb +67 -63
  247. data/lib/lono/importer.rb +1 -10
  248. data/lib/lono/inspector/base.rb +7 -7
  249. data/lib/lono/inspector/summary.rb +18 -19
  250. data/lib/lono/layering/layer.rb +112 -0
  251. data/lib/lono/layering.rb +13 -55
  252. data/lib/lono/logger/formatter.rb +13 -0
  253. data/lib/lono/logger.rb +32 -0
  254. data/lib/lono/names.rb +50 -0
  255. data/lib/lono/plugin/meta.rb +30 -0
  256. data/lib/lono/plugin/tester.rb +13 -0
  257. data/lib/lono/plugin.rb +10 -0
  258. data/lib/lono/s3/aws_setup.rb +4 -3
  259. data/lib/lono/s3/bucket.rb +42 -42
  260. data/lib/lono/s3/rollback.rb +8 -0
  261. data/lib/lono/s3/uploader.rb +33 -34
  262. data/lib/lono/script/base.rb +3 -3
  263. data/lib/lono/script/build.rb +11 -12
  264. data/lib/lono/script/upload.rb +7 -7
  265. data/lib/lono/seeder.rb +110 -0
  266. data/lib/lono/user_data.rb +10 -13
  267. data/lib/lono/utils/logging.rb +7 -0
  268. data/lib/lono/utils/{pretty_time.rb → pretty.rb} +6 -2
  269. data/lib/lono/utils/quit.rb +7 -0
  270. data/lib/lono/utils/rsync.rb +4 -2
  271. data/lib/lono/utils/sure.rb +4 -4
  272. data/lib/lono/version.rb +1 -1
  273. data/lib/lono/yamler/validator.rb +7 -22
  274. data/lib/lono.rb +15 -12
  275. data/lib/templates/blueprint/template.rb +2 -0
  276. data/lib/templates/configset/configset.rb +2 -0
  277. data/lib/templates/examples/blueprint/template.rb +9 -0
  278. data/lib/templates/{configset/lib → examples/configset}/configset.rb +0 -0
  279. data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
  280. data/lib/templates/{skeleton → project}/.gitignore +1 -2
  281. data/lib/templates/project/Gemfile.tt +11 -0
  282. data/lib/templates/project/README.md +9 -0
  283. data/lib/templates/project/config/app.rb +3 -0
  284. data/lib/templates/shim/lono +7 -0
  285. data/lono.gemspec +51 -44
  286. metadata +282 -296
  287. data/.circleci/README.md +0 -3
  288. data/.circleci/config.yml +0 -58
  289. data/.cody/acceptance.sh +0 -49
  290. data/.cody/buildspec.yml +0 -9
  291. data/.cody/demo.rb +0 -38
  292. data/.cody/project.rb +0 -6
  293. data/.gitmodules +0 -3
  294. data/lib/lono/abstract_base.rb +0 -25
  295. data/lib/lono/app_file/base.rb +0 -28
  296. data/lib/lono/app_file/build/lambda_layer/ruby_packager.rb +0 -153
  297. data/lib/lono/app_file/build/lambda_layer.rb +0 -20
  298. data/lib/lono/app_file/build.rb +0 -84
  299. data/lib/lono/app_file/registry/item.rb +0 -24
  300. data/lib/lono/app_file/registry.rb +0 -16
  301. data/lib/lono/app_file/upload.rb +0 -12
  302. data/lib/lono/aws_services/stack.rb +0 -41
  303. data/lib/lono/aws_services/stack_set.rb +0 -41
  304. data/lib/lono/blueprint/configset/loader.rb +0 -7
  305. data/lib/lono/blueprint/helper.rb +0 -24
  306. data/lib/lono/blueprint/meta.rb +0 -30
  307. data/lib/lono/blueprint/new.rb +0 -127
  308. data/lib/lono/blueprint/root.rb +0 -25
  309. data/lib/lono/cfn/create.rb +0 -41
  310. data/lib/lono/cfn/opts.rb +0 -88
  311. data/lib/lono/cfn/preview/changeset.rb +0 -168
  312. data/lib/lono/cfn/preview/codediff.rb +0 -41
  313. data/lib/lono/cfn/preview/diff_viewer.rb +0 -23
  314. data/lib/lono/cfn/rollback.rb +0 -26
  315. data/lib/lono/cfn/update.rb +0 -71
  316. data/lib/lono/cfn.rb +0 -75
  317. data/lib/lono/clean.rb +0 -14
  318. data/lib/lono/code.rb +0 -22
  319. data/lib/lono/configset/combiner.rb +0 -162
  320. data/lib/lono/configset/evaluate_file.rb +0 -8
  321. data/lib/lono/configset/generator.rb +0 -57
  322. data/lib/lono/configset/list.rb +0 -67
  323. data/lib/lono/configset/meta/dsl.rb +0 -12
  324. data/lib/lono/configset/meta.rb +0 -19
  325. data/lib/lono/configset/new.rb +0 -77
  326. data/lib/lono/configset/preparer.rb +0 -44
  327. data/lib/lono/configset/register/base.rb +0 -122
  328. data/lib/lono/configset/register/blueprint.rb +0 -16
  329. data/lib/lono/configset/register/dsl.rb +0 -14
  330. data/lib/lono/configset/register/project.rb +0 -13
  331. data/lib/lono/configset/resolver.rb +0 -47
  332. data/lib/lono/configset/s3_file/build.rb +0 -33
  333. data/lib/lono/configset/s3_file/item.rb +0 -38
  334. data/lib/lono/configset/s3_file/registry.rb +0 -12
  335. data/lib/lono/configset/s3_file/upload.rb +0 -12
  336. data/lib/lono/configset/strategy/base.rb +0 -83
  337. data/lib/lono/configset/strategy/helpers/dsl.rb +0 -8
  338. data/lib/lono/configset/strategy/helpers/erb.rb +0 -9
  339. data/lib/lono/conventions.rb +0 -23
  340. data/lib/lono/core/config.rb +0 -22
  341. data/lib/lono/default/settings.yml +0 -21
  342. data/lib/lono/extension/helper.rb +0 -13
  343. data/lib/lono/extension/list.rb +0 -40
  344. data/lib/lono/extension.rb +0 -9
  345. data/lib/lono/extensions/dsl.rb +0 -11
  346. data/lib/lono/extensions/loader.rb +0 -30
  347. data/lib/lono/extensions/preparer.rb +0 -26
  348. data/lib/lono/extensions/register.rb +0 -15
  349. data/lib/lono/extensions.rb +0 -18
  350. data/lib/lono/file_uploader.rb +0 -21
  351. data/lib/lono/finder/base.rb +0 -152
  352. data/lib/lono/finder/blueprint/configset.rb +0 -17
  353. data/lib/lono/finder/blueprint.rb +0 -11
  354. data/lib/lono/finder/configset.rb +0 -11
  355. data/lib/lono/finder/extension.rb +0 -11
  356. data/lib/lono/generate.rb +0 -111
  357. data/lib/lono/help/cfn/create.md +0 -26
  358. data/lib/lono/help/cfn/delete.md +0 -13
  359. data/lib/lono/help/cfn/deploy.md +0 -21
  360. data/lib/lono/help/cfn/download.md +0 -3
  361. data/lib/lono/help/cfn/update.md +0 -49
  362. data/lib/lono/help/cfn.md +0 -7
  363. data/lib/lono/help/new.md +0 -57
  364. data/lib/lono/help/param.md +0 -6
  365. data/lib/lono/help/seed.md +0 -23
  366. data/lib/lono/help/set_instances/delete.md +0 -21
  367. data/lib/lono/help/set_instances/deploy.md +0 -31
  368. data/lib/lono/help/set_instances/list.md +0 -14
  369. data/lib/lono/help/set_instances/status.md +0 -15
  370. data/lib/lono/help/set_instances/sync.md +0 -92
  371. data/lib/lono/help/sets/delete.md +0 -8
  372. data/lib/lono/help/sets/deploy.md +0 -76
  373. data/lib/lono/help/sets/status.md +0 -23
  374. data/lib/lono/help/summary.md +0 -33
  375. data/lib/lono/help/template/generate.md +0 -7
  376. data/lib/lono/help/upgrade.md +0 -1
  377. data/lib/lono/help/xgraph.md +0 -16
  378. data/lib/lono/help.rb +0 -15
  379. data/lib/lono/importer/erb.rb +0 -31
  380. data/lib/lono/inspector/graph.rb +0 -125
  381. data/lib/lono/jade/circular.rb +0 -26
  382. data/lib/lono/jade/materializer/final.rb +0 -10
  383. data/lib/lono/jade/materializer/gems_builder.rb +0 -81
  384. data/lib/lono/jade/materializer/source.rb +0 -54
  385. data/lib/lono/jade/materializer.rb +0 -15
  386. data/lib/lono/jade/registry.rb +0 -64
  387. data/lib/lono/jade.rb +0 -110
  388. data/lib/lono/jadespec.rb +0 -68
  389. data/lib/lono/new/helper.rb +0 -15
  390. data/lib/lono/new.rb +0 -95
  391. data/lib/lono/param.rb +0 -14
  392. data/lib/lono/pro/base.rb +0 -16
  393. data/lib/lono/pro/repo.rb +0 -28
  394. data/lib/lono/pro.rb +0 -15
  395. data/lib/lono/project_checker.rb +0 -35
  396. data/lib/lono/registration/base.rb +0 -37
  397. data/lib/lono/registration/check.rb +0 -15
  398. data/lib/lono/registration/temp.rb +0 -53
  399. data/lib/lono/registration/user.rb +0 -60
  400. data/lib/lono/seed/base.rb +0 -116
  401. data/lib/lono/seed/service_role.rb +0 -11
  402. data/lib/lono/seed.rb +0 -39
  403. data/lib/lono/sequence.rb +0 -35
  404. data/lib/lono/set_instances/base.rb +0 -30
  405. data/lib/lono/set_instances/changeable.rb +0 -53
  406. data/lib/lono/set_instances/create.rb +0 -7
  407. data/lib/lono/set_instances/delete.rb +0 -47
  408. data/lib/lono/set_instances/deploy.rb +0 -52
  409. data/lib/lono/set_instances/list.rb +0 -13
  410. data/lib/lono/set_instances/opts.rb +0 -37
  411. data/lib/lono/set_instances/status.rb +0 -12
  412. data/lib/lono/set_instances/sync.rb +0 -181
  413. data/lib/lono/set_instances/update.rb +0 -15
  414. data/lib/lono/set_instances.rb +0 -54
  415. data/lib/lono/sets/base.rb +0 -50
  416. data/lib/lono/sets/create.rb +0 -27
  417. data/lib/lono/sets/delete.rb +0 -43
  418. data/lib/lono/sets/deploy.rb +0 -11
  419. data/lib/lono/sets/list.rb +0 -35
  420. data/lib/lono/sets/opts.rb +0 -18
  421. data/lib/lono/sets/preview/codediff.rb +0 -35
  422. data/lib/lono/sets/preview/param.rb +0 -32
  423. data/lib/lono/sets/status/instance/base.rb +0 -120
  424. data/lib/lono/sets/status/instance/completed.rb +0 -35
  425. data/lib/lono/sets/status/instance/deleted.rb +0 -32
  426. data/lib/lono/sets/status/instance/show.rb +0 -7
  427. data/lib/lono/sets/status/instance.rb +0 -20
  428. data/lib/lono/sets/status/instances.rb +0 -136
  429. data/lib/lono/sets/status.rb +0 -128
  430. data/lib/lono/sets/summarize.rb +0 -22
  431. data/lib/lono/sets/time_spent.rb +0 -11
  432. data/lib/lono/sets/update.rb +0 -74
  433. data/lib/lono/sets/waiter.rb +0 -23
  434. data/lib/lono/sets.rb +0 -34
  435. data/lib/lono/setting.rb +0 -75
  436. data/lib/lono/template/aws_service.rb +0 -20
  437. data/lib/lono/template/bashify.rb +0 -39
  438. data/lib/lono/template/configset_injector.rb +0 -52
  439. data/lib/lono/template/context/loader/load_files.rb +0 -24
  440. data/lib/lono/template/context/loader.rb +0 -52
  441. data/lib/lono/template/context.rb +0 -29
  442. data/lib/lono/template/evaluate.rb +0 -40
  443. data/lib/lono/template/generator.rb +0 -23
  444. data/lib/lono/template/helper.rb +0 -152
  445. data/lib/lono/template/strategy/base.rb +0 -4
  446. data/lib/lono/template/strategy/common/helpers.rb +0 -44
  447. data/lib/lono/template/strategy/dsl/builder/helpers/core_helper.rb +0 -14
  448. data/lib/lono/template/strategy/dsl/builder/helpers/file_helper.rb +0 -48
  449. data/lib/lono/template/strategy/dsl/builder/helpers.rb +0 -16
  450. data/lib/lono/template/strategy/dsl/builder/section/base.rb +0 -30
  451. data/lib/lono/template/strategy/dsl/builder/squeezer.rb +0 -24
  452. data/lib/lono/template/strategy/dsl/builder/syntax/extend_with.rb +0 -9
  453. data/lib/lono/template/strategy/dsl/builder/syntax.rb +0 -11
  454. data/lib/lono/template/strategy/dsl/builder.rb +0 -59
  455. data/lib/lono/template/strategy/dsl/finalizer.rb +0 -12
  456. data/lib/lono/template/strategy/dsl.rb +0 -14
  457. data/lib/lono/template/strategy/erb.rb +0 -82
  458. data/lib/lono/template/strategy/source.rb +0 -8
  459. data/lib/lono/template/template.rb +0 -54
  460. data/lib/lono/template/upload.rb +0 -23
  461. data/lib/lono/template/util.rb +0 -8
  462. data/lib/lono/template.rb +0 -24
  463. data/lib/lono/upgrade.rb +0 -20
  464. data/lib/lono/utils/generators/tree.rb +0 -18
  465. data/lib/lono/utils/item/file_methods.rb +0 -29
  466. data/lib/lono/utils/item/zip.rb +0 -42
  467. data/lib/templates/blueprint/%blueprint_name%.gemspec.tt +0 -45
  468. data/lib/templates/blueprint/.gitignore +0 -11
  469. data/lib/templates/blueprint/CHANGELOG.md +0 -7
  470. data/lib/templates/blueprint/Gemfile +0 -4
  471. data/lib/templates/blueprint/README.md.tt +0 -33
  472. data/lib/templates/blueprint/Rakefile.tt +0 -9
  473. data/lib/templates/blueprint/seed/configs.rb +0 -28
  474. data/lib/templates/blueprint_types/dsl/app/templates/%blueprint_name%.rb +0 -36
  475. data/lib/templates/blueprint_types/dsl/app/user_data/bootstrap.sh +0 -2
  476. data/lib/templates/blueprint_types/erb/app/definitions/base.rb.tt +0 -1
  477. data/lib/templates/blueprint_types/erb/app/templates/%blueprint_name%.yml +0 -67
  478. data/lib/templates/configset/%configset_name%.gemspec.tt +0 -42
  479. data/lib/templates/configset/.gitignore +0 -10
  480. data/lib/templates/configset/CHANGELOG.md +0 -7
  481. data/lib/templates/configset/Gemfile +0 -4
  482. data/lib/templates/configset/README.md.tt +0 -3
  483. data/lib/templates/configset/Rakefile.tt +0 -9
  484. data/lib/templates/extension/%extension_name%.gemspec.tt +0 -46
  485. data/lib/templates/extension/.gitignore +0 -11
  486. data/lib/templates/extension/.rspec +0 -3
  487. data/lib/templates/extension/CHANGELOG.md +0 -7
  488. data/lib/templates/extension/Gemfile.tt +0 -4
  489. data/lib/templates/extension/Rakefile.tt +0 -9
  490. data/lib/templates/extension/spec/spec_helper.rb.tt +0 -29
  491. data/lib/templates/skeleton/Gemfile +0 -3
  492. data/lib/templates/skeleton/README.md +0 -58
  493. data/lib/templates/skeleton/configs/settings.yml +0 -13
  494. data/vendor/cfn-status/CHANGELOG.md +0 -14
  495. data/vendor/cfn-status/Gemfile +0 -4
  496. data/vendor/cfn-status/Gemfile.lock +0 -49
  497. data/vendor/cfn-status/LICENSE.txt +0 -21
  498. data/vendor/cfn-status/README.md +0 -58
  499. data/vendor/cfn-status/Rakefile +0 -6
  500. data/vendor/cfn-status/bin/console +0 -14
  501. data/vendor/cfn-status/bin/setup +0 -8
  502. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  503. data/vendor/cfn-status/lib/cfn-status.rb +0 -1
  504. data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
  505. data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
  506. data/vendor/cfn-status/lib/cfn_status.rb +0 -245
  507. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
  508. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
  509. data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
  510. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
  511. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
  512. data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
  513. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  514. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  515. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  516. data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
  517. data/vendor/cfn-status/spec/spec_helper.rb +0 -14
@@ -0,0 +1,35 @@
1
+ module Lono::Files::Concerns
2
+ module PostProcessing
3
+ extend Memoist
4
+
5
+ def build
6
+ Lono::Files::Builder.new(@options.merge(files: self)).run
7
+ end
8
+
9
+ def compress
10
+ Lono::Files::Compressor.new(@options.merge(files: self)).run
11
+ end
12
+
13
+ def upload
14
+ uploader.upload # Lono::S3::Uploader#upload
15
+ end
16
+
17
+ delegate :s3_path, :s3_key, to: :uploader
18
+ def uploader
19
+ Lono::S3::Uploader.new(zip_path)
20
+ end
21
+ memoize :uploader
22
+
23
+ def zip_name
24
+ "#{File.basename(full_path)}-#{Lono::Md5.sum(full_path)}.zip"
25
+ end
26
+
27
+ def zip_path
28
+ "#{File.dirname(output_path)}/#{zip_name}"
29
+ end
30
+
31
+ def output_path
32
+ "#{Lono.root}/output/#{@blueprint.name}/#{path}"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,13 @@
1
+ module Lono::Files::Concerns
2
+ module Registration
3
+ def call_line
4
+ @caller.find do |line|
5
+ line.include?(Lono.root.to_s)
6
+ end
7
+ end
8
+
9
+ def marker
10
+ "LONO://#{@path}"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ class Lono::Files
2
+ class Registry
3
+ class_attribute :files
4
+ self.files = []
5
+ end
6
+ end
data/lib/lono/files.rb ADDED
@@ -0,0 +1,37 @@
1
+ # Class name is Lono::Files because can represent a single file or a directory.
2
+ # Also, it avoids conflicting with the stdlib File class name.
3
+ # Files is like a "FileList". Using shorter Files name.
4
+ module Lono
5
+ class Files < Lono::CLI::Base
6
+ include Concerns::Registration
7
+ include Concerns::PostProcessing
8
+
9
+ attr_reader :path
10
+ def initialize(options={})
11
+ super
12
+ @path = options[:path]
13
+ @caller = options[:caller] # original caller stack at registration time
14
+ end
15
+
16
+ def full_path
17
+ "#{@blueprint.root}/#{@path}"
18
+ end
19
+
20
+ class << self
21
+ def register(options={})
22
+ path = options[:path]
23
+ file = files.find { |f| f.path == path }
24
+ unless file
25
+ file = Files.new(options.merge(caller: caller))
26
+ files << file
27
+ end
28
+ file.marker
29
+ end
30
+
31
+ delegate :empty?, :files, to: :files
32
+ def files
33
+ Registry.files
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,11 +1,11 @@
1
1
  class Lono::Importer
2
- class Base < Lono::AbstractBase
2
+ class Base < Lono::CLI::Base
3
3
  include Download
4
4
  include Thor::Actions
5
5
  include Thor::Base
6
6
 
7
7
  def initialize(options)
8
- reinitialize(options)
8
+ super
9
9
  @source = options[:source]
10
10
  @tmp_path = "/tmp/lono/import/template.yml"
11
11
  self.destination_root = Dir.pwd # Thor::Actions require destination_root to be set
@@ -14,7 +14,7 @@ class Lono::Importer
14
14
  private
15
15
  def summarize
16
16
  return unless @options[:summary]
17
- puts "Template Summary:"
17
+ logger.info "Template Summary:"
18
18
  Lono::Inspector::Summary.new(@options).run
19
19
  end
20
20
 
@@ -24,10 +24,10 @@ class Lono::Importer
24
24
  end
25
25
 
26
26
  def create_params_file(template_path, env)
27
- params_path = if @blueprint != @template
28
- "configs/#{@blueprint}/params/#{env}/#{@template}.txt"
27
+ params_path = if @blueprint.name != @template
28
+ "config/#{@blueprint.name}/params/#{env}/#{@template}.txt"
29
29
  else
30
- "configs/#{@blueprint}/params/#{env}.txt"
30
+ "config/#{@blueprint.name}/params/#{env}.txt"
31
31
  end
32
32
  params = Params.new(template_path, params_path)
33
33
  params.create
@@ -23,16 +23,16 @@ class Lono::Importer
23
23
  def read_source(source)
24
24
  open(source).read
25
25
  rescue OpenURI::HTTPError, SocketError, Errno::ENOENT
26
- puts "ERROR: Unable to read source template provided: #{source}".color(:red)
26
+ logger.info "ERROR: Unable to read source template provided: #{source}".color(:red)
27
27
  e = $!
28
- puts "#{e.class}: #{e.message}"
29
- puts "Please double check the source provided."
28
+ logger.info "#{e.class}: #{e.message}"
29
+ logger.info "Please double check the source provided."
30
30
  exit 1
31
31
  rescue Exception => e
32
- puts "ERROR: Unable to read source template provided: #{source}".color(:red)
33
- puts "General Exception Error:"
34
- puts "#{e.class}: #{e.message}"
35
- puts "Please double check the source provided."
32
+ logger.info "ERROR: Unable to read source template provided: #{source}".color(:red)
33
+ logger.info "General Exception Error:"
34
+ logger.info "#{e.class}: #{e.message}"
35
+ logger.info "Please double check the source provided."
36
36
  exit 1
37
37
  end
38
38
 
@@ -4,7 +4,7 @@ class Lono::Importer
4
4
  tmp_template_path = download_template(@source, @tmp_path)
5
5
  template = IO.read(tmp_template_path)
6
6
 
7
- Lono::Blueprint::New.start([@blueprint, "--import", "--type", "dsl"])
7
+ Lono::Blueprint::New.start([@blueprint.name, "--import", "--type", "dsl"])
8
8
 
9
9
  translate_to_dsl(template)
10
10
  create_params(tmp_template_path)
@@ -19,13 +19,13 @@ class Lono::Importer
19
19
  coder = Service::Coder.new(template, @options)
20
20
  result = coder.translate
21
21
 
22
- path = "#{Lono.config.templates_path}/#{@template}.rb"
22
+ path = "#{Lono.config.paths.templates}/#{@template}.rb"
23
23
  FileUtils.mkdir_p(File.dirname(path))
24
24
  create_file(path, result) # Thor::Action
25
25
  end
26
26
 
27
27
  def final_message
28
- puts <<~EOL
28
+ logger.info <<~EOL
29
29
  #{"="*64}
30
30
  Congrats 🎉 You have successfully imported a lono blueprint.
31
31
 
@@ -2,80 +2,84 @@ require 'base64'
2
2
  require 'json'
3
3
  require 'net/http'
4
4
 
5
- class Lono::Importer::Service::Coder
6
- def initialize(template, options={})
7
- @template, @options = template, options
8
- end
9
-
10
- def translate
11
- url = "#{Lono::API}/code"
12
- http = net_http_client(url)
13
- req = net_http_request(url,
14
- template: Base64.encode64(@template), # Base64 JSON for special chars that Rack::LintWrapper cannot process
15
- lono_version: Lono::VERSION,
16
- lono_command: lono_command,
17
- )
18
- res = http.request(req) # send request
5
+ module Lono::Importer::Service
6
+ class Coder
7
+ include Lono::Utils::Logging
19
8
 
20
- if res.code == "200"
21
- data = JSON.load(res.body)
22
- ruby_code = print(data) # returns data["ruby_code"] / passthrough
23
- ruby_code
24
- else
25
- puts "Error: Unable to convert template to Ruby code."
26
- puts "The error has been reported."
27
- puts "Non-successful http response status code: #{res.code}"
28
- # puts "headers: #{res.each_header.to_h.inspect}"
29
- exit 1
9
+ def initialize(template, options={})
10
+ @template, @options = template, options
30
11
  end
31
- end
32
12
 
33
- private
34
- def print(data)
35
- return if ENV['LONO_PRO_TEST']
13
+ def translate
14
+ url = "#{Lono::API}/code"
15
+ http = net_http_client(url)
16
+ req = net_http_request(url,
17
+ template: Base64.encode64(@template), # Base64 JSON for special chars that Rack::LintWrapper cannot process
18
+ lono_version: Lono::VERSION,
19
+ lono_command: lono_command,
20
+ )
21
+ res = http.request(req) # send request
36
22
 
37
- if data["error"]
38
- # Code was processed but there was this error with an HTTP 200 OK
39
- $stderr.puts "ERROR: #{data["error"]}".color(:red)
40
- if data["message"]
41
- $stderr.puts data["message"]
23
+ if res.code == "200"
24
+ data = JSON.load(res.body)
25
+ ruby_code = print(data) # returns data["ruby_code"] / passthrough
26
+ ruby_code
27
+ else
28
+ logger.info "Error: Unable to convert template to Ruby code."
29
+ logger.info "The error has been reported."
30
+ logger.info "Non-successful http response status code: #{res.code}"
31
+ # logger.info "headers: #{res.each_header.to_h.inspect}"
32
+ exit 1
42
33
  end
43
- return
44
34
  end
45
35
 
46
- validity = data["valid_ruby"] ? "valid" : "invalid"
47
- if validity == "valid"
48
- $stderr.puts "INFO: The generated Ruby code is has #{validity} syntax."
49
- else
50
- $stderr.puts "WARN: The generated Ruby code is has #{validity} syntax. Providing because it may be small errors.".color(:yellow) # note redirection disables color
51
- end
36
+ private
37
+ def print(data)
38
+ return if ENV['LONO_PRO_TEST']
52
39
 
53
- $stderr.puts <<~EOL
54
- Translated ruby code below:
40
+ if data["error"]
41
+ # Code was processed but there was this error with an HTTP 200 OK
42
+ logger.info "ERROR: #{data["error"]}".color(:red)
43
+ if data["message"]
44
+ logger.info data["message"]
45
+ end
46
+ return
47
+ end
55
48
 
56
- EOL
57
- ruby_code = data["ruby_code"]
58
- puts ruby_code
59
- ruby_code
60
- end
49
+ validity = data["valid_ruby"] ? "valid" : "invalid"
50
+ if validity == "valid"
51
+ logger.info "INFO: The generated Ruby code is has #{validity} syntax."
52
+ else
53
+ logger.info "WARN: The generated Ruby code is has #{validity} syntax. Providing because it may be small errors.".color(:yellow) # note redirection disables color
54
+ end
61
55
 
62
- def net_http_client(url)
63
- uri = URI(url)
64
- http = Net::HTTP.new(uri.host, uri.port)
65
- http.open_timeout = http.read_timeout = 30
66
- http.use_ssl = true if uri.scheme == 'https'
67
- http
68
- end
56
+ logger.info <<~EOL
57
+ Translated ruby code below:
69
58
 
70
- def net_http_request(url, data)
71
- req = Net::HTTP::Post.new(url) # url includes query string and uri.path does not, must used url
72
- text = JSON.dump(data)
73
- req.body = text
74
- req.content_length = text.bytesize
75
- req
76
- end
59
+ EOL
60
+ ruby_code = data["ruby_code"]
61
+ logger.info ruby_code
62
+ ruby_code
63
+ end
64
+
65
+ def net_http_client(url)
66
+ uri = URI(url)
67
+ http = Net::HTTP.new(uri.host, uri.port)
68
+ http.open_timeout = http.read_timeout = 30
69
+ http.use_ssl = true if uri.scheme == 'https'
70
+ http
71
+ end
72
+
73
+ def net_http_request(url, data)
74
+ req = Net::HTTP::Post.new(url) # url includes query string and uri.path does not, must used url
75
+ text = JSON.dump(data)
76
+ req.body = text
77
+ req.content_length = text.bytesize
78
+ req
79
+ end
77
80
 
78
- def lono_command
79
- "#{$0} #{ARGV.join(' ')}"
81
+ def lono_command
82
+ "#{$0} #{ARGV.join(' ')}"
83
+ end
80
84
  end
81
85
  end
data/lib/lono/importer.rb CHANGED
@@ -1,14 +1,5 @@
1
1
  module Lono
2
- class Importer
3
- def initialize(options)
4
- @options = options
5
-
6
- Lono::ProjectChecker.check
7
- @blueprint = Lono::Conventions.new(options).blueprint
8
- # Dont use set_blueprint_root because it doesnt exist yet. The import creates it
9
- Lono.blueprint_root = "#{Lono.root}/app/blueprints/#{@blueprint}"
10
- end
11
-
2
+ class Importer < Lono::CLI::Base
12
3
  def run
13
4
  # Examples:
14
5
  # Lono::Importer::Erb.new(source, options.clone).run
@@ -1,29 +1,29 @@
1
1
  module Lono::Inspector
2
- class Base < Lono::AbstractBase
2
+ class Base < Lono::CLI::Base
3
3
  extend Memoist
4
4
 
5
5
  def run
6
- generate
6
+ build
7
7
  templates = @template_name ? [@template_name] : all_templates
8
8
  templates.each do |template_name|
9
9
  perform(template_name)
10
10
  end
11
11
  end
12
12
 
13
- def generate
13
+ def build
14
14
  if @options[:source]
15
15
  Lono::Cfn::Download.new(@options).run
16
16
  else
17
- generate_templates
17
+ build_templates
18
18
  end
19
19
  end
20
20
 
21
- def generate_templates
22
- Lono::Template::Generator.new(@options.merge(quiet: false)).run
21
+ def build_templates
22
+ Lono::Builder::Template.new(@options.merge(quiet: false)).run
23
23
  end
24
24
 
25
25
  def all_templates
26
- templates_path = "#{Lono.config.output_path}/#{@blueprint}/templates"
26
+ templates_path = "#{Lono.root}/output/#{@blueprint.name}/templates"
27
27
  Dir.glob("#{templates_path}/**").map do |path|
28
28
  path.sub("#{templates_path}/", '').sub('.yml','') # template_name
29
29
  end
@@ -1,43 +1,42 @@
1
1
  module Lono::Inspector
2
2
  class Summary < Base
3
- delegate :required_parameters, :optional_parameters, :parameters, :parameter_groups, :data,
4
- to: :output_template
3
+ include Lono::Cfn::Concerns::TemplateOutput
5
4
 
6
5
  def perform(template)
7
6
  # little dirty but @template is used in data method so we dont have to pass it to the data method
8
7
  @template = template
9
-
10
- puts "=> CloudFormation Template Summary for template #{@template.color(:sienna)}:"
11
- return if @options[:noop]
12
-
8
+ logger.info "=> CloudFormation Template Summary for template #{@template.color(:sienna)}:"
13
9
  print_parameters_summary
14
- puts "# Resources:"
10
+ logger.info "# Resources:"
15
11
  print_resource_types
16
12
  end
17
13
 
18
14
  def print_parameters_summary
15
+ parameters = template_output.parameters
16
+ parameter_groups = template_output.parameter_groups
17
+
19
18
  if parameters.empty?
20
- puts "There are no parameters in this template."
19
+ logger.info "There are no parameters in this template."
21
20
  return
22
21
  end
23
22
 
24
23
  shown = []
25
- puts "# Parameters Total (#{parameters.size})"
24
+ logger.info "# Parameters Total (#{parameters.size})"
26
25
  parameter_groups.each do |label, parameters|
27
- puts "# Parameter Group (#{parameters.size}): #{label}".color(:sienna)
26
+ logger.info "# Parameter Group (#{parameters.size}): #{label}".color(:sienna)
28
27
  parameters.each do |name|
29
- puts parameter_line(name)
28
+ logger.info parameter_line(name)
30
29
  shown << name
31
30
  end
32
- end if output_template.parameter_groups
31
+ end if parameter_groups
33
32
 
34
33
  parameters.each do |name, data|
35
- puts parameter_line(name) unless shown.include?(name)
34
+ logger.info parameter_line(name) unless shown.include?(name)
36
35
  end
37
36
  end
38
37
 
39
38
  def parameter_line(name)
40
- data = parameters[name]
39
+ data = template_output.parameters[name]
41
40
  example = description_example(data["Description"])
42
41
  if data["Default"].nil?
43
42
  line = "#{name}=#{example} # (required)"
@@ -58,7 +57,7 @@ module Lono::Inspector
58
57
  end
59
58
 
60
59
  def resource_types
61
- resources = data["Resources"]
60
+ resources = template_output.data["Resources"]
62
61
  return unless resources
63
62
 
64
63
  types = Hash.new(0)
@@ -70,7 +69,7 @@ module Lono::Inspector
70
69
 
71
70
  def print_resource_types
72
71
  unless resource_types
73
- puts "No resources found."
72
+ logger.info "No resources found."
74
73
  return
75
74
  end
76
75
 
@@ -83,9 +82,9 @@ module Lono::Inspector
83
82
  printf "%3s %s\n", total, "Total"
84
83
  end
85
84
 
86
- def output_template
87
- Lono::Output::Template.new(@blueprint, @template)
85
+ def template_output
86
+ Lono::Builder::Template::Output.new(@blueprint)
88
87
  end
89
- memoize :output_template
88
+ memoize :template_output
90
89
  end
91
90
  end
@@ -0,0 +1,112 @@
1
+ require "aws_data"
2
+
3
+ # Layers example
4
+ #
5
+ # app/blueprints/demo/config/params/base.txt
6
+ # app/blueprints/demo/config/params/dev.txt
7
+ # app/blueprints/demo/config/params/prod.txt
8
+ # app/blueprints/demo/config/vars/base.rb
9
+ # app/blueprints/demo/config/vars/dev.rb
10
+ # app/blueprints/demo/config/vars/prod.rb
11
+ #
12
+ module Lono::Layering
13
+ class Layer
14
+ include Lono::Layering
15
+ include Lono::Utils::Logging
16
+ include Lono::Utils::Pretty
17
+ include Lono::Concerns::AwsInfo
18
+ extend Memoist
19
+
20
+ def initialize(blueprint, type)
21
+ @blueprint, @type = blueprint, type
22
+ end
23
+
24
+ def paths
25
+ blueprint = full_layers("app/blueprints/#{@blueprint.name}/config")
26
+ project = full_layers("config/blueprints/#{@blueprint.name}")
27
+ paths = blueprint + project
28
+ add_ext!(paths)
29
+ paths.map! { |p| "#{Lono.root}/#{p}" }
30
+ show_layers(paths)
31
+ paths
32
+ end
33
+
34
+ def full_layering
35
+ # layers defined in Lono::Layering module
36
+ all = layers.map { |layer| layer.sub(/\/$/,'') } # strip trailing slash
37
+ all.inject([]) do |sum, layer|
38
+ sum += layer_levels(layer) unless layer.nil?
39
+ sum
40
+ end
41
+ end
42
+
43
+ # interface method
44
+ def main_layers
45
+ [
46
+ '',
47
+ region,
48
+ account,
49
+ "#{account}/#{region}",
50
+ ]
51
+ end
52
+
53
+ def account
54
+ name = aws_data.account
55
+ # friendly name mapping
56
+ names = Lono.config.layering.names.stringify_keys
57
+ names[name] || name
58
+ end
59
+
60
+ # adds prefix and to each layer pair that has base and Lono.env. IE:
61
+ #
62
+ # "#{prefix}/base"
63
+ # "#{prefix}/#{Lono.env}"
64
+ #
65
+ def layer_levels(prefix=nil)
66
+ levels = ["base", Lono.env]
67
+ levels.map! do |i|
68
+ # base layer has prefix of '', reject with blank so it doesnt produce '//'
69
+ [prefix, i].reject(&:blank?).join('/')
70
+ end
71
+ levels.unshift(prefix) # unless prefix.blank? # IE: params/us-west-2.txt
72
+ levels
73
+ end
74
+
75
+ def add_ext!(paths)
76
+ exts = {
77
+ params: "txt",
78
+ vars: "rb",
79
+ }
80
+ ext = exts[@type.to_sym]
81
+
82
+ paths.map! do |path|
83
+ path = path.sub(/\/$/,'') if path.ends_with?('/')
84
+ "#{path}.#{ext}"
85
+ end
86
+ end
87
+
88
+ def full_layers(dir)
89
+ layers = full_layering.map do |layer|
90
+ "#{dir}/#{@type}/#{layer}"
91
+ end
92
+ if Lono.app
93
+ app_layers = full_layering.map do |layer|
94
+ "#{dir}/#{@type}/#{Lono.app}/#{layer}"
95
+ end
96
+ layers += app_layers
97
+ end
98
+ layers
99
+ end
100
+
101
+ @@shown_layers = {}
102
+ def show_layers(paths)
103
+ return if @@shown_layers[@type]
104
+ logger.debug "#{@type.capitalize} Layers:"
105
+ paths.each do |path|
106
+ logger.debug " #{pretty_path(path)}" if File.exist?(path) || ENV['LONO_SHOW_ALL_LAYERS']
107
+ end
108
+ logger.debug ""
109
+ @@shown_layers[@type] = true
110
+ end
111
+ end
112
+ end
data/lib/lono/layering.rb CHANGED
@@ -1,65 +1,23 @@
1
- module Lono
2
- class Layering < AbstractBase
3
- extend Memoist
4
-
5
- def initialize(config, options={}, env=Lono.env, root=Lono.root)
6
- super(options)
7
- # config can be params or variables
8
- @config, @options, @env, @root = config, options, env, root
9
- @requested = determine_requested
10
- end
11
-
12
- def locations
13
- paths = always + requested
14
- layers = paths.map do |path|
15
- requested_file(path)
16
- end.compact
17
- print_layers(layers)
18
- layers
19
- end
20
-
21
- def always
22
- base = "#{@root}/configs/#{@blueprint}/#{@config}/base"
23
- env = "#{@root}/configs/#{@blueprint}/#{@config}/#{@env}"
24
- [base, env]
25
- end
1
+ require "active_support/lazy_load_hooks"
26
2
 
27
- def requested
28
- standard_layers + direct_layers
29
- end
30
-
31
- def standard_layers
32
- config_level = "#{@root}/configs/#{@blueprint}/#{@config}/#{@requested}"
33
- env_level = "#{@root}/configs/#{@blueprint}/#{@config}/#{@env}/#{@requested}"
34
- template_level = "#{@root}/configs/#{@blueprint}/#{@config}/#{@env}/#{@template}/#{@requested}"
35
- [config_level, env_level, template_level]
36
- end
37
-
38
- def direct_layers
39
- if @requested.starts_with?('/')
40
- [@requested] # IE: absolute full path
41
- else
42
- ["#{@root}/#{@requested}"] # IE : relative path within lono project]
43
- end
3
+ module Lono
4
+ module Layering
5
+ def layers
6
+ pre_layers + main_layers + post_layers
44
7
  end
45
8
 
46
- def print_layers(layers)
47
- return unless ENV["LONO_DEBUG_LAYERING"]
48
- puts "layers #{@config}:"
49
- pp layers
9
+ def main_layers
10
+ super
50
11
  end
51
12
 
52
- def determine_requested
53
- # param is usually set from the convention. when set from convention stack name takes higher precedence
54
- config_key = @config.singularize.to_sym # param or variable
55
- @options[config_key] || @options[:config] || @stack
13
+ def pre_layers
14
+ []
56
15
  end
57
16
 
58
- def requested_file(path)
59
- # List of paths to consider from initial path provided. Combine params and variables possible paths for simplicity.
60
- paths = [path, "#{path}.txt", "#{path}.sh", "#{path}.rb"].compact
61
- paths.find { |p| File.file?(p) }
17
+ def post_layers
18
+ []
62
19
  end
63
- memoize :requested_file
64
20
  end
65
21
  end
22
+
23
+ ActiveSupport.run_load_hooks(:lono_layering, Lono::Layering)
@@ -0,0 +1,13 @@
1
+ class Lono::Logger
2
+ class Formatter < ::Logger::Formatter
3
+ def call(severity, time, progname, msg)
4
+ # careful changing the format. All::Summary uses a regexp on this format to remove the timestamp
5
+ "[#{format_datetime(time)} ##{Process.pid} #{progname}]: #{msg}"
6
+ end
7
+
8
+ private
9
+ def format_datetime(time)
10
+ time.strftime("%Y-%m-%dT%H:%M:%S")
11
+ end
12
+ end
13
+ end