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
data/lib/lono/cfn.rb DELETED
@@ -1,75 +0,0 @@
1
- module Lono
2
- class Cfn < Command
3
- opts = Opts.new(self)
4
-
5
- class_option :verbose, type: :boolean
6
- class_option :noop, type: :boolean
7
-
8
- desc "create STACK", "Create a CloudFormation stack using the generated template.", hide: true
9
- opts.create
10
- long_desc Lono::Help.text("cfn/create")
11
- def create(stack)
12
- Create.new(options.merge(stack: stack)).run
13
- end
14
-
15
- desc "update STACK", "Update a CloudFormation stack using the generated template.", hide: true
16
- long_desc Lono::Help.text("cfn/update")
17
- opts.update
18
- def update(stack)
19
- Update.new(options.merge(stack: stack)).run
20
- end
21
-
22
- desc "deploy STACK", "Create or update a CloudFormation stack using the generated template."
23
- long_desc Lono::Help.text("cfn/deploy")
24
- opts.deploy
25
- def deploy(stack)
26
- Deploy.new(options.merge(stack: stack)).run
27
- end
28
-
29
- desc "delete STACK", "Delete CloudFormation stack."
30
- long_desc Lono::Help.text("cfn/delete")
31
- opts.delete
32
- def delete(stack)
33
- Delete.new(options.merge(stack: stack)).run
34
- end
35
-
36
- desc "cancel STACK", "Cancel a CloudFormation stack."
37
- long_desc Lono::Help.text("cfn/cancel")
38
- opts.cancel
39
- def cancel(stack)
40
- Cancel.new(options.merge(stack: stack)).run
41
- end
42
-
43
- desc "preview STACK", "Preview a CloudFormation stack update. This is similar to terraform's plan or puppet's dry-run mode."
44
- long_desc Lono::Help.text("cfn/preview")
45
- opts.preview
46
- def preview(stack)
47
- Preview::Param.new(options.merge(stack: stack)).run if options[:param_preview]
48
- Preview::Codediff.new(options.merge(stack: stack)).run if options[:codediff_preview]
49
- Preview::Changeset.new(options.merge(stack: stack)).run if options[:changeset_preview]
50
- end
51
-
52
- desc "download STACK", "Download CloudFormation template from existing stack."
53
- long_desc Lono::Help.text("cfn/download")
54
- opts.download
55
- def download(stack)
56
- Download.new(options.merge(stack: stack)).run
57
- end
58
-
59
- desc "current", "Current stack that you're working with."
60
- long_desc Lono::Help.text("cfn/current")
61
- option :rm, type: :boolean, desc: "Remove all current settings. Removes `.lono/current`"
62
- option :name, desc: "Current stack name."
63
- def current
64
- Current.new(options).run
65
- end
66
-
67
- desc "status", "Shows current status of stack."
68
- long_desc Lono::Help.text("cfn/status")
69
- def status(stack)
70
- status = Lono::Cfn::Status.new(stack, options)
71
- success = status.run
72
- exit 3 unless success
73
- end
74
- end
75
- end
data/lib/lono/clean.rb DELETED
@@ -1,14 +0,0 @@
1
- require "fileutils"
2
-
3
- class Lono::Clean
4
- attr_reader :options
5
- def initialize(options={})
6
- @options = options
7
- end
8
-
9
- def run
10
- puts "Clean: removing output/ and tmp/ folder"
11
- FileUtils.rm_rf("#{Lono.config.output_path}")
12
- FileUtils.rm_rf("#{Lono.root}/tmp")
13
- end
14
- end
data/lib/lono/code.rb DELETED
@@ -1,22 +0,0 @@
1
- module Lono
2
- class Code < Lono::Command
3
- desc "import SOURCE", "Imports CloudFormation template and converts it to Ruby code."
4
- long_desc Help.text("code/import")
5
- option :blueprint, default: nil, desc: "final blueprint name"
6
- option :casing, default: "as-is", desc: "Controls casing of logical ids. IE: as-is, camelcase or underscore"
7
- option :summary, default: true, type: :boolean, desc: "provide template summary after import"
8
- option :template, default: nil, desc: "final template name of downloaded template without extension"
9
- option :template_name_casing, default: "dasherize", desc: "camelcase or dasherize the template name"
10
- option :type, default: "dsl", desc: "import as a DSL or ERB template"
11
- def import(source)
12
- Importer.new(options.merge(source: source)).run
13
- end
14
-
15
- desc "convert SOURCE", "Converts snippet of JSON or YAML CloudFormation templates to Ruby code."
16
- long_desc Help.text("code/convert")
17
- option :casing, default: "as-is", desc: "Controls casing of logical ids. IE: as-is, camelcase or underscore"
18
- def convert(source)
19
- Importer::Converter.new(options.merge(source: source)).run
20
- end
21
- end
22
- end
@@ -1,162 +0,0 @@
1
- require "yaml"
2
-
3
- class Lono::Configset
4
- class Combiner
5
- def initialize(cfn, options={})
6
- @cfn, @options = cfn, options
7
-
8
- @sets = []
9
- @map = {} # stores resource logical id => metadata cfn-init
10
- end
11
-
12
- def generator_options(registry, options={})
13
- o = @options.merge(configset: registry.name, resource: registry.resource)
14
- o.merge(options)
15
- end
16
-
17
- def metadata_map
18
- return {} unless additional_configsets?
19
-
20
- existing_configsets.each do |data|
21
- add(data[:registry], data[:metdata_configset])
22
- end
23
-
24
- Register::Blueprint.configsets.each do |registry|
25
- generator = Lono::Configset::Generator.new(generator_options(registry, type: "blueprint"))
26
- cloudformation_init = generator.build
27
- add(registry, cloudformation_init)
28
- end
29
- Register::Project.configsets.each do |registry|
30
- generator = Lono::Configset::Generator.new(generator_options(registry, type: "project"))
31
- cloudformation_init = generator.build
32
- add(registry, cloudformation_init)
33
- end
34
-
35
- combine
36
- Register::Blueprint.clear! # in case of lono generate for all templates
37
- Register::Project.clear! # in case of lono generate for all templates
38
- @map
39
- end
40
-
41
- def add(registry, metadata)
42
- @sets << [registry, metadata.dup]
43
- end
44
-
45
- def additional_configsets?
46
- !Register::Blueprint.configsets.empty? || !Register::Project.configsets.empty?
47
- end
48
-
49
- # Normalized/convert cfn template to mimic the registry format
50
- def existing_configsets
51
- configsets = []
52
- @cfn["Resources"].each do |logical_id, attributes|
53
- init = attributes.dig("Metadata", "AWS::CloudFormation::Init")
54
-
55
- next unless init
56
-
57
- data = {
58
- registry: Lono::Jade::Registry.new(["#{logical_id}OriginalConfigset"], resource: logical_id),
59
- metdata_configset: {"Metadata" => attributes["Metadata"]} # # wrap metadata to create right structure
60
- }
61
- configsets << data
62
- end
63
- configsets
64
- end
65
-
66
- def combine
67
- # Remove duplicate configsets. Can happen if same configset is in blueprint and project.
68
- # Ugly because of the sets structure.
69
- @sets.uniq! do |array|
70
- registry, _ = array
71
- registry.name
72
- end
73
-
74
- metadata_map = {}
75
- configsets_map = {}
76
-
77
- @sets.each_with_index do |array, i|
78
- padded_i = "%03d" % i
79
- registry, metadata = array
80
-
81
- # metadata example (full structure):
82
- #
83
- # {"Metadata"=>
84
- # {"AWS::CloudFormation::Init"=>
85
- # {"configSets"=>{"default"=>["aaa1", "aaa2"]},
86
- # "aaa1"=>{"commands"=>{"test"=>{"command"=>"echo from-aaa1 > test1.txt"}}},
87
- # "aaa2"=>
88
- # {"commands"=>{"test"=>{"command"=>"echo from-aaa2 > test1.txt"}}}}}}
89
-
90
- name, resource = registry.name, registry.resource
91
- configsets = configsets_map[resource] ||= {}
92
-
93
- validate_structure!(name, metadata)
94
-
95
- new_metadata = metadata["Metadata"].dup
96
- init = new_metadata["AWS::CloudFormation::Init"] # important: adjust data by reference
97
-
98
- if init.key?("configSets")
99
- validate_simple!(registry, new_metadata["AWS::CloudFormation::Init"]["configSets"]) # validate original configset for only simple elements
100
-
101
- # 1. expand each config as its own config, flattening to top-level
102
- cs = init.delete("configSets") # Only support configSets with simple Array of Strings
103
- new_config_set = {}
104
- new_config_set[name] = cs["default"].map {|c| "#{padded_i}_#{c}" }
105
- init.transform_keys! { |c| "#{padded_i}_#{c}" }
106
-
107
- # Rebuild default configSet, append the new complex ConfigSet structure with each iteration
108
- configsets["default"] ||= []
109
- configsets["default"] << {"ConfigSet" => name}
110
- configsets.merge!(new_config_set) # add each config from #1 to the top-level
111
-
112
- init["configSets"] = configsets # replace new configset
113
- else # simple config
114
- init["configSets"] = configsets # adjust data by reference
115
- configsets["default"] ||= []
116
- configsets["default"] << {"ConfigSet" => name}
117
-
118
- # build new config
119
- config_key = "#{padded_i}_single_generated"
120
- configsets[name] = [config_key]
121
- new_config = {config_key => init["config"]}
122
- # replace old config with new one
123
- init.delete("config") # delete original simple config
124
- init.merge!(new_config)
125
- end
126
-
127
- metadata_map[resource] ||= {"Metadata" => {}}
128
- metadata_map[resource]["Metadata"].deep_merge!(new_metadata)
129
- @map[resource] = metadata_map[resource]
130
- end
131
- @map
132
- end
133
-
134
- def validate_structure!(name, metadata)
135
- return if metadata.is_a?(Hash) && metadata.dig("Metadata", "AWS::CloudFormation::Init")
136
-
137
- puts "ERROR: The #{name} configset does not appear to have a AWS::CloudFormation::Init key".color(:red)
138
- puts "Please double check the #{name} configset.yml structure"
139
- exit 1
140
- end
141
-
142
- def validate_simple!(registry, cs)
143
- has_complex_type = cs["default"].detect { |s| !s.is_a?(String) }
144
- if has_complex_type
145
- message =<<~EOL
146
- ERROR: The configset #{registry.name} has a configSets property with a complex type.
147
- configSets:
148
-
149
- #{cs}
150
-
151
- lono configsets only supports combining configSets with an Array of Strings.
152
- EOL
153
- if ENV['LONO_TEST']
154
- raise message
155
- else
156
- puts message.color(:red)
157
- exit 1
158
- end
159
- end
160
- end
161
- end
162
- end
@@ -1,8 +0,0 @@
1
- class Lono::Configset
2
- module EvaluateFile
3
- def evaluate_file(path)
4
- return unless path && File.exist?(path)
5
- instance_eval(IO.read(path), path)
6
- end
7
- end
8
- end
@@ -1,57 +0,0 @@
1
- class Lono::Configset
2
- class Generator
3
- def initialize(options)
4
- @options = options
5
- @configset = options[:configset]
6
- @type = options[:type] || "project"
7
- end
8
-
9
- def run
10
- check_configset_exist!
11
- structure = build
12
- puts YAML.dump(structure)
13
- end
14
-
15
- def check_configset_exist!
16
- exist = !!Lono::Finder::Configset.find(@configset)
17
- unless exist
18
- puts "configset #{@configset.color(:green)} not found."
19
- exit 1
20
- end
21
- end
22
-
23
- def build
24
- # Examples:
25
- # Erb.new(options).build
26
- # Dsl.new(options).build
27
- generator_class = "Lono::Configset::Strategy::#{strategy.camelize}"
28
- generator_class = Object.const_get(generator_class)
29
- full = generator_class.new(@options.merge(root: configset_root)).build
30
- if @options[:cli]
31
- full["Metadata"] # contains AWS::CloudFormation::Init and optional AWS::CloudFormation::Authentication
32
- else
33
- full # Combiner uses full metadata structure
34
- end
35
- end
36
-
37
- def strategy
38
- jadespec = Lono::Jadespec.new(configset_root, "unknown") # abusing Jadespec to get strategy
39
- jadespec.lono_strategy
40
- end
41
-
42
- def configset_root
43
- finder = finder_class.new
44
- found = finder.find(@configset, local_only: false)
45
- found.root if found
46
- end
47
-
48
- def finder_class
49
- case @type
50
- when "project"
51
- Lono::Finder::Configset
52
- when "blueprint"
53
- Lono::Finder::Blueprint::Configset
54
- end
55
- end
56
- end
57
- end
@@ -1,67 +0,0 @@
1
- require "text-table"
2
-
3
- class Lono::Configset
4
- class List
5
- def initialize(options={})
6
- @options = options
7
- @stack, @blueprint, @template, @param = Lono::Conventions.new(options).values
8
- end
9
-
10
- def run
11
- if @blueprint
12
- blueprint_configsets
13
- else
14
- project_configsets
15
- end
16
- end
17
-
18
- def project_configsets
19
- Lono::Finder::Configset.list(filter_materialized: true, message: "Project configsets:")
20
- end
21
-
22
- def blueprint_configsets
23
- Lono::Configset::Preparer.new(@options).run # register and materialize gems
24
-
25
- @final ||= []
26
-
27
- project = Lono::Configset::Register::Project.new(@options)
28
- project.register
29
- finder = Lono::Finder::Configset.new
30
- finder.list("Configsets available to project and can used with configs:") if @options[:verbose]
31
- puts "Configsets project is using for the #{@blueprint} blueprint:" if @options[:verbose]
32
- show(project.configsets, finder.find_all, "project")
33
-
34
- blueprint = Lono::Configset::Register::Blueprint.new(@options)
35
- blueprint.register
36
- finder = Lono::Finder::Blueprint::Configset.new
37
- finder.list("Configsets available to #{@blueprint} blueprint:") if @options[:verbose]
38
- puts "Configsets built into the blueprint:" if @options[:verbose]
39
- show(blueprint.configsets, finder.find_all, "blueprint")
40
-
41
- table = Text::Table.new
42
- table.head = ["Name", "Path", "Type", "From"]
43
- @final.each do |spec|
44
- pretty_root = spec.root.sub("#{Lono.root}/",'').sub(ENV["HOME"], "~")
45
- table.rows << [spec.name, pretty_root, spec.source_type, spec.from]
46
- end
47
-
48
- if table.rows.empty?
49
- puts "No configsets being used."
50
- else
51
- puts "Configsets used by #{@blueprint.color(:green)} blueprint:"
52
- puts table
53
- end
54
- end
55
-
56
- def show(configsets, all, from)
57
- configsets.each do |c|
58
- puts " #{c.name}" if @options[:verbose]
59
- spec = all.find { |jadespec| jadespec.name == c.name }
60
- next unless spec
61
- spec.from = from
62
- @final << spec
63
- end
64
- puts "" if @options[:verbose]
65
- end
66
- end
67
- end
@@ -1,12 +0,0 @@
1
- class Lono::Configset::Meta
2
- module Dsl
3
- def depends_on(*args)
4
- options = args.last.is_a?(Hash) ? args.pop : {}
5
- registry = Lono::Jade::Registry.new(args, options)
6
- registry.depends_on = args.first
7
- registry.parent = @jade
8
- already_has = @jade.depends_ons.detect { |d| d.name == registry.name && d.args == registry.args }
9
- @jade.depends_ons << registry unless already_has
10
- end
11
- end
12
- end
@@ -1,19 +0,0 @@
1
- class Lono::Configset
2
- class Meta
3
- extend Memoist
4
- include EvaluateFile
5
- include Dsl
6
-
7
- class_attribute :registries
8
- self.registries = []
9
-
10
- def initialize(jade)
11
- @jade = jade
12
- end
13
-
14
- def evaluate
15
- path = "#{@jade.root}/lib/meta.rb"
16
- evaluate_file(path) # DSL depends_on sets @jade.depends_on decorated options
17
- end
18
- end
19
- end
@@ -1,77 +0,0 @@
1
- class Lono::Configset
2
- class New < Lono::Sequence
3
- include Lono::Blueprint::Helper
4
- include Lono::Utils::Generators::Tree
5
-
6
- argument :configset_name
7
-
8
- def self.source_root
9
- templates = File.expand_path("../../templates", File.dirname(__FILE__))
10
- "#{templates}/configset"
11
- end
12
-
13
- def self.cli_options
14
- [
15
- [:demo, type: :boolean, default: true, desc: "Include demo template"],
16
- [:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files."],
17
- ]
18
- end
19
-
20
- cli_options.each do |args|
21
- class_option(*args)
22
- end
23
-
24
- # for specs
25
- def set_cwd
26
- @cwd = ENV['LONO_TEST'] ? File.dirname(Lono.root) : "#{Dir.pwd}/app/configsets"
27
- end
28
-
29
- def set_variables
30
- @demo = @options[:demo]
31
- @demo = false if ENV["LONO_ORG"] # overrides --demo CLI option
32
- end
33
-
34
- def create_project
35
- puts "=> Creating new configset called #{configset_name}."
36
- if @demo
37
- options = {}
38
- else
39
- create_file "#{@cwd}/#{configset_name}/lib/configset.rb"
40
- options = {exclude_pattern: %r{configset\.rb}}
41
- end
42
-
43
- directory ".", "#{@cwd}/#{configset_name}", options
44
- end
45
-
46
- def create_license
47
- return unless ENV['LONO_LICENSE_FILE']
48
- copy_file ENV['LONO_LICENSE_FILE'], "#{@cwd}/#{configset_name}/LICENSE.txt"
49
- end
50
-
51
- # After this commands are executed with the newly created project
52
- def set_destination_root
53
- destination_root = "#{@cwd}/#{configset_name}"
54
- self.destination_root = destination_root
55
- @old_dir = Dir.pwd # for reset_current_dir
56
- FileUtils.cd(self.destination_root)
57
- end
58
-
59
- def welcome_message
60
- puts <<~EOL
61
- #{"="*64}
62
- Congrats 🎉 You have successfully created a lono configset.
63
-
64
- Cd into your configset and check things out.
65
-
66
- cd #{configset_name}
67
-
68
- More info: https://lono.cloud/docs/core/configsets
69
-
70
- EOL
71
- end
72
-
73
- def tree
74
- tree_structure("configset")
75
- end
76
- end
77
- end
@@ -1,44 +0,0 @@
1
- class Lono::Configset
2
- class Preparer < Lono::AbstractBase
3
- def initialize(options={})
4
- super
5
- @blueprint = Register::Blueprint.new(options)
6
- @project = Register::Project.new(options)
7
- @meta = Meta.new(options)
8
- @resolver = Resolver.new
9
- end
10
-
11
- def run
12
- register
13
- resolve_dependencies # also calls jade.materialize
14
- register_dependencies
15
- materialize
16
- validate_all! # run after final materializer
17
- end
18
-
19
- # Stores configsets registry items
20
- def register
21
- @project.register # IE: evaluates configs/BLUEPRINT/configsets/base.rb
22
- @blueprint.register # IE: evaluates BLUEPRINT/config/configsets.rb
23
- end
24
-
25
- def resolve_dependencies
26
- jades = Lono::Jade::Registry.tracked_configsets # at this point only top-level
27
- @resolver.resolve(jades) # also calls jade.materialize
28
- end
29
-
30
- def register_dependencies
31
- @resolver.register
32
- end
33
-
34
- def materialize
35
- jades = Lono::Jade::Registry.downloaded_configsets
36
- Lono::Jade::Materializer::Final.new.build(jades)
37
- end
38
-
39
- def validate_all!
40
- @blueprint.validate!
41
- @project.validate!
42
- end
43
- end
44
- end
@@ -1,122 +0,0 @@
1
- # Subclasses must implement:
2
- #
3
- # evaluate
4
- #
5
- module Lono::Configset::Register
6
- class Base < Lono::AbstractBase
7
- class_attribute :configsets
8
- class_attribute :validations
9
- class_attribute :source
10
-
11
- include Dsl
12
- include Lono::Configset::EvaluateFile
13
-
14
- def register
15
- evaluate
16
- jadify
17
- end
18
-
19
- def jadify
20
- self.class.configsets.each do |registry|
21
- jade = Lono::Jade.new(registry.name, jade_type, registry)
22
- Lono::Jade::Registry.tracked_configsets << jade
23
- end
24
- end
25
-
26
- def jade_type
27
- finder_class.to_s.sub('Lono::Finder::','').underscore
28
- end
29
-
30
- # Used in Base#validate!
31
- def finder_class
32
- case self
33
- when Lono::Configset::Register::Blueprint
34
- Lono::Finder::Blueprint::Configset
35
- when Lono::Configset::Register::Project
36
- Lono::Finder::Configset
37
- end
38
- end
39
-
40
- # Store to be able to provide the validation errors altogether later.
41
- def store_for_validation(registry)
42
- # save caller line to use later for pointing to exactly line
43
- caller_line = caller.grep(/evaluate_file/).first
44
- registry.caller_line = caller_line
45
- # huge performance improvement by only validating the first configset registration of duplicate gems
46
- names = self.class.validations.map {|r| r.name }
47
- self.class.validations << registry unless names.include?(registry.name)
48
- end
49
-
50
- # Validate the configset before building templates. So user finds out about errors early.
51
- def validate!
52
- errors = []
53
- self.class.validations.each do |registry|
54
- config = finder_class.find(registry.name) # finder_class implemented in subclass
55
- errors << [:finder_missing, registry] unless config
56
-
57
- if registry.depends_on.nil? && registry.resource.nil?
58
- errors << [:resource_missing, registry]
59
- end
60
- end
61
-
62
- return if errors.empty? # all good
63
- show_errors_and_exit!(errors)
64
- end
65
-
66
- def show_errors_and_exit!(errors)
67
- errors.each do |error_type, registry|
68
- name, caller_line = registry.name, registry.caller_line
69
- case error_type
70
- when :finder_missing
71
- puts "ERROR: Configset with name #{name} not found. Please double check Gemfile and configs/#{@blueprint}/configsets files.".color(:red)
72
- pretty_trace(caller_line)
73
- when :resource_missing
74
- puts "ERROR: Configset with name #{name} does not specify resource. The resource key is required.".color(:red)
75
- pretty_trace(caller_line)
76
- raise
77
- end
78
- end
79
- exit 1
80
- end
81
-
82
- def pretty_trace(caller_line)
83
- md = caller_line.match(/(.*\.rb):(\d+):/)
84
- path, error_line_number = md[1], md[2].to_i
85
-
86
- context = 5 # lines of context
87
- top, bottom = [error_line_number-context-1, 0].max, error_line_number+context-1
88
-
89
- puts "Showing file: #{path}"
90
- lines = IO.read(path).split("\n")
91
- spacing = lines.size.to_s.size
92
- lines[top..bottom].each_with_index do |line_content, index|
93
- current_line_number = top+index+1
94
- if current_line_number == error_line_number
95
- printf("%#{spacing}d %s\n".color(:red), current_line_number, line_content)
96
- else
97
- printf("%#{spacing}d %s\n", current_line_number, line_content)
98
- end
99
- end
100
- end
101
-
102
- public
103
- class << self
104
- def clear!
105
- self.configsets = []
106
- self.validations = []
107
- end
108
-
109
- def prepend(registry)
110
- self.configsets.unshift(registry) unless has?(registry)
111
- end
112
-
113
- def append(registry)
114
- self.configsets << registry unless has?(registry)
115
- end
116
-
117
- def has?(registry)
118
- configsets.detect { |r| r.name == registry.name && r.args == registry.args }
119
- end
120
- end
121
- end
122
- end