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,32 @@
1
+ require 'logger'
2
+
3
+ module Lono
4
+ class Logger < ::Logger
5
+ def initialize(*args)
6
+ super
7
+ self.formatter = Formatter.new
8
+ self.level = ENV['LONO_LOG_LEVEL'] || :info # note: only respected when config.logger not set in config/app.rb
9
+ end
10
+
11
+ def format_message(severity, datetime, progname, msg)
12
+ line = if @logdev.dev == $stdout || @logdev.dev == $stderr || @logdev.dev.is_a?(StringIO)
13
+ msg # super simple format if stdout
14
+ else
15
+ super # use the configured formatter
16
+ end
17
+ line =~ /\n$/ ? line : "#{line}\n"
18
+ end
19
+
20
+ # Used to allow output to always go to stdout
21
+ def stdout(msg, newline: true)
22
+ if newline
23
+ puts msg
24
+ else
25
+ print msg
26
+ end
27
+ end
28
+
29
+ public :print
30
+ public :printf
31
+ end
32
+ end
data/lib/lono/names.rb ADDED
@@ -0,0 +1,50 @@
1
+ module Lono
2
+ class Names
3
+ extend Memoist
4
+
5
+ attr_reader :blueprint
6
+ def initialize(options={})
7
+ @options = options
8
+ @blueprint = options[:blueprint]
9
+ end
10
+
11
+ def stack
12
+ expansion(Lono.config.names.stack) # IE: :APP-:BLUEPRINT-:ENV
13
+ end
14
+ memoize :stack
15
+
16
+ def expansion(string)
17
+ return string unless string.is_a?(String) # in case of nil
18
+
19
+ string = string.dup
20
+ vars = string.scan(/:\w+/) # => [":APP", ":BLUEPRINT", :ENV"]
21
+ vars.each do |var|
22
+ string.gsub!(var, var_value(var))
23
+ end
24
+ strip(string)
25
+ end
26
+
27
+ def var_value(unexpanded)
28
+ name = unexpanded.sub(':','').downcase
29
+ if respond_to?(name)
30
+ value = send(name).to_s
31
+ else
32
+ unexpanded
33
+ end
34
+ end
35
+
36
+ def strip(string)
37
+ string.sub(/^-+/,'').sub(/-+$/,'') # remove leading and trailing -
38
+ .gsub(%r{-+},'-') # remove double dashes are more. IE: -- => -
39
+ .gsub('_','-') # underscores are not allowed in CloudFormation stack names
40
+ end
41
+
42
+ def app
43
+ Lono.app
44
+ end
45
+
46
+ def env
47
+ Lono.env
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,30 @@
1
+ class Lono::Plugin
2
+ module Meta
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ cattr_accessor :meta, default: []
7
+ end
8
+
9
+ class_methods do
10
+ def register(o={})
11
+ found = meta.find { |m| m[:name] == o[:name] && m[:type] == o[:type] }
12
+ meta << o unless found
13
+ end
14
+
15
+ def find(o={})
16
+ found = meta.find { |m| m[:name] == o[:name] && m[:type] == o[:type] }
17
+ Lono::Plugin.new(found) if found
18
+ end
19
+
20
+ def delegate_to_meta(*attrs)
21
+ attrs.each do |attr|
22
+ attr = attr.to_sym
23
+ define_method attr do
24
+ @options[attr]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,13 @@
1
+ class Lono::Plugin
2
+ class Tester
3
+ class << self
4
+ def register(name, options={})
5
+ Lono::Plugin.register(
6
+ name: name,
7
+ type: "test_framework",
8
+ root: options[:root],
9
+ )
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module Lono
2
+ class Plugin
3
+ include Meta
4
+ delegate_to_meta :name, :root
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ end
9
+ end
10
+ end
@@ -1,12 +1,13 @@
1
- class Lono::S3
1
+ module Lono::S3
2
2
  class AwsSetup
3
3
  include Lono::AwsServices
4
+ include Lono::Utils::Logging
4
5
 
5
6
  def check!
6
7
  s3.config.region
7
8
  rescue Aws::Errors::MissingRegionError => e
8
- puts "ERROR: #{e.class}: #{e.message}".color(:red)
9
- puts <<~EOL
9
+ logger.info "ERROR: #{e.class}: #{e.message}".color(:red)
10
+ logger.info <<~EOL
10
11
  Unable to detect the AWS_REGION to make AWS API calls. This is might be because the AWS access
11
12
  has not been set up yet. Please either your ~/.aws files.
12
13
  EOL
@@ -1,41 +1,23 @@
1
- class Lono::S3
1
+ module Lono::S3
2
2
  class Bucket
3
- STACK_NAME = ENV['LONO_STACK_NAME'] || "lono"
4
3
  include Lono::AwsServices
4
+ include Lono::Cfn::Concerns
5
+ include Lono::Utils::Logging
5
6
  extend Lono::AwsServices
6
7
  extend Memoist
7
8
 
8
- class << self
9
- @@name = nil
10
- def name
11
- return @@name if @@name # only memoize once bucket has been created
12
-
13
- check_aws_setup!
14
-
15
- stack = new.find_stack
16
- return unless stack
17
-
18
- resp = cfn.describe_stack_resources(stack_name: STACK_NAME)
19
- bucket = resp.stack_resources.find { |r| r.logical_resource_id == "Bucket" }
20
- @@name = bucket.physical_resource_id # actual bucket name
21
- end
22
-
23
- def check_aws_setup!
24
- AwsSetup.new.check!
25
- end
26
- end
27
-
9
+ STACK_NAME = ENV['LONO_STACK_NAME'] || "lono"
28
10
  def initialize(options={})
29
11
  @options = options
30
12
  end
31
13
 
32
14
  def deploy
33
15
  stack = find_stack
34
- if rollback_complete?(stack)
35
- puts "Existing '#{STACK_NAME}' stack in ROLLBACK_COMPLETE state. Deleting stack before continuing."
16
+ if rollback.complete?
17
+ logger.info "Existing '#{STACK_NAME}' stack in ROLLBACK_COMPLETE state. Deleting stack before continuing."
18
+ disable_termination_protection
36
19
  cfn.delete_stack(stack_name: STACK_NAME)
37
20
  status.wait
38
- status.reset
39
21
  stack = nil
40
22
  end
41
23
 
@@ -56,30 +38,29 @@ class Lono::S3
56
38
 
57
39
  def show
58
40
  if bucket_name
59
- puts "Lono bucket name: #{bucket_name}"
41
+ logger.info "Lono bucket name: #{bucket_name}"
60
42
  else
61
- puts "Lono bucket does not exist yet."
43
+ logger.info "Lono bucket does not exist yet."
62
44
  end
63
45
  end
64
46
 
65
47
  # Launches a cloudformation to create an s3 bucket
66
48
  def create
67
- puts "Creating #{STACK_NAME} stack with the s3 bucket"
49
+ logger.info "Creating #{STACK_NAME} stack for s3 bucket to store templates"
68
50
  cfn.create_stack(
69
51
  stack_name: STACK_NAME,
70
52
  template_body: template_body,
71
53
  enable_termination_protection: true,
72
54
  )
73
55
  success = status.wait
74
- status.reset
75
56
  unless success
76
- puts "ERROR: Unable to create lono stack with managed s3 bucket".color(:red)
57
+ logger.info "ERROR: Unable to create lono stack with managed s3 bucket".color(:red)
77
58
  exit 1
78
59
  end
79
60
  end
80
61
 
81
62
  def update
82
- puts "Updating #{STACK_NAME} stack with the s3 bucket"
63
+ logger.info "Updating #{STACK_NAME} stack with the s3 bucket"
83
64
  cfn.update_stack(stack_name: STACK_NAME, template_body: template_body)
84
65
  rescue Aws::CloudFormation::Errors::ValidationError => e
85
66
  raise unless e.message.include?("No updates are to be performed")
@@ -88,13 +69,13 @@ class Lono::S3
88
69
  def delete
89
70
  are_you_sure?
90
71
 
91
- puts "Deleting #{STACK_NAME} stack with the s3 bucket"
92
- disable_termination_protect
72
+ logger.info "Deleting #{STACK_NAME} stack with the s3 bucket"
73
+ disable_termination_protection
93
74
  empty_bucket!
94
75
  cfn.delete_stack(stack_name: STACK_NAME)
95
76
  end
96
77
 
97
- def disable_termination_protect
78
+ def disable_termination_protection
98
79
  cfn.update_termination_protection(
99
80
  stack_name: STACK_NAME,
100
81
  enable_termination_protection: false,
@@ -111,7 +92,6 @@ class Lono::S3
111
92
  def status
112
93
  CfnStatus.new(STACK_NAME)
113
94
  end
114
- memoize :status
115
95
 
116
96
  private
117
97
 
@@ -135,18 +115,18 @@ class Lono::S3
135
115
 
136
116
 
137
117
  def are_you_sure?
138
- return true if @options[:sure]
118
+ return true if @options[:yes]
139
119
 
140
120
  if bucket_name.nil?
141
- puts "The lono stack and s3 bucket does not exist."
121
+ logger.info "The lono stack and s3 bucket does not exist."
142
122
  exit
143
123
  end
144
124
 
145
- puts "Are you sure you want the lono bucket #{bucket_name.color(:green)} to be emptied and deleted? (y/N)"
146
- sure = $stdin.gets.strip
147
- yes = sure =~ /^Y/i
148
- unless yes
149
- puts "Phew that was close."
125
+ logger.info "Are you yes you want the lono bucket #{bucket_name.color(:green)} to be emptied and deleted? (y/N)"
126
+ yes = $stdin.gets.strip
127
+ confirmed = yes =~ /^Y/i
128
+ unless confirmed
129
+ logger.info "Phew that was close."
150
130
  exit
151
131
  end
152
132
  end
@@ -167,5 +147,25 @@ class Lono::S3
167
147
  Value: lono
168
148
  YAML
169
149
  end
150
+
151
+ def rollback
152
+ Rollback.new(STACK_NAME)
153
+ end
154
+
155
+ class << self
156
+ @@name = nil
157
+ def name
158
+ return @@name if @@name # only memoize once bucket has been created
159
+
160
+ AwsSetup.new.check!
161
+
162
+ stack = new.find_stack
163
+ return unless stack
164
+
165
+ stack_resources = find_stack_resources(STACK_NAME)
166
+ bucket = stack_resources.find { |r| r.logical_resource_id == "Bucket" }
167
+ @@name = bucket.physical_resource_id # actual bucket name
168
+ end
169
+ end
170
170
  end
171
171
  end
@@ -0,0 +1,8 @@
1
+ module Lono::S3
2
+ class Rollback < Lono::Cfn::Deploy::Rollback
3
+ # override initialize
4
+ def initialize(stack)
5
+ @stack = stack
6
+ end
7
+ end
8
+ end
@@ -1,57 +1,48 @@
1
- class Lono::S3
1
+ module Lono::S3
2
2
  class Uploader
3
- include Lono::AwsServices
4
3
  extend Memoist
4
+ include Lono::AwsServices
5
+ include Lono::Utils::Logging
6
+ include Lono::Utils::Pretty
5
7
 
6
- attr_reader :path
7
- def initialize(path, options={})
8
- @path, @options = path, options
8
+ attr_reader :local_path
9
+ def initialize(local_path, options={})
10
+ @local_path, @options = local_path, options
9
11
  @checksums = {}
10
12
  end
11
13
 
12
14
  # Inputs:
13
15
  #
14
- # path: can be full path or relative path
16
+ # local_path: can be full path or relative path
15
17
  #
16
18
  def upload
17
- return if @options[:noop] || ENV['LONO_TEST'] == '1'
18
-
19
- path = @path.gsub("#{Lono.root}/",'') # remove Lono.root
20
- key = "#{Lono.env}/#{path}"
21
-
22
- pretty_path = path.sub(/^\.\//, '')
23
- s3_full_path = "s3://#{s3_bucket}/#{key}"
19
+ logger.debug "May upload #{local_path}"
20
+ logger.debug "To #{s3_path}"
24
21
 
25
- local_checksum = Digest::MD5.hexdigest(IO.read(path))
26
- remote_checksum = remote_checksum(key)
22
+ local_checksum = Digest::MD5.hexdigest(IO.read(local_path))
27
23
  if local_checksum == remote_checksum
28
- puts("Not modified: #{pretty_path} to #{s3_full_path}".color(:yellow)) unless @options[:noop]
24
+ logger.debug "Not modified #{s3_path}"
29
25
  return # do not upload unless the checksum has changed
30
26
  else
31
27
  # Example output:
32
- # Uploaded: app/files/docker.yml to s3://boltops-dev/s3_folder/templates/development/docker.yml
33
- # Uploaded: app/files/ecs/private.yml to s3://boltops-dev/s3_folder/templates/development/ecs/private.yml
34
- message = "Uploading: #{pretty_path} to #{s3_full_path}".color(:green)
35
- message = "NOOP: #{message}" if @options[:noop]
36
- puts message
28
+ # Uploaded: files/ecs/private.yml to s3://bucket/output/demo/files/ecs/private.yml
29
+ logger.debug "Uploading #{pretty_path(local_path)} to #{s3_path}"
37
30
  end
38
31
 
39
32
  s3.put_object(
40
- body: IO.read(path),
33
+ body: IO.read(local_path),
41
34
  bucket: s3_bucket,
42
- key: key,
43
- ) unless @options[:noop]
35
+ key: s3_key,
36
+ )
44
37
  end
45
38
 
46
39
  # https://s3.amazonaws.com/mybucket/development/output/blueprint/templates/blueprint.yml
47
40
  def https_url
48
- key = "#{Lono.env}/#{@path}"
49
- "https://s3.amazonaws.com/#{s3_bucket}/#{key}"
41
+ "https://s3.amazonaws.com/#{s3_bucket}/#{s3_key}"
50
42
  end
51
43
 
52
44
  def presigned_url
53
- key = "#{Lono.env}/#{@path}"
54
- s3_presigner.presigned_url(:get_object, bucket: s3_bucket, key: key)
45
+ s3_presigner.presigned_url(:get_object, bucket: s3_bucket, key: s3_key)
55
46
  end
56
47
 
57
48
  # used for file_s3_key helper
@@ -64,7 +55,7 @@ class Lono::S3
64
55
  resp = s3.list_objects(bucket: s3_bucket, prefix: prefix)
65
56
  resp.contents.each do |object|
66
57
  # key does not include the bucket name
67
- # full path = s3://my-bucket/s3_folder/files/production/my-template.yml
58
+ # full path = s3://my-bucket/files/production/my-template.yml
68
59
  # key = s3_folder/files/production/my-template.yml
69
60
  # etag is the checksum as long as the file is not a multi-part file upload
70
61
  # it has extra double quotes wrapped around it.
@@ -76,17 +67,25 @@ class Lono::S3
76
67
  memoize :load_checksums!
77
68
 
78
69
  # key example: cloudformation/production/files/lifecycle-0719ab81.zip
79
- # s3 path: s3://boltops-dev/cloudformation/production/files/lifecycle-0719ab81.zip
80
- # s3_folder: s3://boltops-dev/cloudformation
81
- def remote_checksum(key)
82
- load_checksums!(key)
83
- @checksums[key]
70
+ # s3 path: s3://bucket/cloudformation/production/files/lifecycle-0719ab81.zip
71
+ # s3_folder: s3://bucket/cloudformation
72
+ def remote_checksum
73
+ load_checksums!(s3_key)
74
+ @checksums[s3_key]
84
75
  end
85
76
 
86
77
  def strip_surrounding_quotes(string)
87
78
  string.sub(/^"/,'').sub(/"$/,'')
88
79
  end
89
80
 
81
+ def s3_path
82
+ "s3://#{s3_bucket}/#{s3_key}"
83
+ end
84
+
85
+ def s3_key
86
+ "#{Lono.env}/#{pretty_path(local_path)}"
87
+ end
88
+
90
89
  def s3_bucket
91
90
  Lono::S3::Bucket.name
92
91
  end
@@ -1,5 +1,5 @@
1
- class Lono::Script
2
- class Base < Lono::AbstractBase
3
- SCRIPTS_INFO_PATH = "#{Lono.config.output_path}/data/scripts_info.txt"
1
+ module Lono::Script
2
+ class Base < Lono::CLI::Base
3
+ SCRIPTS_INFO_PATH = "#{Lono.root}/output/data/scripts_info.txt"
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
1
  require "digest"
2
2
  require "fileutils"
3
3
 
4
- class Lono::Script
4
+ module Lono::Script
5
5
  class Build < Base
6
6
  # Only avaialble after script has been built.
7
7
  def self.scripts_name
@@ -9,18 +9,17 @@ class Lono::Script
9
9
  end
10
10
 
11
11
  def run
12
- Lono::ProjectChecker.check
13
12
  reset
14
- if Dir["#{Lono.blueprint_root}/app/scripts/*"].empty?
13
+ if Dir["#{@blueprint.root}/scripts/*"].empty?
15
14
  return
16
15
  else
17
- puts "Detected app/scripts for blueprint #{@blueprint}"
16
+ logger.info "Detected scripts"
18
17
  end
19
18
 
20
- puts "Tarballing app/scripts folder to scripts.tgz"
19
+ logger.info "Tarballing scripts folder to scripts.tgz"
21
20
  tarball_path = create_tarball
22
21
  save_scripts_info(tarball_path)
23
- puts "Tarball created at #{tarball_path}"
22
+ logger.info "Tarball created at #{tarball_path}"
24
23
  end
25
24
 
26
25
  # Only avaialble after script has been built.
@@ -35,12 +34,12 @@ class Lono::Script
35
34
  def create_tarball
36
35
  # https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them
37
36
  # using system to avoid displaying command
38
- system "cd #{Lono.blueprint_root}/app && dot_clean ." if system("type dot_clean > /dev/null 2>&1")
37
+ system "cd #{@blueprint.root} && dot_clean ." if system("type dot_clean > /dev/null 2>&1")
39
38
 
40
39
  # https://serverfault.com/questions/110208/different-md5sums-for-same-tar-contents
41
40
  # Using tar czf directly results in a new m5sum each time because the gzip
42
41
  # timestamp is included. So using: tar -c ... | gzip -n
43
- sh "cd #{Lono.blueprint_root}/app && tar -c scripts | gzip -n > scripts.tgz" # temporary app/scripts.tgz file
42
+ sh "cd #{@blueprint.root} && tar -c scripts | gzip -n > scripts.tgz" # temporary scripts.tgz file
44
43
 
45
44
  rename_with_md5!
46
45
  end
@@ -48,9 +47,9 @@ class Lono::Script
48
47
  # Apppend a md5 to file after it's been created and moves it to
49
48
  # output/scripts/scripts-[MD5].tgz
50
49
  def rename_with_md5!
51
- md5_path = "output/#{@blueprint}/scripts/scripts-#{md5sum}.tgz"
50
+ md5_path = "output/#{@blueprint.name}/scripts/scripts-#{md5sum}.tgz"
52
51
  FileUtils.mkdir_p(File.dirname(md5_path))
53
- FileUtils.mv("#{Lono.blueprint_root}/app/scripts.tgz", md5_path)
52
+ FileUtils.mv("#{@blueprint.root}/scripts.tgz", md5_path)
54
53
  md5_path
55
54
  end
56
55
 
@@ -61,11 +60,11 @@ class Lono::Script
61
60
 
62
61
  # cache this because the file will get removed
63
62
  def md5sum
64
- @md5sum ||= Digest::MD5.file("#{Lono.blueprint_root}/app/scripts.tgz").to_s[0..7]
63
+ @md5sum ||= Digest::MD5.file("#{@blueprint.root}/scripts.tgz").to_s[0..7]
65
64
  end
66
65
 
67
66
  def sh(command)
68
- puts "=> #{command}"
67
+ logger.info "=> #{command}"
69
68
  system command
70
69
  end
71
70
 
@@ -1,25 +1,25 @@
1
1
  require "filesize"
2
2
 
3
- class Lono::Script
3
+ module Lono::Script
4
4
  class Upload < Base
5
5
  include Lono::AwsServices
6
- include Lono::Utils::PrettyTime
6
+ include Lono::Utils::Pretty
7
+ include Lono::Utils::Logging
7
8
 
8
9
  def run
9
- Lono::ProjectChecker.check
10
10
  return unless scripts_built?
11
11
 
12
12
  upload(tarball_path)
13
- puts "Uploaded #{File.basename(s3_dest)} to s3."
13
+ logger.info "Uploaded #{File.basename(s3_dest)} to s3."
14
14
  end
15
15
 
16
16
  def upload(tarball_path)
17
- puts "Uploading scripts.tgz (#{filesize}) to #{s3_dest}"
17
+ logger.info "Uploading scripts.tgz (#{filesize}) to #{s3_dest}"
18
18
  obj = s3_resource.bucket(bucket_name).object(key)
19
19
  start_time = Time.now
20
20
  obj.upload_file(tarball_path)
21
21
  time_took = pretty_time(Time.now-start_time).color(:green)
22
- puts "Time took to upload code to s3: #{time_took}"
22
+ logger.info "Time took to upload code to s3: #{time_took}"
23
23
  end
24
24
 
25
25
  def filesize
@@ -43,7 +43,7 @@ class Lono::Script
43
43
  "#{Lono.env}/scripts"
44
44
  end
45
45
 
46
- # Scripts are only built if the app/scripts folder is non empty
46
+ # Scripts are only built if the scripts folder is non empty
47
47
  def scripts_built?
48
48
  File.exist?(SCRIPTS_INFO_PATH) && !tarball_path.empty?
49
49
  end
@@ -0,0 +1,110 @@
1
+ require "fileutils"
2
+ require "memoist"
3
+ require "thor"
4
+ require "yaml"
5
+
6
+ module Lono
7
+ class Seeder < Lono::CLI::Base
8
+ extend Memoist
9
+ include Lono::AwsServices
10
+ include Lono::Cfn::Concerns::TemplateOutput
11
+
12
+ def run
13
+ build_template
14
+ build_params
15
+ build_vars
16
+ end
17
+
18
+ def build_template
19
+ Lono::Builder::Template.new(@options).run
20
+ end
21
+
22
+ def build_params
23
+ if template_output.parameters.empty?
24
+ logger.info "Template has no parameters."
25
+ return
26
+ end
27
+
28
+ # Generate by parameter group first
29
+ lines, shown = [], []
30
+ template_output.parameter_groups.each do |label, parameters|
31
+ lines << "# Parameter Group: #{label}"
32
+ parameters.each do |name|
33
+ parameter_line = parameter_line(name)
34
+ lines << parameter_line unless lines.include?(parameter_line)
35
+ shown << name
36
+ end
37
+ lines << ""
38
+ end if template_output.parameter_groups
39
+
40
+ # Then generate the rest
41
+ template_output.parameters.each do |name, data|
42
+ lines << parameter_line(name) unless shown.include?(name)
43
+ end
44
+
45
+ content = lines.join("\n")
46
+ dest_path = "#{dest_folder}/params/#{Lono.env}.txt" # only support environment level parameters for now
47
+ create_file(dest_path, content) # Thor::Action
48
+ end
49
+
50
+ def parameter_line(name)
51
+ data = template_output.parameters[name]
52
+ example = description_example(data["Description"])
53
+ if data["Default"].nil?
54
+ line = "#{name}=#{example} # (required)"
55
+ else
56
+ default = data["Default"]
57
+ line = "# #{name}=#{default}"
58
+ line = "#{line} # #{example}" if example
59
+ end
60
+ line
61
+ end
62
+
63
+ def description_example(description)
64
+ return unless description
65
+ md = description.match(/(Example|IE): (.*)/)
66
+ return unless md
67
+ md[2]
68
+ end
69
+
70
+ def build_vars
71
+ src = "#{@blueprint.root}/seed/vars"
72
+ dest = "#{dest_folder}/vars"
73
+ directory(src, dest) if File.exist?(src)
74
+ end
75
+
76
+ # config structure:
77
+ #
78
+ # config/blueprints/demo
79
+ #
80
+ # general structure:
81
+ #
82
+ # app/blueprints/demo/config
83
+ # vendor/blueprints/demo/config
84
+ #
85
+ def dest_folder
86
+ where = @options[:where] || Lono.config.seed.where
87
+ if where == "config"
88
+ "#{Lono.root}/config/blueprints/#{@blueprint.name}"
89
+ else # app or vendor
90
+ "#{Lono.root}/#{where}/blueprints/#{@blueprint.name}/config"
91
+ end
92
+ end
93
+
94
+ private
95
+ def create_file(dest_path, content) # Thor::Action)
96
+ sequence.create_file(dest_path, content)
97
+ end
98
+
99
+ def directory(src, dest)
100
+ sequence.send(:set_template_paths, src)
101
+ sequence.destination_root = Lono.root
102
+ sequence.directory(".", dest, context: binding) # Thor::Action
103
+ end
104
+
105
+ def sequence
106
+ sequence = Lono::CLI::New::Sequence.new(@options)
107
+ end
108
+ memoize :sequence
109
+ end
110
+ end