Sha256: 3b2024d04f069de7665c59517c0b4682fb0cfddc8992cb6e0890a13c1bdf4ea3

Contents?: true

Size: 1.86 KB

Versions: 38

Compression:

Stored size: 1.86 KB

Contents

require 'optparse'

module Vagrant
  module Command
    class Box < Base
      def initialize(argv, env)
        super

        @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)

        @subcommands = Registry.new
        @subcommands.register(:add)       { Vagrant::Command::BoxAdd }
        @subcommands.register(:remove)    { Vagrant::Command::BoxRemove }
        @subcommands.register(:repackage) { Vagrant::Command::BoxRepackage }
        @subcommands.register(:list)      { Vagrant::Command::BoxList }
      end

      def execute
        if @main_args.include?("-h") || @main_args.include?("--help")
          # Print the help for all the box commands.
          return help
        end

        # If we reached this far then we must have a subcommand. If not,
        # then we also just print the help and exit.
        command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
        return help if !command_class || !@sub_command
        @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")

        # Initialize and execute the command class
        command_class.new(@sub_args, @env).execute
      end

      # Prints the help out for this command
      def help
        opts = OptionParser.new do |opts|
          opts.banner = "Usage: vagrant box <command> [<args>]"
          opts.separator ""
          opts.separator "Available subcommands:"

          # Add the available subcommands as separators in order to print them
          # out as well.
          keys = []
          @subcommands.each { |key, value| keys << key.to_s }

          keys.sort.each do |key|
            opts.separator "     #{key}"
          end

          opts.separator ""
          opts.separator "For help on any individual command run `vagrant box COMMAND -h`"
        end

        @env.ui.info(opts.help, :prefix => false)
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 6 rubygems

Version Path
bmhatfield-vagrant-1.0.10 lib/vagrant/command/box.rb
bmhatfield-vagrant-1.0.9 lib/vagrant/command/box.rb
bmhatfield-vagrant-1.0.8 lib/vagrant/command/box.rb
bmhatfield-vagrant-1.0.7 lib/vagrant/command/box.rb
vagrantup-1.0.7 lib/vagrant/command/box.rb
vagrantup-1.0.6 lib/vagrant/command/box.rb
vagrantup-1.0.5 lib/vagrant/command/box.rb
vagrantup-1.0.4 lib/vagrant/command/box.rb
vagrantup-1.0.3 lib/vagrant/command/box.rb
vagrantup-1.0.2 lib/vagrant/command/box.rb
vagrantup-1.0.1 lib/vagrant/command/box.rb
vagrantup-1.0.0 lib/vagrant/command/box.rb
vagrantup-0.9.99.2 lib/vagrant/command/box.rb
vagrantup-0.9.99.1 lib/vagrant/command/box.rb
vagrantup-0.9.7 lib/vagrant/command/box.rb
vagrantup-0.9.6 lib/vagrant/command/box.rb
vagrantup-0.9.5 lib/vagrant/command/box.rb
vagrantup-0.9.4 lib/vagrant/command/box.rb
vagrantup-0.9.3 lib/vagrant/command/box.rb
vagrantup-0.9.2 lib/vagrant/command/box.rb