static 1.0.0 → 1.0.1

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 (296) hide show
  1. checksums.yaml +7 -0
  2. data/bin/static +11 -0
  3. data/lib/static/cli.rb +2 -2
  4. data/lib/static/version.rb +1 -1
  5. data/vendor/cfoundry-0.5.2/LICENSE +746 -0
  6. data/vendor/cfoundry-0.5.2/Rakefile +38 -0
  7. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/applications.rb +53 -0
  8. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/domains.rb +16 -0
  9. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/frameworks.rb +22 -0
  10. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/helper.rb +131 -0
  11. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/login.rb +21 -0
  12. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/organization_users.rb +21 -0
  13. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/organizations.rb +70 -0
  14. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/routes.rb +26 -0
  15. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/runtimes.rb +22 -0
  16. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/service_bindings.rb +22 -0
  17. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/service_instances.rb +22 -0
  18. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/services.rb +25 -0
  19. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/spaces.rb +49 -0
  20. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/users.rb +84 -0
  21. data/vendor/cfoundry-0.5.2/lib/cc_api_stub.rb +17 -0
  22. data/vendor/cfoundry-0.5.2/lib/cfoundry/auth_token.rb +63 -0
  23. data/vendor/cfoundry-0.5.2/lib/cfoundry/baseclient.rb +201 -0
  24. data/vendor/cfoundry-0.5.2/lib/cfoundry/chatty_hash.rb +46 -0
  25. data/vendor/cfoundry-0.5.2/lib/cfoundry/client.rb +46 -0
  26. data/vendor/cfoundry-0.5.2/lib/cfoundry/concerns/login_helpers.rb +13 -0
  27. data/vendor/cfoundry-0.5.2/lib/cfoundry/errors.rb +160 -0
  28. data/vendor/cfoundry-0.5.2/lib/cfoundry/rest_client.rb +299 -0
  29. data/vendor/cfoundry-0.5.2/lib/cfoundry/test_support.rb +3 -0
  30. data/vendor/cfoundry-0.5.2/lib/cfoundry/trace_helpers.rb +40 -0
  31. data/vendor/cfoundry-0.5.2/lib/cfoundry/uaaclient.rb +112 -0
  32. data/vendor/cfoundry-0.5.2/lib/cfoundry/upload_helpers.rb +186 -0
  33. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/app.rb +363 -0
  34. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/base.rb +71 -0
  35. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/client.rb +193 -0
  36. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/framework.rb +21 -0
  37. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/model.rb +178 -0
  38. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/model_magic.rb +129 -0
  39. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/runtime.rb +24 -0
  40. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/service.rb +39 -0
  41. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/service_instance.rb +32 -0
  42. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/service_plan.rb +19 -0
  43. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/user.rb +22 -0
  44. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/app.rb +392 -0
  45. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/base.rb +83 -0
  46. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/client.rb +138 -0
  47. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/domain.rb +11 -0
  48. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/framework.rb +14 -0
  49. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/model.rb +148 -0
  50. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/model_magic.rb +449 -0
  51. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/organization.rb +16 -0
  52. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/route.rb +15 -0
  53. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/runtime.rb +12 -0
  54. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service.rb +19 -0
  55. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_auth_token.rb +9 -0
  56. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_binding.rb +10 -0
  57. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_instance.rb +14 -0
  58. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_plan.rb +12 -0
  59. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/space.rb +18 -0
  60. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/user.rb +64 -0
  61. data/vendor/cfoundry-0.5.2/lib/cfoundry/validator.rb +39 -0
  62. data/vendor/cfoundry-0.5.2/lib/cfoundry/version.rb +4 -0
  63. data/vendor/cfoundry-0.5.2/lib/cfoundry/zip.rb +56 -0
  64. data/vendor/cfoundry-0.5.2/lib/cfoundry.rb +2 -0
  65. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/applications_spec.rb +69 -0
  66. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/domains_spec.rb +19 -0
  67. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/frameworks_spec.rb +19 -0
  68. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/login_spec.rb +20 -0
  69. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/organization_users_spec.rb +19 -0
  70. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/organizations_spec.rb +97 -0
  71. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/routes_spec.rb +19 -0
  72. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/runtimes_spec.rb +19 -0
  73. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/service_bindings_spec.rb +13 -0
  74. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/service_instances_spec.rb +19 -0
  75. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/services_spec.rb +12 -0
  76. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/spaces_spec.rb +38 -0
  77. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/users_spec.rb +107 -0
  78. data/vendor/cfoundry-0.5.2/spec/cfoundry/auth_token_spec.rb +125 -0
  79. data/vendor/cfoundry-0.5.2/spec/cfoundry/baseclient_spec.rb +225 -0
  80. data/vendor/cfoundry-0.5.2/spec/cfoundry/client_spec.rb +15 -0
  81. data/vendor/cfoundry-0.5.2/spec/cfoundry/errors_spec.rb +80 -0
  82. data/vendor/cfoundry-0.5.2/spec/cfoundry/rest_client_spec.rb +281 -0
  83. data/vendor/cfoundry-0.5.2/spec/cfoundry/trace_helpers_spec.rb +72 -0
  84. data/vendor/cfoundry-0.5.2/spec/cfoundry/uaaclient_spec.rb +332 -0
  85. data/vendor/cfoundry-0.5.2/spec/cfoundry/upload_helpers_spec.rb +174 -0
  86. data/vendor/cfoundry-0.5.2/spec/cfoundry/v1/base_spec.rb +58 -0
  87. data/vendor/cfoundry-0.5.2/spec/cfoundry/v1/client_spec.rb +17 -0
  88. data/vendor/cfoundry-0.5.2/spec/cfoundry/v1/model_magic_spec.rb +43 -0
  89. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/app_spec.rb +144 -0
  90. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/base_spec.rb +299 -0
  91. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/client_spec.rb +73 -0
  92. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/model_magic_spec.rb +173 -0
  93. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/organization_spec.rb +15 -0
  94. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/space_spec.rb +15 -0
  95. data/vendor/cfoundry-0.5.2/spec/fakes/app_fake.rb +5 -0
  96. data/vendor/cfoundry-0.5.2/spec/fakes/domain_fake.rb +5 -0
  97. data/vendor/cfoundry-0.5.2/spec/fakes/framework_fake.rb +5 -0
  98. data/vendor/cfoundry-0.5.2/spec/fakes/organization_fake.rb +5 -0
  99. data/vendor/cfoundry-0.5.2/spec/fakes/route_fake.rb +5 -0
  100. data/vendor/cfoundry-0.5.2/spec/fakes/runtime_fake.rb +5 -0
  101. data/vendor/cfoundry-0.5.2/spec/fakes/service_fake.rb +5 -0
  102. data/vendor/cfoundry-0.5.2/spec/fakes/service_instance_fake.rb +5 -0
  103. data/vendor/cfoundry-0.5.2/spec/fakes/service_plan_fake.rb +5 -0
  104. data/vendor/cfoundry-0.5.2/spec/fakes/space_fake.rb +5 -0
  105. data/vendor/cfoundry-0.5.2/spec/fakes/user_fake.rb +5 -0
  106. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_dotfiles/xyz +1 -0
  107. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_nested_directories/foo/bar/baz/fizz +0 -0
  108. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_nested_directories/xyz +0 -0
  109. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/ignored_dir/file_in_ignored_dir.txt +1 -0
  110. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/ignored_file.txt +1 -0
  111. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/non_ignored_dir/file_in_non_ignored_dir.txt +1 -0
  112. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/non_ignored_dir/ignored_file.txt +1 -0
  113. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/non_ignored_file.txt +1 -0
  114. data/vendor/cfoundry-0.5.2/spec/fixtures/empty_file +0 -0
  115. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_application.json +24 -0
  116. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_application_summary.json +57 -0
  117. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_application.json +11 -0
  118. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_domain.json +10 -0
  119. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_organization.json +11 -0
  120. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_route.json +13 -0
  121. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_service_instance.json +11 -0
  122. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_space.json +11 -0
  123. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_user.json +11 -0
  124. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_empty_search.json +7 -0
  125. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_frameworks.json +20 -0
  126. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization.json +144 -0
  127. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_domains.json +34 -0
  128. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_search.json +37 -0
  129. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_summary.json +19 -0
  130. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_users.json +81 -0
  131. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_runtimes.json +20 -0
  132. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_binding.json +22 -0
  133. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_bindings.json +24 -0
  134. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_instance.json +81 -0
  135. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_instances.json +0 -0
  136. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_types.json +124 -0
  137. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_space.json +45 -0
  138. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_space_summary.json +86 -0
  139. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_stats.json +29 -0
  140. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_user.json +112 -0
  141. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_user_organizations.json +92 -0
  142. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_user_with_managers.json +85 -0
  143. data/vendor/cfoundry-0.5.2/spec/spec_helper.rb +20 -0
  144. data/vendor/cfoundry-0.5.2/spec/support/fake_helper.rb +236 -0
  145. data/vendor/cfoundry-0.5.2/spec/support/randoms.rb +3 -0
  146. data/vendor/cfoundry-0.5.2/spec/support/shared_examples/cc_api_stub_request_examples.rb +79 -0
  147. data/vendor/cfoundry-0.5.2/spec/support/shared_examples/client_login_examples.rb +46 -0
  148. data/vendor/cfoundry-0.5.2/spec/support/shared_examples/model_summary_examples.rb +34 -0
  149. data/vendor/cfoundry-0.5.2/spec/support/v1_fake_helper.rb +144 -0
  150. data/vendor/cfoundry-0.5.2/vendor/errors/README.md +4 -0
  151. data/vendor/cfoundry-0.5.2/vendor/errors/v1.yml +189 -0
  152. data/vendor/cfoundry-0.5.2/vendor/errors/v2.yml +360 -0
  153. data/vendor/tunnel-vmc-plugin-0.2.2/Rakefile +39 -0
  154. data/vendor/tunnel-vmc-plugin-0.2.2/config/clients.yml +17 -0
  155. data/vendor/tunnel-vmc-plugin-0.2.2/helper-app/Gemfile +10 -0
  156. data/vendor/tunnel-vmc-plugin-0.2.2/helper-app/server.rb +43 -0
  157. data/vendor/tunnel-vmc-plugin-0.2.2/lib/tunnel-vmc-plugin/plugin.rb +178 -0
  158. data/vendor/tunnel-vmc-plugin-0.2.2/lib/tunnel-vmc-plugin/tunnel.rb +308 -0
  159. data/vendor/tunnel-vmc-plugin-0.2.2/lib/tunnel-vmc-plugin/version.rb +3 -0
  160. data/vendor/tunnel-vmc-plugin-0.2.2/spec/plugin_spec.rb +29 -0
  161. data/vendor/tunnel-vmc-plugin-0.2.2/spec/spec_helper.rb +15 -0
  162. data/vendor/vmc-0.5.0/LICENSE +1277 -0
  163. data/vendor/vmc-0.5.0/Rakefile +101 -0
  164. data/vendor/vmc-0.5.0/bin/vmc +11 -0
  165. data/vendor/vmc-0.5.0/lib/vmc/cli/app/app.rb +45 -0
  166. data/vendor/vmc-0.5.0/lib/vmc/cli/app/apps.rb +99 -0
  167. data/vendor/vmc-0.5.0/lib/vmc/cli/app/base.rb +82 -0
  168. data/vendor/vmc-0.5.0/lib/vmc/cli/app/crashes.rb +42 -0
  169. data/vendor/vmc-0.5.0/lib/vmc/cli/app/delete.rb +95 -0
  170. data/vendor/vmc-0.5.0/lib/vmc/cli/app/deprecated.rb +11 -0
  171. data/vendor/vmc-0.5.0/lib/vmc/cli/app/env.rb +78 -0
  172. data/vendor/vmc-0.5.0/lib/vmc/cli/app/files.rb +137 -0
  173. data/vendor/vmc-0.5.0/lib/vmc/cli/app/health.rb +26 -0
  174. data/vendor/vmc-0.5.0/lib/vmc/cli/app/instances.rb +53 -0
  175. data/vendor/vmc-0.5.0/lib/vmc/cli/app/logs.rb +76 -0
  176. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push/create.rb +153 -0
  177. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push/interactions.rb +94 -0
  178. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push/sync.rb +64 -0
  179. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push.rb +105 -0
  180. data/vendor/vmc-0.5.0/lib/vmc/cli/app/rename.rb +35 -0
  181. data/vendor/vmc-0.5.0/lib/vmc/cli/app/restart.rb +20 -0
  182. data/vendor/vmc-0.5.0/lib/vmc/cli/app/scale.rb +71 -0
  183. data/vendor/vmc-0.5.0/lib/vmc/cli/app/start.rb +150 -0
  184. data/vendor/vmc-0.5.0/lib/vmc/cli/app/stats.rb +67 -0
  185. data/vendor/vmc-0.5.0/lib/vmc/cli/app/stop.rb +27 -0
  186. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/base.rb +12 -0
  187. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/domains.rb +40 -0
  188. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/map.rb +55 -0
  189. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/unmap.rb +56 -0
  190. data/vendor/vmc-0.5.0/lib/vmc/cli/help.rb +15 -0
  191. data/vendor/vmc-0.5.0/lib/vmc/cli/interactive.rb +105 -0
  192. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/base.rb +14 -0
  193. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/create.rb +32 -0
  194. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/delete.rb +73 -0
  195. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/org.rb +45 -0
  196. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/orgs.rb +35 -0
  197. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/rename.rb +36 -0
  198. data/vendor/vmc-0.5.0/lib/vmc/cli/route/base.rb +12 -0
  199. data/vendor/vmc-0.5.0/lib/vmc/cli/route/map.rb +80 -0
  200. data/vendor/vmc-0.5.0/lib/vmc/cli/route/routes.rb +26 -0
  201. data/vendor/vmc-0.5.0/lib/vmc/cli/route/unmap.rb +94 -0
  202. data/vendor/vmc-0.5.0/lib/vmc/cli/service/base.rb +8 -0
  203. data/vendor/vmc-0.5.0/lib/vmc/cli/service/bind.rb +44 -0
  204. data/vendor/vmc-0.5.0/lib/vmc/cli/service/create.rb +126 -0
  205. data/vendor/vmc-0.5.0/lib/vmc/cli/service/delete.rb +86 -0
  206. data/vendor/vmc-0.5.0/lib/vmc/cli/service/rename.rb +35 -0
  207. data/vendor/vmc-0.5.0/lib/vmc/cli/service/service.rb +42 -0
  208. data/vendor/vmc-0.5.0/lib/vmc/cli/service/services.rb +114 -0
  209. data/vendor/vmc-0.5.0/lib/vmc/cli/service/unbind.rb +38 -0
  210. data/vendor/vmc-0.5.0/lib/vmc/cli/space/base.rb +21 -0
  211. data/vendor/vmc-0.5.0/lib/vmc/cli/space/create.rb +60 -0
  212. data/vendor/vmc-0.5.0/lib/vmc/cli/space/delete.rb +95 -0
  213. data/vendor/vmc-0.5.0/lib/vmc/cli/space/rename.rb +39 -0
  214. data/vendor/vmc-0.5.0/lib/vmc/cli/space/space.rb +64 -0
  215. data/vendor/vmc-0.5.0/lib/vmc/cli/space/spaces.rb +55 -0
  216. data/vendor/vmc-0.5.0/lib/vmc/cli/space/switch.rb +16 -0
  217. data/vendor/vmc-0.5.0/lib/vmc/cli/start/base.rb +83 -0
  218. data/vendor/vmc-0.5.0/lib/vmc/cli/start/colors.rb +13 -0
  219. data/vendor/vmc-0.5.0/lib/vmc/cli/start/info.rb +126 -0
  220. data/vendor/vmc-0.5.0/lib/vmc/cli/start/login.rb +96 -0
  221. data/vendor/vmc-0.5.0/lib/vmc/cli/start/logout.rb +17 -0
  222. data/vendor/vmc-0.5.0/lib/vmc/cli/start/target.rb +71 -0
  223. data/vendor/vmc-0.5.0/lib/vmc/cli/start/target_interactions.rb +37 -0
  224. data/vendor/vmc-0.5.0/lib/vmc/cli/start/targets.rb +16 -0
  225. data/vendor/vmc-0.5.0/lib/vmc/cli/user/base.rb +29 -0
  226. data/vendor/vmc-0.5.0/lib/vmc/cli/user/create.rb +39 -0
  227. data/vendor/vmc-0.5.0/lib/vmc/cli/user/delete.rb +27 -0
  228. data/vendor/vmc-0.5.0/lib/vmc/cli/user/passwd.rb +50 -0
  229. data/vendor/vmc-0.5.0/lib/vmc/cli/user/register.rb +42 -0
  230. data/vendor/vmc-0.5.0/lib/vmc/cli/user/users.rb +32 -0
  231. data/vendor/vmc-0.5.0/lib/vmc/cli.rb +475 -0
  232. data/vendor/vmc-0.5.0/lib/vmc/constants.rb +13 -0
  233. data/vendor/vmc-0.5.0/lib/vmc/detect.rb +129 -0
  234. data/vendor/vmc-0.5.0/lib/vmc/errors.rb +17 -0
  235. data/vendor/vmc-0.5.0/lib/vmc/plugin.rb +56 -0
  236. data/vendor/vmc-0.5.0/lib/vmc/spacing.rb +89 -0
  237. data/vendor/vmc-0.5.0/lib/vmc/spec_helper.rb +1 -0
  238. data/vendor/vmc-0.5.0/lib/vmc/test_support.rb +6 -0
  239. data/vendor/vmc-0.5.0/lib/vmc/version.rb +3 -0
  240. data/vendor/vmc-0.5.0/lib/vmc.rb +8 -0
  241. data/vendor/vmc-0.5.0/spec/assets/hello-sinatra/Gemfile +3 -0
  242. data/vendor/vmc-0.5.0/spec/assets/hello-sinatra/config.ru +3 -0
  243. data/vendor/vmc-0.5.0/spec/assets/hello-sinatra/main.rb +6 -0
  244. data/vendor/vmc-0.5.0/spec/assets/specker_runner/specker_runner_input.rb +6 -0
  245. data/vendor/vmc-0.5.0/spec/assets/specker_runner/specker_runner_pause.rb +5 -0
  246. data/vendor/vmc-0.5.0/spec/console_app_specker/console_app_specker_matchers_spec.rb +152 -0
  247. data/vendor/vmc-0.5.0/spec/console_app_specker/specker_runner_spec.rb +157 -0
  248. data/vendor/vmc-0.5.0/spec/features/v1/new_user_flow_spec.rb +109 -0
  249. data/vendor/vmc-0.5.0/spec/features/v2/account_lifecycle_spec.rb +64 -0
  250. data/vendor/vmc-0.5.0/spec/features/v2/push_flow_spec.rb +125 -0
  251. data/vendor/vmc-0.5.0/spec/features/v2/switching_targets_spec.rb +32 -0
  252. data/vendor/vmc-0.5.0/spec/spec_helper.rb +63 -0
  253. data/vendor/vmc-0.5.0/spec/support/command_helper.rb +80 -0
  254. data/vendor/vmc-0.5.0/spec/support/config_helper.rb +15 -0
  255. data/vendor/vmc-0.5.0/spec/support/console_app_specker_matchers.rb +75 -0
  256. data/vendor/vmc-0.5.0/spec/support/fake_home_dir.rb +55 -0
  257. data/vendor/vmc-0.5.0/spec/support/interact_helper.rb +29 -0
  258. data/vendor/vmc-0.5.0/spec/support/shared_examples/errors.rb +40 -0
  259. data/vendor/vmc-0.5.0/spec/support/shared_examples/input.rb +14 -0
  260. data/vendor/vmc-0.5.0/spec/support/specker_runner.rb +79 -0
  261. data/vendor/vmc-0.5.0/spec/support/tracking_expector.rb +71 -0
  262. data/vendor/vmc-0.5.0/spec/vmc/cli/app/base_spec.rb +17 -0
  263. data/vendor/vmc-0.5.0/spec/vmc/cli/app/delete_spec.rb +188 -0
  264. data/vendor/vmc-0.5.0/spec/vmc/cli/app/instances_spec.rb +65 -0
  265. data/vendor/vmc-0.5.0/spec/vmc/cli/app/push/create_spec.rb +591 -0
  266. data/vendor/vmc-0.5.0/spec/vmc/cli/app/push_spec.rb +369 -0
  267. data/vendor/vmc-0.5.0/spec/vmc/cli/app/rename_spec.rb +104 -0
  268. data/vendor/vmc-0.5.0/spec/vmc/cli/app/scale_spec.rb +76 -0
  269. data/vendor/vmc-0.5.0/spec/vmc/cli/app/start_spec.rb +168 -0
  270. data/vendor/vmc-0.5.0/spec/vmc/cli/app/stats_spec.rb +68 -0
  271. data/vendor/vmc-0.5.0/spec/vmc/cli/domain/map_spec.rb +130 -0
  272. data/vendor/vmc-0.5.0/spec/vmc/cli/domain/unmap_spec.rb +69 -0
  273. data/vendor/vmc-0.5.0/spec/vmc/cli/organization/orgs_spec.rb +108 -0
  274. data/vendor/vmc-0.5.0/spec/vmc/cli/organization/rename_spec.rb +113 -0
  275. data/vendor/vmc-0.5.0/spec/vmc/cli/route/map_spec.rb +140 -0
  276. data/vendor/vmc-0.5.0/spec/vmc/cli/route/unmap_spec.rb +221 -0
  277. data/vendor/vmc-0.5.0/spec/vmc/cli/service/bind_spec.rb +25 -0
  278. data/vendor/vmc-0.5.0/spec/vmc/cli/service/delete_spec.rb +22 -0
  279. data/vendor/vmc-0.5.0/spec/vmc/cli/service/rename_spec.rb +105 -0
  280. data/vendor/vmc-0.5.0/spec/vmc/cli/service/service_spec.rb +23 -0
  281. data/vendor/vmc-0.5.0/spec/vmc/cli/service/unbind_spec.rb +25 -0
  282. data/vendor/vmc-0.5.0/spec/vmc/cli/space/create_spec.rb +73 -0
  283. data/vendor/vmc-0.5.0/spec/vmc/cli/space/rename_spec.rb +102 -0
  284. data/vendor/vmc-0.5.0/spec/vmc/cli/space/spaces_spec.rb +104 -0
  285. data/vendor/vmc-0.5.0/spec/vmc/cli/space/switch_space_spec.rb +55 -0
  286. data/vendor/vmc-0.5.0/spec/vmc/cli/start/info_spec.rb +160 -0
  287. data/vendor/vmc-0.5.0/spec/vmc/cli/start/login_spec.rb +142 -0
  288. data/vendor/vmc-0.5.0/spec/vmc/cli/start/logout_spec.rb +50 -0
  289. data/vendor/vmc-0.5.0/spec/vmc/cli/start/target_spec.rb +123 -0
  290. data/vendor/vmc-0.5.0/spec/vmc/cli/user/create_spec.rb +54 -0
  291. data/vendor/vmc-0.5.0/spec/vmc/cli/user/delete_spec.rb +51 -0
  292. data/vendor/vmc-0.5.0/spec/vmc/cli/user/passwd_spec.rb +102 -0
  293. data/vendor/vmc-0.5.0/spec/vmc/cli/user/register_spec.rb +140 -0
  294. data/vendor/vmc-0.5.0/spec/vmc/cli_spec.rb +448 -0
  295. data/vendor/vmc-0.5.0/spec/vmc/detect_spec.rb +54 -0
  296. metadata +446 -43
@@ -0,0 +1,35 @@
1
+ require "vmc/cli/organization/base"
2
+
3
+ module VMC::Organization
4
+ class Orgs < Base
5
+ desc "List available organizations"
6
+ group :organizations
7
+ input :full, :desc => "Show full information for apps, services, etc.",
8
+ :default => false
9
+ def orgs
10
+ orgs =
11
+ with_progress("Getting organizations") do
12
+ client.organizations.sort_by(&:name)
13
+ end
14
+
15
+ return if orgs.empty?
16
+
17
+ line unless quiet?
18
+
19
+ if input[:full]
20
+ orgs.each do |o|
21
+ invoke :org, :organization => o, :full => true
22
+ end
23
+ else
24
+ table(
25
+ %w{name spaces domains},
26
+ orgs.collect { |o|
27
+ [ c(o.name, :name),
28
+ name_list(o.spaces),
29
+ name_list(o.domains)
30
+ ]
31
+ })
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require "vmc/cli/organization/base"
2
+
3
+ module VMC::Organization
4
+ class Rename < Base
5
+ desc "Rename an organization"
6
+ group :organizations, :hidden => true
7
+ input :organization, :desc => "Organization to rename",
8
+ :aliases => ["--org", "-o"], :argument => :optional,
9
+ :from_given => by_name(:organization)
10
+ input :name, :desc => "New organization name", :argument => :optional
11
+ def rename_org
12
+ organization = input[:organization]
13
+ name = input[:name]
14
+
15
+ organization.name = name
16
+
17
+ with_progress("Renaming to #{c(name, :name)}") do
18
+ organization.update!
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def ask_name
25
+ ask("New name")
26
+ end
27
+
28
+ def ask_organization
29
+ organizations = client.organizations
30
+ fail "No organizations." if organizations.empty?
31
+
32
+ ask("Rename which organization?", :choices => organizations.sort_by(&:name),
33
+ :display => proc(&:name))
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,12 @@
1
+ require "vmc/cli"
2
+
3
+ module VMC
4
+ module Route
5
+ class Base < CLI
6
+ def precondition
7
+ super
8
+ fail "This command is v2-only." unless v2?
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,80 @@
1
+ require "vmc/cli/route/base"
2
+
3
+ module VMC::Route
4
+ class Map < Base
5
+ def precondition; end
6
+
7
+ desc "Add a URL mapping"
8
+ group :apps, :info, :hidden => true
9
+ input :app, :desc => "Application to add the URL to",
10
+ :argument => :optional, :from_given => by_name(:app)
11
+ input :host, :desc => "Host name for the route",
12
+ :argument => :optional, :default => ""
13
+ input :domain, :desc => "Domain to add the route to",
14
+ :argument => true,
15
+ :from_given => proc { |name, space|
16
+ if v2?
17
+ space.domain_by_name(name) ||
18
+ fail_unknown("domain", name)
19
+ else
20
+ name
21
+ end
22
+ }
23
+ def map
24
+ app = input[:app]
25
+ space = app.space if v2?
26
+
27
+ host = input[:host]
28
+ domain = input[:domain, space]
29
+
30
+ if v2?
31
+ route = find_or_create_route(domain, host, space)
32
+ bind_route(route, app) if app
33
+ else
34
+ with_progress("Updating #{c(app.name, :name)}") do
35
+ app.urls << domain
36
+ app.update!
37
+ end
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def bind_route(route, app)
44
+ with_progress("Binding #{c(route.name, :name)} to #{c(app.name, :name)}") do
45
+ app.add_route(route)
46
+ end
47
+ end
48
+
49
+ def find_or_create_route(domain, host, space)
50
+ find_route(domain, host) || create_route(domain, host, space)
51
+ end
52
+
53
+ def find_route(domain, host)
54
+ client.routes_by_host(host, :depth => 0).find { |r| r.domain == domain }
55
+ end
56
+
57
+ def create_route(domain, host, space)
58
+ route = client.route
59
+ route.host = host
60
+ route.domain = domain
61
+ route.space = space
62
+
63
+ with_progress("Creating route #{c(route.name, :name)}") do
64
+ route.create!
65
+ end
66
+
67
+ route
68
+ end
69
+
70
+ def find_domain(space, name)
71
+ domain = space.domain_by_name(name, :depth => 0)
72
+ fail "Invalid domain '#{name}'" unless domain
73
+ domain
74
+ end
75
+
76
+ def ask_app
77
+ ask("Which application?", :choices => client.apps, :display => proc(&:name))
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,26 @@
1
+ require "vmc/cli/route/base"
2
+
3
+ module VMC::Route
4
+ class Routes < Base
5
+ desc "List routes in a space"
6
+ group :routes
7
+
8
+ def routes
9
+ # TODO: scope to space once space.routes is possible
10
+ routes =
11
+ with_progress("Getting routes") do
12
+ client.routes
13
+ end
14
+
15
+ line unless quiet?
16
+
17
+ table(
18
+ %w{host domain},
19
+ routes.sort_by { |r| "#{r.domain.name} #{r.host}" }.collect { |r|
20
+ [c(r.host, :name),
21
+ r.domain.name
22
+ ]
23
+ })
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,94 @@
1
+ require "vmc/cli/route/base"
2
+
3
+ module VMC::Route
4
+ class Unmap < Base
5
+ desc "Remove a URL mapping"
6
+ group :apps, :info, :hidden => true
7
+ input :url, :desc => "URL to unmap", :argument => :optional,
8
+ :from_given => find_by_name("route") { client.routes }
9
+ input :app, :desc => "Application to remove the URL from",
10
+ :argument => :optional, :from_given => by_name(:app)
11
+ input :delete, :desc => "Delete route", :type => :boolean
12
+ input :all, :desc => "Act on all routes", :type => :boolean
13
+ input :really, :type => :boolean, :forget => true, :hidden => true,
14
+ :default => proc { force? || interact }
15
+ def unmap
16
+ return invoke :v1_unmap, input.inputs, input.given unless v2?
17
+
18
+ if input[:all]
19
+ if input.has?(:app)
20
+ app = target = input[:app]
21
+ return unless !input[:delete] || input[:really, "ALL URLS bound to #{target.name}", :bad]
22
+ else
23
+ target = client
24
+ return unless !input[:delete] || input[:really, "ALL URLS", :bad]
25
+ end
26
+
27
+ target.routes.each do |r|
28
+ begin
29
+ invoke :unmap, :delete => input[:delete], :url => r, :really => true, :app => app
30
+ rescue CFoundry::APIError => e
31
+ err "#{e.class}: #{e.message}"
32
+ end
33
+ end
34
+
35
+ return
36
+ end
37
+
38
+ app = input[:app]
39
+ url = input[:url, app ? app.routes : client.routes]
40
+
41
+ if input[:delete]
42
+ with_progress("Deleting route #{c(url.name, :name)}") do
43
+ url.delete!
44
+ end
45
+ elsif app
46
+ with_progress("Unbinding #{c(url.name, :name)} from #{c(app.name, :name)}") do
47
+ app.remove_route(url)
48
+ end
49
+ else
50
+ fail "Missing either --delete or --app."
51
+ end
52
+ end
53
+
54
+
55
+ desc "V1 ONLY UNMAP YOU SHOULD NOT SEE THIS"
56
+ input :url, :desc => "URL to unmap", :argument => :optional,
57
+ :interact => :v1_ask_url
58
+ input :app, :desc => "Application to remove the URL from",
59
+ :argument => :optional, :from_given => by_name(:app)
60
+ input :all, :desc => "Act on all routes", :type => :boolean
61
+ def v1_unmap
62
+ app = input[:app]
63
+ url = input[:url, app.urls] unless input[:all]
64
+
65
+ with_progress("Updating #{c(app.name, :name)}") do |s|
66
+ if input[:all]
67
+ app.urls = []
68
+ else
69
+ simple = url.sub(/^https?:\/\/(.*)\/?/i, '\1')
70
+
71
+ unless app.urls.delete(simple)
72
+ fail "URL #{url} is not mapped to this application."
73
+ end
74
+ end
75
+
76
+ app.update!
77
+ end
78
+ end
79
+
80
+ private
81
+
82
+ def ask_url(choices)
83
+ ask("Which URL?", :choices => choices.sort_by(&:name), :display => proc(&:name))
84
+ end
85
+
86
+ def v1_ask_url(choices)
87
+ ask("Which URL?", :choices => choices.sort)
88
+ end
89
+
90
+ def ask_really(name, color)
91
+ ask("Really delete #{c(name, color)}?", :default => false)
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,8 @@
1
+ require "vmc/cli"
2
+
3
+ module VMC
4
+ module Service
5
+ class Base < CLI
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,44 @@
1
+ require "vmc/detect"
2
+
3
+ require "vmc/cli/service/base"
4
+
5
+ module VMC::Service
6
+ class Bind < Base
7
+ desc "Bind a service to an application"
8
+ group :services, :manage
9
+ input :service, :desc => "Service to bind", :argument => :optional,
10
+ :from_given => by_name(:service_instance, "service")
11
+ input :app, :desc => "Application to bind to", :argument => :optional,
12
+ :from_given => by_name(:app)
13
+ def bind_service
14
+ app = input[:app]
15
+ service = input[:service, app]
16
+
17
+ with_progress(
18
+ "Binding #{c(service.name, :name)} to #{c(app.name, :name)}") do |s|
19
+ if app.binds?(service)
20
+ s.skip do
21
+ err "App #{b(app.name)} already binds #{b(service.name)}."
22
+ end
23
+ else
24
+ app.bind(service)
25
+ end
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def ask_service(app)
32
+ services = client.service_instances
33
+ fail "No services." if services.empty?
34
+
35
+ ask "Which service?", :choices => services - app.services,
36
+ :display => proc(&:name)
37
+ end
38
+
39
+ def ask_app
40
+ ask "Which application?", :choices => client.apps,
41
+ :display => proc(&:name)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,126 @@
1
+ require "vmc/cli/service/base"
2
+
3
+ module VMC::Service
4
+ class Create < Base
5
+ offerings_from_label = proc { |label, offerings|
6
+ offerings.select { |s| s.label == label }
7
+ }
8
+
9
+ desc "Create a service"
10
+ group :services, :manage
11
+ input :offering, :desc => "What kind of service (e.g. redis, mysql)",
12
+ :argument => :optional, :from_given => offerings_from_label
13
+ input :name, :desc => "Name for your service", :argument => :optional
14
+ input :plan, :desc => "Service plan",
15
+ :from_given => find_by_name_insensitive("plan"),
16
+ :default => proc { |plans|
17
+ plans.find { |p| p.name == "D100" } ||
18
+ interact
19
+ }
20
+ input :provider, :desc => "Service provider"
21
+ input :version, :desc => "Service version"
22
+ input :app, :desc => "Application to immediately bind to",
23
+ :alias => "--bind", :from_given => by_name(:app)
24
+ def create_service
25
+ offerings = client.services
26
+
27
+ if input[:provider]
28
+ offerings.reject! { |s| s.provider != input[:provider] }
29
+ end
30
+
31
+ if input[:version]
32
+ offerings.reject! { |s| s.version != input[:version] }
33
+ elsif !v2?
34
+ offerings.reject!(&:deprecated?)
35
+ end
36
+
37
+ # filter the offerings based on a given plan value, which will be a
38
+ # string if the user provided it with a flag, or a ServicePlan if
39
+ # something invoked this command with a particular plan
40
+ if v2? && plan = input.direct(:plan)
41
+ offerings.reject! do |s|
42
+ if plan.is_a?(String)
43
+ s.service_plans.none? { |p| p.name == plan.upcase }
44
+ else
45
+ s.service_plans.include? plan
46
+ end
47
+ end
48
+ end
49
+
50
+ until offerings.size < 2
51
+ # cast to Array since it might be given as a Service with #invoke
52
+ offerings = Array(input[:offering, offerings.sort_by(&:label)])
53
+ input.forget(:offering)
54
+ end
55
+
56
+ if offerings.empty?
57
+ fail "Cannot find services matching the given criteria."
58
+ end
59
+
60
+ offering = offerings.first
61
+
62
+ service = client.service_instance
63
+ service.name = input[:name, offering]
64
+
65
+ if v2?
66
+ service.service_plan = input[:plan, offering.service_plans]
67
+ service.space = client.current_space
68
+ else
69
+ service.type = offering.type
70
+ service.vendor = offering.label
71
+ service.version = offering.version
72
+ service.tier = v1_service_tier(offering)
73
+ end
74
+
75
+ with_progress("Creating service #{c(service.name, :name)}") do
76
+ service.create!
77
+ end
78
+
79
+ if app = input[:app]
80
+ invoke :bind_service, :service => service, :app => app
81
+ end
82
+
83
+ service
84
+ end
85
+
86
+ private
87
+
88
+ def ask_offering(offerings)
89
+ [ask("What kind?", :choices => offerings.sort_by(&:label),
90
+ :display => proc { |s|
91
+ str = "#{c(s.label, :name)} #{s.version}"
92
+ if s.provider != "core"
93
+ str << ", via #{s.provider}"
94
+ end
95
+ str
96
+ },
97
+ :complete => proc { |s| "#{s.label} #{s.version}" })]
98
+ end
99
+
100
+ def ask_name(offering)
101
+ random = sprintf("%x", rand(1000000))
102
+ ask "Name?", :default => "#{offering.label}-#{random}"
103
+ end
104
+
105
+ def ask_plan(plans, default_plan = nil)
106
+ ask "Which plan?",
107
+ :choices => plans.sort_by(&:name),
108
+ :indexed => true,
109
+ :display => proc { |p| "#{p.name}: #{p.description || 'No description'}" },
110
+ :default => default_plan,
111
+ :complete => proc(&:name)
112
+ end
113
+
114
+ def v1_service_tier(service)
115
+ plans = service.service_plans
116
+ fail "No service plans" if plans.empty?
117
+ if plans.length == 1
118
+ plan = plans[0]
119
+ else
120
+ plan = ask_plan(plans, service.default_service_plan)
121
+ end
122
+ plan.name
123
+ end
124
+
125
+ end
126
+ end
@@ -0,0 +1,86 @@
1
+ require "vmc/cli/service/base"
2
+
3
+ module VMC::Service
4
+ class Delete < Base
5
+ desc "Delete a service"
6
+ group :services, :manage
7
+ input :service, :desc => "Service to bind", :argument => :optional,
8
+ :from_given => by_name(:service_instance, :service)
9
+ input :unbind, :desc => "Unbind from applications before deleting?",
10
+ :type => :boolean, :default => proc { force? || interact }
11
+ input :all, :desc => "Delete all services", :default => false
12
+ input :really, :type => :boolean, :forget => true, :hidden => true,
13
+ :default => proc { force? || interact }
14
+ def delete_service
15
+ if input[:all]
16
+ return unless input[:really, "ALL SERVICES", :bad]
17
+
18
+ client.service_instances.each do |i|
19
+ invoke :delete_service, :service => i, :really => true
20
+ end
21
+
22
+ return
23
+ end
24
+
25
+ service = input[:service]
26
+
27
+ return unless input[:really, service.name, :name]
28
+
29
+ bindings = []
30
+
31
+ if v2?
32
+ bindings = service.service_bindings
33
+
34
+ unless bindings.empty? || !input[:unbind, bindings.collect(&:app)]
35
+ bindings.each do |b|
36
+ invoke :unbind_service, :service => service, :app => b.app
37
+ end
38
+
39
+ bindings = []
40
+ end
41
+ end
42
+
43
+ with_progress("Deleting #{c(service.name, :name)}") do |s|
44
+ if bindings.empty?
45
+ service.delete!
46
+ else
47
+ s.skip do
48
+ apps = bindings.collect(&:app).collect { |a| b(a.name) }
49
+ err "Service is bound to #{human_list(apps)}."
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def ask_service
58
+ services = client.service_instances
59
+ fail "No services." if services.empty?
60
+
61
+ ask "Which service?", :choices => services,
62
+ :display => proc(&:name)
63
+ end
64
+
65
+ def ask_unbind(apps)
66
+ names = human_list(apps.collect { |a| c(a.name, :name) })
67
+
68
+ ask("Unbind from #{names} before deleting?", :default => true)
69
+ end
70
+
71
+ def ask_really(name, color)
72
+ ask("Really delete #{c(name, color)}?", :default => false)
73
+ end
74
+
75
+ def human_list(xs)
76
+ if xs.size == 1
77
+ xs.first
78
+ elsif xs.size == 2
79
+ "#{xs.first} and #{xs.last}"
80
+ else
81
+ last = xs.pop
82
+ xs.join(", ") + ", and #{last}"
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,35 @@
1
+ require "vmc/cli/service/base"
2
+
3
+ module VMC::Service
4
+ class Rename < Base
5
+ desc "Rename a service"
6
+ group :services, :manage, :hidden => true
7
+ input :service, :desc => "Service to rename", :argument => :optional,
8
+ :from_given => by_name(:service_instance, :service)
9
+ input :name, :desc => "New service name", :argument => :optional
10
+ def rename_service
11
+ service = input[:service]
12
+ name = input[:name]
13
+
14
+ service.name = name
15
+
16
+ with_progress("Renaming to #{c(name, :name)}") do
17
+ service.update!
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def ask_service
24
+ services = client.service_instances
25
+ fail "No services." if services.empty?
26
+
27
+ ask("Rename which service?", :choices => services.sort_by(&:name),
28
+ :display => proc(&:name))
29
+ end
30
+
31
+ def ask_name
32
+ ask("New name")
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,42 @@
1
+ require "vmc/cli/service/base"
2
+
3
+ module VMC::Service
4
+ class Service < Base
5
+ desc "Show service information"
6
+ group :services
7
+ input :service, :desc => "Service to show", :argument => :required,
8
+ :from_given => by_name(:service_instance, :service)
9
+ def service
10
+ display_service(input[:service])
11
+ end
12
+
13
+ private
14
+
15
+ def display_service(i)
16
+ if quiet?
17
+ line i.name
18
+ elsif v2?
19
+ plan = i.service_plan
20
+ service = plan.service
21
+
22
+ apps = i.service_bindings.collect { |b|
23
+ c(b.app.name, :name)
24
+ }.join(", ")
25
+
26
+ line "#{c(i.name, :name)}: #{service.label} #{service.version}"
27
+
28
+ indented do
29
+ line "provider: #{c(service.provider, :name)}"
30
+ line "bound to: #{apps}" unless apps.empty?
31
+ line "plan: #{c(plan.name, :name)}"
32
+
33
+ indented do
34
+ line "description: #{plan.description}"
35
+ end
36
+ end
37
+ else
38
+ line "#{c(i.name, :name)}: #{i.vendor} #{i.version}"
39
+ end
40
+ end
41
+ end
42
+ end