vmc 0.4.7 → 0.5.0.beta.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.
- data/lib/vmc.rb +1 -2
- data/lib/vmc/cli.rb +33 -31
- data/lib/vmc/cli/app/app.rb +2 -2
- data/lib/vmc/cli/app/apps.rb +4 -5
- data/lib/vmc/cli/app/crashes.rb +2 -3
- data/lib/vmc/cli/app/delete.rb +28 -25
- data/lib/vmc/cli/app/env.rb +11 -19
- data/lib/vmc/cli/app/files.rb +11 -15
- data/lib/vmc/cli/app/health.rb +2 -3
- data/lib/vmc/cli/app/instances.rb +3 -3
- data/lib/vmc/cli/app/logs.rb +7 -10
- data/lib/vmc/cli/app/push.rb +17 -89
- data/lib/vmc/cli/app/push/create.rb +2 -0
- data/lib/vmc/cli/app/rename.rb +17 -13
- data/lib/vmc/cli/app/restart.rb +4 -7
- data/lib/vmc/cli/app/routes.rb +14 -11
- data/lib/vmc/cli/app/scale.rb +17 -15
- data/lib/vmc/cli/app/start.rb +4 -7
- data/lib/vmc/cli/app/stats.rb +2 -3
- data/lib/vmc/cli/app/stop.rb +3 -5
- data/lib/vmc/cli/domain/add_domain.rb +3 -5
- data/lib/vmc/cli/domain/create_domain.rb +5 -8
- data/lib/vmc/cli/domain/delete_domain.rb +23 -18
- data/lib/vmc/cli/domain/domains.rb +4 -7
- data/lib/vmc/cli/domain/remove_domain.rb +12 -10
- data/lib/vmc/cli/organization/org.rb +6 -7
- data/lib/vmc/cli/organization/orgs.rb +19 -19
- data/lib/vmc/cli/organization/rename.rb +18 -14
- data/lib/vmc/cli/route/create_route.rb +20 -13
- data/lib/vmc/cli/route/{delete_route.rb → delete.rb} +22 -17
- data/lib/vmc/cli/service/bind.rb +2 -2
- data/lib/vmc/cli/service/create.rb +57 -53
- data/lib/vmc/cli/service/delete.rb +33 -31
- data/lib/vmc/cli/service/rename.rb +17 -14
- data/lib/vmc/cli/service/service.rb +5 -8
- data/lib/vmc/cli/service/services.rb +14 -18
- data/lib/vmc/cli/service/unbind.rb +4 -4
- data/lib/vmc/cli/space/create.rb +16 -17
- data/lib/vmc/cli/space/delete.rb +34 -31
- data/lib/vmc/cli/space/rename.rb +20 -17
- data/lib/vmc/cli/space/space.rb +11 -14
- data/lib/vmc/cli/space/spaces.rb +14 -16
- data/lib/vmc/cli/space/take.rb +1 -3
- data/lib/vmc/cli/start/base.rb +2 -0
- data/lib/vmc/cli/start/colors.rb +0 -1
- data/lib/vmc/cli/start/info.rb +8 -10
- data/lib/vmc/cli/start/login.rb +11 -40
- data/lib/vmc/cli/start/logout.rb +0 -1
- data/lib/vmc/cli/start/register.rb +18 -12
- data/lib/vmc/cli/start/target.rb +7 -36
- data/lib/vmc/cli/start/target_interactions.rb +3 -1
- data/lib/vmc/cli/start/targets.rb +0 -1
- data/lib/vmc/cli/user/create.rb +4 -2
- data/lib/vmc/version.rb +1 -1
- data/spec/factories/organization_factory.rb +5 -0
- data/spec/factories/space_factory.rb +15 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/vmc/cli/app/push/create_spec.rb +2 -1
- data/spec/vmc/cli/app/push_spec.rb +1 -1
- data/spec/vmc/cli/organization/orgs_spec.rb +119 -0
- data/spec/vmc/cli/route/delete_route_spec.rb +3 -3
- data/spec/vmc/cli/service/bind_spec.rb +34 -0
- data/spec/vmc/cli/service/delete_spec.rb +32 -0
- data/spec/vmc/cli/service/service_spec.rb +32 -0
- data/spec/vmc/cli/service/unbind_spec.rb +34 -0
- data/spec/vmc/cli/space/spaces_spec.rb +120 -0
- data/spec/vmc/cli/start/info_spec.rb +38 -0
- data/spec/vmc/cli/start/login_spec.rb +40 -0
- metadata +127 -113
- data/lib/vmc/cli/organization/create_org.rb +0 -28
- data/lib/vmc/cli/organization/delete_org.rb +0 -65
- data/lib/vmc/cli/service/binding.rb +0 -66
- data/lib/vmc/cli/user.rb +0 -118
| @@ -1,28 +0,0 @@ | |
| 1 | 
            -
            require "vmc/cli/organization/base"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module VMC::Organization
         | 
| 4 | 
            -
              class CreateOrg < Base
         | 
| 5 | 
            -
                desc "Create an organization"
         | 
| 6 | 
            -
                group :organizations
         | 
| 7 | 
            -
                input(:name, :argument => :optional, :desc => "Organization name") {
         | 
| 8 | 
            -
                  ask("Name")
         | 
| 9 | 
            -
                }
         | 
| 10 | 
            -
                input :target, :alias => "-t", :type => :boolean,
         | 
| 11 | 
            -
                      :desc => "Switch to the organization after creation"
         | 
| 12 | 
            -
                input :add_self, :type => :boolean, :default => true,
         | 
| 13 | 
            -
                      :desc => "Add yourself to the organization"
         | 
| 14 | 
            -
                def create_org
         | 
| 15 | 
            -
                  org = client.organization
         | 
| 16 | 
            -
                  org.name = input[:name]
         | 
| 17 | 
            -
                  org.users = [client.current_user] if input[:add_self]
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  with_progress("Creating organization #{c(org.name, :name)}") do
         | 
| 20 | 
            -
                    org.create!
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  if input[:target]
         | 
| 24 | 
            -
                    invoke :target, :organization => org
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
            end
         | 
| @@ -1,65 +0,0 @@ | |
| 1 | 
            -
            require "vmc/cli/organization/base"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module VMC::Organization
         | 
| 4 | 
            -
              class DeleteOrg < Base
         | 
| 5 | 
            -
                desc "Delete an organization"
         | 
| 6 | 
            -
                group :organizations
         | 
| 7 | 
            -
                input(:organization, :aliases => ["--org", "-o"],
         | 
| 8 | 
            -
                      :argument => :optional,
         | 
| 9 | 
            -
                      :from_given => by_name("organization"),
         | 
| 10 | 
            -
                      :desc => "Organization to delete") { |orgs|
         | 
| 11 | 
            -
                  ask "Which organization?", :choices => orgs,
         | 
| 12 | 
            -
                      :display => proc(&:name)
         | 
| 13 | 
            -
                }
         | 
| 14 | 
            -
                input(:really, :type => :boolean, :forget => true,
         | 
| 15 | 
            -
                      :default => proc { force? || interact }) { |org|
         | 
| 16 | 
            -
                  ask("Really delete #{c(org.name, :name)}?", :default => false)
         | 
| 17 | 
            -
                }
         | 
| 18 | 
            -
                input(:recursive, :alias => "-r", :type => :boolean, :forget => true) {
         | 
| 19 | 
            -
                  ask "Delete #{c("EVERYTHING", :bad)}?", :default => false
         | 
| 20 | 
            -
                }
         | 
| 21 | 
            -
                input :warn, :type => :boolean, :default => true,
         | 
| 22 | 
            -
                      :desc => "Show warning if it was the last org"
         | 
| 23 | 
            -
                def delete_org
         | 
| 24 | 
            -
                  orgs = client.organizations
         | 
| 25 | 
            -
                  fail "No organizations." if orgs.empty?
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  org = input[:organization, orgs]
         | 
| 28 | 
            -
                  return unless input[:really, org]
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  spaces = org.spaces
         | 
| 31 | 
            -
                  unless spaces.empty?
         | 
| 32 | 
            -
                    unless force?
         | 
| 33 | 
            -
                      line "This organization is not empty!"
         | 
| 34 | 
            -
                      line
         | 
| 35 | 
            -
                      line "spaces: #{name_list(spaces)}"
         | 
| 36 | 
            -
                      line
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                      return unless input[:recursive]
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                    spaces.each do |s|
         | 
| 42 | 
            -
                      invoke :delete_space, :space => s, :really => true,
         | 
| 43 | 
            -
                             :recursive => true, :warn => false
         | 
| 44 | 
            -
                    end
         | 
| 45 | 
            -
                  end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                  is_current = org == client.current_organization
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                  with_progress("Deleting organization #{c(org.name, :name)}") do
         | 
| 50 | 
            -
                    org.delete!
         | 
| 51 | 
            -
                  end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                  if orgs.size == 1
         | 
| 54 | 
            -
                    return unless input[:warn]
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    line
         | 
| 57 | 
            -
                    line c("There are no longer any organizations.", :warning)
         | 
| 58 | 
            -
                    line "You may want to create one with #{c("create-org", :good)}."
         | 
| 59 | 
            -
                  elsif is_current
         | 
| 60 | 
            -
                    invalidate_target
         | 
| 61 | 
            -
                    invoke :target
         | 
| 62 | 
            -
                  end
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
              end
         | 
| 65 | 
            -
            end
         | 
| @@ -1,66 +0,0 @@ | |
| 1 | 
            -
            require "vmc/detect"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require "vmc/cli/service/base"
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module VMC::Service
         | 
| 6 | 
            -
              class Binding < Base
         | 
| 7 | 
            -
                desc "Bind a service instance to an application"
         | 
| 8 | 
            -
                group :services, :manage
         | 
| 9 | 
            -
                input(:instance, :argument => true,
         | 
| 10 | 
            -
                      :from_given => by_name("service instance", :service_instance),
         | 
| 11 | 
            -
                      :desc => "Service to bind") { |app|
         | 
| 12 | 
            -
                  instances = client.service_instances
         | 
| 13 | 
            -
                  fail "No service instances." if instances.empty?
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  ask "Which service instance?",
         | 
| 16 | 
            -
                    :choices => instances - app.services,
         | 
| 17 | 
            -
                    :display => proc(&:name)
         | 
| 18 | 
            -
                }
         | 
| 19 | 
            -
                input(:app, :argument => true,
         | 
| 20 | 
            -
                      :from_given => by_name("app"),
         | 
| 21 | 
            -
                      :desc => "Application to bind to") {
         | 
| 22 | 
            -
                  ask "Which application?", :choices => client.apps(:depth => 2),
         | 
| 23 | 
            -
                    :display => proc(&:name)
         | 
| 24 | 
            -
                }
         | 
| 25 | 
            -
                def bind_service
         | 
| 26 | 
            -
                  app = input[:app]
         | 
| 27 | 
            -
                  instance = input[:instance, app]
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                  with_progress(
         | 
| 30 | 
            -
                      "Binding #{c(instance.name, :name)} to #{c(app.name, :name)}") do |s|
         | 
| 31 | 
            -
                    if app.binds?(instance)
         | 
| 32 | 
            -
                      s.skip do
         | 
| 33 | 
            -
                        err "App #{b(app.name)} already binds #{b(instance.name)}."
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    else
         | 
| 36 | 
            -
                      app.bind(instance)
         | 
| 37 | 
            -
                    end
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
                desc "Unbind a service from an application"
         | 
| 43 | 
            -
                group :services, :manage
         | 
| 44 | 
            -
                input(:instance, :argument => true,
         | 
| 45 | 
            -
                      :from_given => find_by_name("service instance"),
         | 
| 46 | 
            -
                      :desc => "Service to bind") { |services|
         | 
| 47 | 
            -
                  ask "Which service instance?", :choices => services,
         | 
| 48 | 
            -
                    :display => proc(&:name)
         | 
| 49 | 
            -
                }
         | 
| 50 | 
            -
                input(:app, :argument => true,
         | 
| 51 | 
            -
                      :from_given => by_name("app"),
         | 
| 52 | 
            -
                      :desc => "Application to bind to") {
         | 
| 53 | 
            -
                  ask "Which application?", :choices => client.apps(:depth => 2),
         | 
| 54 | 
            -
                    :display => proc(&:name)
         | 
| 55 | 
            -
                }
         | 
| 56 | 
            -
                def unbind_service
         | 
| 57 | 
            -
                  app = input[:app]
         | 
| 58 | 
            -
                  instance = input[:instance, app.services]
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                  with_progress(
         | 
| 61 | 
            -
                      "Unbinding #{c(instance.name, :name)} from #{c(app.name, :name)}") do
         | 
| 62 | 
            -
                    app.unbind(instance)
         | 
| 63 | 
            -
                  end
         | 
| 64 | 
            -
                end
         | 
| 65 | 
            -
              end
         | 
| 66 | 
            -
            end
         | 
    
        data/lib/vmc/cli/user.rb
    DELETED
    
    | @@ -1,118 +0,0 @@ | |
| 1 | 
            -
            require "vmc/cli"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module VMC
         | 
| 4 | 
            -
              class User < CLI
         | 
| 5 | 
            -
                desc "List all users"
         | 
| 6 | 
            -
                group :admin, :hidden => true
         | 
| 7 | 
            -
                def users
         | 
| 8 | 
            -
                  users =
         | 
| 9 | 
            -
                    with_progress("Getting users") do
         | 
| 10 | 
            -
                      client.users(:depth => 0)
         | 
| 11 | 
            -
                    end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  spaced(users) do |u|
         | 
| 14 | 
            -
                    display_user(u)
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
                desc "Create a user"
         | 
| 20 | 
            -
                group :admin, :user, :hidden => true
         | 
| 21 | 
            -
                input(:email, :argument => true, :desc => "User email") {
         | 
| 22 | 
            -
                  ask("Email")
         | 
| 23 | 
            -
                }
         | 
| 24 | 
            -
                input(:password, :desc => "User password") {
         | 
| 25 | 
            -
                  ask("Password", :echo => "*", :forget => true)
         | 
| 26 | 
            -
                }
         | 
| 27 | 
            -
                input(:verify, :desc => "Repeat password") {
         | 
| 28 | 
            -
                  ask("Verify Password", :echo => "*", :forget => true)
         | 
| 29 | 
            -
                }
         | 
| 30 | 
            -
                def create_user
         | 
| 31 | 
            -
                  email = input[:email]
         | 
| 32 | 
            -
                  password = input[:password]
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  if !force? && password != input[:verify]
         | 
| 35 | 
            -
                    fail "Passwords don't match."
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  with_progress("Creating user") do
         | 
| 39 | 
            -
                    client.register(email, password)
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                alias_command :create_user, :add_user
         | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
                desc "Delete a user"
         | 
| 47 | 
            -
                group :admin, :user, :hidden => true
         | 
| 48 | 
            -
                input :email, :argument => true, :desc => "User to delete"
         | 
| 49 | 
            -
                input(:really, :type => :boolean, :forget => true,
         | 
| 50 | 
            -
                      :default => proc { force? || interact }) { |email|
         | 
| 51 | 
            -
                  ask("Really delete user #{c(email, :name)}?", :default => false)
         | 
| 52 | 
            -
                }
         | 
| 53 | 
            -
                def delete_user
         | 
| 54 | 
            -
                  email = input[:email]
         | 
| 55 | 
            -
                  return unless input[:really, email]
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                  with_progress("Deleting #{c(email, :name)}") do
         | 
| 58 | 
            -
                    client.user(email).delete!
         | 
| 59 | 
            -
                  end
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
                desc "Update a user's password"
         | 
| 64 | 
            -
                group :admin, :user, :hidden => true
         | 
| 65 | 
            -
                input :user, :argument => :optional,
         | 
| 66 | 
            -
                  :from_given => proc { |email|
         | 
| 67 | 
            -
                    if v2? && client.current_user.email != email
         | 
| 68 | 
            -
                      fail "You can only change your own password on V2."
         | 
| 69 | 
            -
                    else
         | 
| 70 | 
            -
                      client.user(email)
         | 
| 71 | 
            -
                    end
         | 
| 72 | 
            -
                  },
         | 
| 73 | 
            -
                  :desc => "User to update",
         | 
| 74 | 
            -
                  :default => proc { client.current_user }
         | 
| 75 | 
            -
                input(:password, :desc => "New password") {
         | 
| 76 | 
            -
                  ask("Current Password", :echo => "*", :forget => true)
         | 
| 77 | 
            -
                }
         | 
| 78 | 
            -
                input(:new_password, :desc => "New password") {
         | 
| 79 | 
            -
                  ask("New Password", :echo => "*", :forget => true)
         | 
| 80 | 
            -
                }
         | 
| 81 | 
            -
                input(:verify, :desc => "Repeat new password") {
         | 
| 82 | 
            -
                  ask("Verify Password", :echo => "*", :forget => true)
         | 
| 83 | 
            -
                }
         | 
| 84 | 
            -
                def passwd
         | 
| 85 | 
            -
                  user = input[:user]
         | 
| 86 | 
            -
                  password = input[:password] if v2?
         | 
| 87 | 
            -
                  new_password = input[:new_password]
         | 
| 88 | 
            -
                  verify = input[:verify]
         | 
| 89 | 
            -
             | 
| 90 | 
            -
                  if new_password != verify
         | 
| 91 | 
            -
                    fail "Passwords don't match."
         | 
| 92 | 
            -
                  end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                  with_progress("Changing password") do
         | 
| 95 | 
            -
                    if v2?
         | 
| 96 | 
            -
                      user.change_password!(new_password, password)
         | 
| 97 | 
            -
                    else
         | 
| 98 | 
            -
                      user.password = new_password
         | 
| 99 | 
            -
                      user.update!
         | 
| 100 | 
            -
                    end
         | 
| 101 | 
            -
                  end
         | 
| 102 | 
            -
                end
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                private
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                def display_user(u)
         | 
| 107 | 
            -
                  if quiet?
         | 
| 108 | 
            -
                    puts u.email
         | 
| 109 | 
            -
                  else
         | 
| 110 | 
            -
                    line "#{c(u.email, :name)}:"
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                    indented do
         | 
| 113 | 
            -
                      line "admin?: #{c(u.admin?, u.admin? ? :yes : :no)}"
         | 
| 114 | 
            -
                    end
         | 
| 115 | 
            -
                  end
         | 
| 116 | 
            -
                end
         | 
| 117 | 
            -
              end
         | 
| 118 | 
            -
            end
         |