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/cli.rb CHANGED
@@ -1,115 +1,116 @@
1
1
  module Lono
2
2
  class CLI < Command
3
+ include Help
3
4
  include Thor::Actions # for add_runtime_options
4
5
  opts = Opts.new(self)
6
+ cfn_opts = Lono::CLI::Cfn::Opts.new(self)
5
7
 
6
- long_desc Help.text(:new)
7
- New.cli_options.each do |args|
8
- option(*args)
8
+ desc "build BLUEPRINT", "Build template"
9
+ long_desc Help.text(:build)
10
+ option :quiet, type: :boolean, desc: "silence the output"
11
+ opts.clean
12
+ def build(blueprint)
13
+ Build.new(options.merge(blueprint: blueprint, build_only: true)).all
9
14
  end
10
- register(New, "new", "new NAME", "Generates new lono project.")
11
15
 
12
- desc "blueprints", "Lists blueprints"
13
- long_desc Help.text(:blueprints)
14
- def blueprints
15
- Finder::Blueprint.list
16
+ desc "bundle", "Bundle with Lonofile."
17
+ long_desc Help.text(:bundle)
18
+ def bundle(*args)
19
+ Bundle.new(options.merge(args: args)).run
16
20
  end
17
21
 
18
- desc "configsets [BLUEPRINT]", "Lists configsets"
19
- long_desc Help.text(:configsets)
20
- opts.source
21
- opts.stack
22
- def configsets(blueprint=nil)
23
- Configset::List.new(options.merge(blueprint: blueprint)).run
22
+ desc "clean", "Removes `output` folder."
23
+ opts.yes
24
+ def clean
25
+ Clean.new(options).run
24
26
  end
25
27
 
26
- desc "extensions [BLUEPRINT]", "Lists extensions"
27
- long_desc Help.text(:extensions)
28
- opts.source
29
- opts.stack
30
- def extensions(blueprint=nil)
31
- Extension::List.new(options.merge(blueprint: blueprint)).run
28
+ desc "down BLUEPRINT", "Delete stack"
29
+ long_desc Help.text(:down)
30
+ cfn_opts.delete
31
+ def down(blueprint)
32
+ Lono::Cfn::Delete.new(options.merge(blueprint: blueprint)).run
32
33
  end
33
34
 
34
- desc "generate BLUEPRINT", "Generate both CloudFormation templates and parameters files."
35
- long_desc Help.text(:generate)
36
- option :quiet, type: :boolean, desc: "silence the output"
37
- opts.clean
38
- opts.source
39
- opts.stack
40
- opts.template
41
- def generate(blueprint)
42
- o = options.merge(
43
- blueprint: blueprint,
44
- generate_only: true,
45
- )
46
- Lono::Generate.new(o).all
47
- end
48
-
49
- desc "user_data NAME", "Generates user_data script for debugging."
50
- long_desc Help.text(:user_data)
51
- opts.clean
52
- def user_data(blueprint, name)
53
- Script::Build.new(blueprint, options).run
54
- UserData.new(blueprint, options.merge(name: name)).generate
35
+ desc "list", "List blueprints"
36
+ long_desc Help.text(:list)
37
+ option :type, aliases: :t, desc: "Type: IE: blueprint, configset, extension. Defaults to all"
38
+ def list
39
+ List.new(options).run
55
40
  end
56
41
 
57
- desc "summary BLUEPRINT", "Prints summary of CloudFormation templates."
58
- long_desc Help.text("summary")
59
- opts.source
60
- opts.template
61
- def summary(blueprint)
62
- Lono::Inspector::Summary.new(options.merge(blueprint: blueprint)).run
42
+ desc "output BLUEPRINT", "output or preview of the deploy"
43
+ long_desc Help.text(:output)
44
+ option :format, desc: "Output formats: #{CliFormat.formats.join(', ')}"
45
+ def output(blueprint)
46
+ Lono::Cfn::Output.new(options.merge(blueprint: blueprint)).run
63
47
  end
64
48
 
65
- desc "xgraph STACK", "Graphs dependencies tree of CloudFormation template resources."
66
- long_desc Help.text("xgraph")
67
- option :display, type: :string, desc: "graph or text", default: "graph"
68
- option :noop, type: :boolean, desc: "noop mode"
69
- opts.source
70
- opts.template
71
- def xgraph(blueprint)
72
- Lono::Inspector::Graph.new(options.merge(blueprint: blueprint)).run
49
+ desc "plan BLUEPRINT", "Preview deploy"
50
+ long_desc Help.text(:plan)
51
+ option :out, aliases: :o, desc: "Write Change Set info to path"
52
+ def plan(blueprint)
53
+ Lono::Cfn::Plan.new(options.merge(blueprint: blueprint)).run
73
54
  end
74
55
 
75
- desc "seed BLUEPRINT", "Generates starter configs for a blueprint."
56
+ desc "seed BLUEPRINT", "Builds starter configs for a blueprint."
76
57
  long_desc Help.text("seed")
77
58
  option :param, desc: "override convention and specify the param file to use"
78
- opts.source
79
- opts.template
80
- add_runtime_options! # Thor::Action options like --force
59
+ opts.runtime_options
60
+ option :where, desc: "Where to create file, you specify the top-level folder. Possible values: app, config, vendor. Defaults to config"
81
61
  def seed(blueprint)
82
62
  Seed.new(options.merge(blueprint: blueprint)).create
83
63
  end
84
64
 
85
- desc "app_files BLUEPRINT", "Builds app files", hide: true
86
- long_desc Help.text("app_files")
87
- add_runtime_options! # Thor::Action options like --force
88
- def app_files(blueprint)
89
- Lono::AppFile::Build.new(blueprint, options).run
65
+ desc "show BLUEPRINT", "Deploy CloudFormation stack"
66
+ long_desc Help.text(:show)
67
+ def show(blueprint)
68
+ Lono::Cfn::Show.new(options.merge(blueprint: blueprint)).run
90
69
  end
91
70
 
92
- desc "clean", "Removes `output` folder."
93
- def clean
94
- Clean.new(options).run
71
+ desc "status BLUEPRINT", "Shows current status of blueprint."
72
+ long_desc Help.text(:status)
73
+ def status(blueprint)
74
+ Status.new(options.merge(blueprint: blueprint)).run
75
+ end
76
+
77
+ desc "summary BLUEPRINT", "Prints summary of CloudFormation template"
78
+ long_desc Help.text("summary")
79
+ def summary(blueprint)
80
+ Lono::Inspector::Summary.new(options.merge(blueprint: blueprint)).run
81
+ end
82
+
83
+ desc "test", "Run test."
84
+ long_desc Help.text(:test)
85
+ def test
86
+ Test.new(options).run
95
87
  end
96
88
 
97
- desc "upgrade", "Upgrade lono"
98
- long_desc Help.text("upgrade")
99
- def upgrade
100
- Upgrade.new(options).run
89
+ desc "up BLUEPRINT", "Deploy stack"
90
+ long_desc Help.text(:up)
91
+ cfn_opts.deploy
92
+ def up(blueprint)
93
+ Lono::Cfn::Deploy.new(options.merge(blueprint: blueprint)).run
94
+ end
95
+
96
+ desc "user_data BLUEPRINT NAME", "Generates user_data script for debugging."
97
+ long_desc Help.text(:user_data)
98
+ opts.clean
99
+ def user_data(blueprint, name)
100
+ Script::Build.new(options.merge(blueprint: blueprint)).run
101
+ UserData.new(options.merge(blueprint: blueprint, name: name)).generate
101
102
  end
102
103
 
103
- desc "completion *PARAMS", "Prints words for auto-completion."
104
+ desc "completion *PARAMS", "Prints words for auto-completion"
104
105
  long_desc Help.text("completion")
105
106
  def completion(*params)
106
107
  Completer.new(CLI, *params).run
107
108
  end
108
109
 
109
- desc "completion_script", "Generates a script that can be eval to setup auto-completion."
110
+ desc "completion_script", "Builds a script that can be eval to setup auto-completion"
110
111
  long_desc Help.text("completion_script")
111
112
  def completion_script
112
- Completer::Script.generate
113
+ Completer::Script.build
113
114
  end
114
115
 
115
116
  desc "version", "Prints version"
@@ -117,10 +118,6 @@ module Lono
117
118
  puts "Lono: #{VERSION}"
118
119
  end
119
120
 
120
- desc "blueprint SUBCOMMAND", "blueprint subcommands"
121
- long_desc Help.text(:blueprint)
122
- subcommand "blueprint", Blueprint
123
-
124
121
  desc "cfn SUBCOMMAND", "cfn subcommands"
125
122
  long_desc Help.text(:cfn)
126
123
  subcommand "cfn", Cfn
@@ -129,25 +126,9 @@ module Lono
129
126
  long_desc Help.text(:code)
130
127
  subcommand "code", Code
131
128
 
132
- desc "configset SUBCOMMAND", "configset subcommands"
133
- long_desc Help.text(:configset)
134
- subcommand "configset", Configset
135
-
136
- desc "extension SUBCOMMAND", "extension subcommands"
137
- long_desc Help.text(:extension)
138
- subcommand "extension", Extension
139
-
140
- desc "param SUBCOMMAND", "param subcommands"
141
- long_desc Help.text(:param)
142
- subcommand "param", Param
143
-
144
- desc "pro SUBCOMMAND", "pro subcommands"
145
- long_desc Help.text(:pro)
146
- subcommand "pro", Pro
147
-
148
- desc "registration SUBCOMMAND", "registration subcommands"
149
- long_desc Help.text(:registration)
150
- subcommand "registration", Registration
129
+ desc "new SUBCOMMAND", "new subcommands"
130
+ long_desc Help.text(:new)
131
+ subcommand "new", New
151
132
 
152
133
  desc "s3 SUBCOMMAND", "s3 subcommands"
153
134
  long_desc Help.text(:s3)
@@ -156,17 +137,5 @@ module Lono
156
137
  desc "script SUBCOMMAND", "script subcommands"
157
138
  long_desc Help.text(:script)
158
139
  subcommand "script", Script
159
-
160
- desc "sets SUBCOMMAND", "sets subcommands"
161
- long_desc Help.text(:sets)
162
- subcommand "sets", Sets
163
-
164
- desc "set_instances SUBCOMMAND", "set_instances subcommands"
165
- long_desc Help.text(:set_instances)
166
- subcommand "set_instances", SetInstances
167
-
168
- desc "template SUBCOMMAND", "template subcommands"
169
- long_desc Help.text(:template)
170
- subcommand "template", Template
171
140
  end
172
141
  end
data/lib/lono/command.rb CHANGED
@@ -31,7 +31,14 @@ end
31
31
  module Lono
32
32
  class Command < Thor
33
33
  class << self
34
+ include Lono::Utils::Logging
35
+
34
36
  def dispatch(m, args, options, config)
37
+ # Lono.argv provides consistency when lono is being called by rspec-lono test harness
38
+ Lono.argv = args.clone # important to clone since Thor removes the first argv
39
+
40
+ check_project!(args.first)
41
+
35
42
  # Allow calling for help via:
36
43
  # lono command help
37
44
  # lono command -h
@@ -41,7 +48,6 @@ module Lono
41
48
  # as well thor's normal way:
42
49
  #
43
50
  # lono help command
44
- help_flags = Thor::HELP_MAPPINGS + ["help"]
45
51
  if args.length > 1 && !(args & help_flags).empty?
46
52
  args -= help_flags
47
53
  args.insert(-2, "help")
@@ -58,6 +64,26 @@ module Lono
58
64
  super
59
65
  end
60
66
 
67
+ def check_project!(command_name)
68
+ return if subcommand?
69
+ return if command_name.nil?
70
+ return if help_flags.include?(Lono.argv.last) # IE: -h help
71
+ return if %w[-h -v --version completion completion_script help new test version].include?(command_name)
72
+ return if File.exist?("#{Lono.root}/config/app.rb")
73
+ return unless Lono.check_project
74
+ logger.error "ERROR: It doesnt look like this is a lono project. Are you sure you are in a lono project?".color(:red)
75
+ ENV['LONO_TEST'] ? raise : exit(1)
76
+ end
77
+
78
+ def help_flags
79
+ Thor::HELP_MAPPINGS + ["help"]
80
+ end
81
+ private :help_flags
82
+
83
+ def subcommand?
84
+ !!caller.detect { |l| l.include?('in subcommand') }
85
+ end
86
+
61
87
  # Override command_help to include the description at the top of the
62
88
  # long_description.
63
89
  def command_help(shell, command_name)
@@ -0,0 +1,29 @@
1
+ module Lono
2
+ class Component
3
+ attr_reader :name
4
+ def initialize(options={})
5
+ @options = options
6
+ @name = options[:name]
7
+ end
8
+
9
+ def type
10
+ self.class.name.to_s.split('::').last.underscore # IE: blueprint
11
+ end
12
+
13
+ def exist?
14
+ !root.nil?
15
+ end
16
+
17
+ def type_dir
18
+ type.pluralize # IE: blueprints
19
+ end
20
+
21
+ def root
22
+ paths = Dir.glob("#{Lono.root}/{app,vendor}/#{type_dir}/*")
23
+ paths.find do |path|
24
+ found = path.sub(%r{.*/(app|vendor)/}, '')
25
+ found == "#{type_dir}/#{@name}" # exact match
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,14 @@
1
+ # Dont name AwsData. Think prefer AwsInfo vs AwsConcern
2
+ module Lono::Concerns
3
+ module AwsInfo
4
+ extend Memoist
5
+ delegate :region, to: :aws_data
6
+ alias_method :aws_region, :region
7
+ alias_method :current_region, :region
8
+
9
+ def aws_data
10
+ AwsData.new
11
+ end
12
+ memoize :aws_data
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module Lono::Concerns
2
+ module Names
3
+ extend Memoist
4
+ def names
5
+ Lono::Names.new(@options)
6
+ end
7
+ memoize :names
8
+ end
9
+ end
@@ -1,16 +1,17 @@
1
1
  module Lono
2
- class Configset < Command
3
- long_desc Help.text("configset/new")
4
- New.cli_options.each do |args|
5
- option(*args)
2
+ class Configset < Component
3
+ attr_reader :resource
4
+ attr_accessor :metadata
5
+ def initialize(options={})
6
+ super
7
+ @resource = options[:resource]
6
8
  end
7
- register(New, "new", "new NAME", "Generates new lono configset.")
8
9
 
9
- desc "generate", "Generate configset from DSL"
10
- long_desc Help.text(:generate)
11
- option :resource, default: "PretendResource", desc: "Set the @resource instance variable availalbe in the configset"
12
- def generate(configset)
13
- Generator.new(options.merge(configset: configset, cli: true)).run
10
+ def path
11
+ return unless root
12
+ exts = %w[rb yml json] # rb highest precedence
13
+ paths = exts.map { |ext| "#{root}/configset.#{ext}" }
14
+ paths.find { |p| File.exist?(p) }
14
15
  end
15
16
  end
16
17
  end
data/lib/lono/core.rb CHANGED
@@ -4,79 +4,50 @@ module Lono
4
4
  module Core
5
5
  extend Memoist
6
6
 
7
- def config
8
- Config.new
9
- end
10
- memoize :config
7
+ cattr_accessor :argv
8
+ cattr_accessor :check_project, default: true
11
9
 
12
- @@root = nil
10
+ # allow testing frameworks to switch root
11
+ cattr_writer :root
13
12
  def root
14
13
  path = @@root || ENV['LONO_ROOT'] || Dir.pwd
15
14
  Pathname.new(path)
16
15
  end
17
- memoize :root
18
16
 
19
- @@blueprint_root = nil
20
- def blueprint_root; @@blueprint_root ; end
21
- def blueprint_root=(v) ; @@blueprint_root = v ; end
17
+ def app
18
+ ENV['LONO_APP']
19
+ end
20
+ memoize :app
22
21
 
23
22
  def env
24
- # 2-way binding
25
- env = env_from_profile(ENV['AWS_PROFILE']) || 'development'
26
- env = ENV['LONO_ENV'] if ENV['LONO_ENV'] # highest precedence
27
- env
23
+ ENV['LONO_ENV'] || 'dev'
28
24
  end
29
25
  memoize :env
30
26
 
31
- # Overrides AWS_PROFILE based on the Lono.env if set in configs/settings.yml
32
- # 2-way binding.
33
- def set_aws_profile!
34
- return unless settings # Only load if within lono project and there's a settings.yml
35
- data = settings[Lono.env] || {}
36
- if data["aws_profile"]
37
- # puts "Using AWS_PROFILE=#{data["aws_profile"]} from LONO_ENV=#{Lono.env} in configs/settings.yml"
38
- ENV['AWS_PROFILE'] = data["aws_profile"]
39
- end
27
+ def tmp_root
28
+ ENV['LONO_TMP_ROOT'] || "/tmp/lono"
40
29
  end
30
+ memoize :tmp_root
41
31
 
42
- # Do not use the Setting#data to load the profile because it can cause an
43
- # infinite loop then if we decide to use Lono.env from within settings class.
44
- def settings
45
- setting = Setting.new(false) # check_lono_project to account for `lono new`
46
- settings_path = setting.lookup_project_settings_path
47
- return unless settings_path # in case outside of lono project
48
-
49
- YAML.load_file(settings_path)
32
+ def log_root
33
+ "#{root}/log"
50
34
  end
51
- memoize :settings
52
35
 
53
- def lono_pro_removal_check!
54
- if lono_pro_installed?
55
- puts "ERROR: A lono-pro gem installation has been detected.".color(:red)
56
- puts <<~EOL
57
- The lono-pro gem is now a part of lono itself. The lono-pro gem has been deprecated.
58
- Please uninstall the lono-pro gem and remove it from your Gemfile to continue.
59
- EOL
60
- exit 1
61
- end
36
+ def configure(&block)
37
+ App.instance.configure(&block)
62
38
  end
63
39
 
64
- def lono_pro_installed?
65
- Lono::Pro::VERSION
66
- true
67
- rescue NameError
68
- false
40
+ # Generally, use the Lono.config instead of App.instance.config since it guarantees the load_project_config call
41
+ def config
42
+ App.instance.load_project_config
43
+ App.instance.config
69
44
  end
45
+ memoize :config
70
46
 
71
- private
72
- def env_from_profile(aws_profile)
73
- return unless settings
74
- env = settings.find do |_env, settings|
75
- settings ||= {}
76
- profiles = settings['aws_profile']
77
- profiles && profiles == aws_profile
78
- end
79
- env.first if env
47
+ # allow different logger when running up all or rspec-lono
48
+ cattr_writer :logger
49
+ def logger
50
+ @@logger ||= config.logger
80
51
  end
81
52
  end
82
53
  end
@@ -0,0 +1,31 @@
1
+ class Module
2
+ # Include all modules within the relative folder. IE: for dsl/syntax/mod/*
3
+ #
4
+ # include Common
5
+ # include Provider
6
+ # # etc
7
+ #
8
+ # Caller lines are different for OSes:
9
+ #
10
+ # windows: "C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/lono-1.1.1/lib/lono/builder.rb:34:in `build'"
11
+ # linux: "/home/ec2-user/.rvm/gems/ruby-3.0.3/gems/lono-1.1.1/lib/lono/compiler/dsl/syntax/mod.rb:4:in `<module:Mod>'"
12
+ #
13
+ def include_modules(dir)
14
+ caller_line = caller[0]
15
+ parts = caller_line.split(':')
16
+ calling_file = caller_line.match(/^[a-zA-Z]:/) ? parts[1] : parts[0]
17
+ parent_dir = File.dirname(calling_file)
18
+
19
+ full_dir = "#{parent_dir}/#{dir}"
20
+ paths = Dir.glob("#{full_dir}/**/*.rb")
21
+ if paths.empty?
22
+ raise "Empty include_modules full_dir: #{full_dir}"
23
+ end
24
+ paths.each do |path|
25
+ regexp = Regexp.new(".*/lib/")
26
+ mod = path.sub(regexp, '').sub('.rb','').camelize
27
+ c = mod.constantize
28
+ include c if c.class == Module
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ class Object
2
+ # Load custom helper methods from project
3
+ def load_helper_files(dir, type: :blueprint)
4
+ paths = Dir.glob("#{dir}/**/*.rb")
5
+ paths.sort_by! { |p| p.size } # so namespaces are loaded first
6
+ paths.each do |path|
7
+ next unless File.file?(path)
8
+
9
+ filename = if type == :project
10
+ path.sub(%r{.*/helpers/[a-zA-Z\-_]+/},'').sub('.rb','')
11
+ else # blueprint, configset
12
+ path.sub(%r{.*/helpers/},'').sub('.rb','')
13
+ end
14
+ module_name = filename.camelize
15
+
16
+ # Prepend a period so require works when LONO_ROOT is set to a relative path without a period.
17
+ # Example: LONO_ROOT=tmp/lono_project
18
+ first_char = path[0..0]
19
+ path = "./#{path}" unless %w[. /].include?(first_char)
20
+
21
+ # Examples:
22
+ # project:
23
+ # path: app/helpers/custom/custom_helper.rb
24
+ # module_name: CustomHelper
25
+ # blueprint:
26
+ # path: app/blueprints/demo/helpers/outputs.rb
27
+ # module_name: Outputs
28
+ require path
29
+ self.class.send :include, module_name.constantize
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ module Lono
2
+ refine String do
3
+ def camelcase
4
+ self.underscore.camelize
5
+ end
6
+ end
7
+ end
8
+
9
+ using Lono
data/lib/lono/ext.rb ADDED
@@ -0,0 +1,4 @@
1
+ require_relative "ext/bundler"
2
+ require_relative "ext/core/module"
3
+ require_relative "ext/core/object"
4
+ require_relative "ext/core/string"
@@ -0,0 +1,12 @@
1
+ class Lono::Files
2
+ class Base < Lono::CLI::Base
3
+ delegate :full_path, :output_path, :zip_name, :zip_path, to: :files
4
+ attr_reader :files
5
+ def initialize(options={})
6
+ super
7
+ # @files is reference to Lono::Files self instance
8
+ # IE: Lono::Files instance is the caller
9
+ @files = options[:files]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,37 @@
1
+ class Lono::Files
2
+ class Builder < Base
3
+ extend Memoist
4
+ include Lono::Builder::Context
5
+ include Lono::Builder::Dsl::Syntax
6
+ # Tricky must define files again to avoid conflict with files from loading the Dsl::Syntax
7
+ attr_reader :files
8
+
9
+ def run
10
+ load_context
11
+ if File.directory?(full_path)
12
+ directory(@files)
13
+ else
14
+ template(@files)
15
+ end
16
+ end
17
+
18
+ def template(files)
19
+ sequence.send(:set_template_paths, @blueprint.root)
20
+ src = files.path
21
+ dest = files.output_path
22
+ sequence.template(src, dest)
23
+ end
24
+
25
+ def directory(files)
26
+ src = files.full_path
27
+ sequence.send(:set_template_paths, src)
28
+ sequence.destination_root = @files.output_path
29
+ sequence.directory(".", verbose: false, force: true, context: binding) # Thor::Action
30
+ end
31
+
32
+ def sequence
33
+ Lono::CLI::New::Sequence.new(@options)
34
+ end
35
+ memoize :sequence
36
+ end
37
+ end
@@ -0,0 +1,53 @@
1
+ require 'fileutils'
2
+
3
+ class Lono::Files
4
+ class Compressor < Base
5
+ def run
6
+ if File.directory?(output_path)
7
+ zip_directory
8
+ else
9
+ zip_file
10
+ end
11
+ end
12
+
13
+ def zip_file
14
+ logger.debug "Zipping file to #{pretty_path(zip_path)}"
15
+ # create zipfile at same level of file
16
+ command = "cd #{File.dirname(output_path)} && zip -q #{zip_name} #{File.basename(output_path)}"
17
+ execute_zip(command)
18
+ end
19
+
20
+ def zip_directory
21
+ logger.debug "Zipping folder to #{zip_path}"
22
+ command = "cd #{output_path} && zip --symlinks -rq #{zip_name} ." # create zipfile witih directory
23
+ execute_zip(command)
24
+ FileUtils.mv("#{output_path}/#{zip_name}", "#{File.dirname(output_path)}/#{zip_name}") # move zip back to the parent directory
25
+ end
26
+
27
+ private
28
+ def execute_zip(command)
29
+ check_zip_installed!
30
+ logger.debug "=> #{command}".color(:green)
31
+ `#{command}`
32
+ return if $?.success?
33
+ logger.info "ERROR: Fail trying to zip files".color(:red)
34
+ logger.info "Command: #{command}".color(:red)
35
+ exit 1
36
+ end
37
+
38
+ @@zip_installed = false
39
+ def check_zip_installed!
40
+ @@zip_installed = system("type zip > /dev/null 2>&1")
41
+ if @@zip_installed
42
+ @@zip_installed = true
43
+ return
44
+ end
45
+ logger.error "ERROR: The command 'zip' is not installed.".color(:red)
46
+ logger.error <<~EOL
47
+ The file helper requires the zip command.
48
+ Please install the zip command on this system.
49
+ EOL
50
+ exit 1
51
+ end
52
+ end
53
+ end