lib/veewee/command.rb in veewee-0.1.0a vs lib/veewee/command.rb in veewee-0.1.2

- old
+ new

@@ -1,63 +1,66 @@ require 'veewee/session' +#Load Veewee::Session libraries +lib_dir= File.expand_path(File.join(File.dirname(__FILE__),"..","..", "lib")) +Dir.glob(File.join(lib_dir, '**','*.rb')).each {|f| require f } + #Setup some base variables to use -veewee_dir= File.expand_path(File.join(File.dirname(__FILE__),"..","..")) -definition_dir= File.expand_path(File.join(".", "definitions")) -lib_dir= File.expand_path(File.join(veewee_dir, "lib")) -box_dir= File.expand_path(File.join(veewee_dir, "boxes")) -template_dir=File.expand_path(File.join(veewee_dir, "templates")) +template_dir=File.expand_path(File.join(lib_dir,"..", "templates")) -#vbox_dir=File.expand_path(File.join(veewee_dir, "tmp")) +veewee_dir="." +definition_dir= File.expand_path(File.join(veewee_dir, "definitions")) tmp_dir=File.expand_path(File.join(veewee_dir, "tmp")) - iso_dir=File.expand_path(File.join(veewee_dir, "iso")) +box_dir=File.expand_path(File.join(veewee_dir, "boxes")) -#needs to be moved to the config files to be allowed override -#ENV['VBOX_USER_HOME']=vbox_dir - -#Load Veewee::Session libraries -Dir.glob(File.join(lib_dir, '**','*.rb')).each {|f| - require f } - #Initialize Veewee::Session.setenv({:veewee_dir => veewee_dir, :definition_dir => definition_dir, :template_dir => template_dir, :iso_dir => iso_dir, :box_dir => box_dir, :tmp_dir => tmp_dir}) +module Veewee +class Command < Vagrant::Command::GroupBase + register "basebox","Commands to manage baseboxes" -module Vagrant - module Command - class BoxCommand < Vagrant::Command::GroupBase - # Do not register anymore, as this registration is already done in Vagrant core - # Since Ruby classes are 'open', we are just adding subcommands to the 'box' command + desc "templates", "List the currently available box templates" + def templates + Veewee::Session.list_templates + end - desc "templates", "List the currently available box templates" - def templates - Veewee::Session.list_templates - end + desc "define BOXNAME TEMPLATE", "Define a new box starting from a template" + method_option :force,:type => :boolean , :default => false, :aliases => "-f", :desc => "overwrite the definition" + def define(boxname, template) + Veewee::Session.define(boxname,template,options) + end - desc "init BOXNAME TEMPLATE", "Define a new box starting from a template" - def init(boxname, template) - puts "Init a new box #{boxname}, starting from template #{template}" - Veewee::Session.define(boxname,template) - end + desc "build BOXNAME", "Build the box BOXNAME" + method_option :force,:type => :boolean , :default => false, :aliases => "-f", :desc => "overwrite the basebox" + def build(boxname) + Veewee::Session.build(boxname,options) + end - desc "build BOXNAME", "Build the box BOXNAME" - def build(boxname) - puts "Building box #{boxname}" - Veewee::Session.build(boxname) + desc "ostypes", "List the available Operating System types" + def ostypes + Veewee::Session.list_ostypes + end + + desc "destroy BOXNAME", "Destroy the virtualmachine of a basebox" + def destroy(boxname) + puts Veewee::Session.destroy_vm(boxname) + end + + desc "list", "Lists all defined boxes" + def list + Veewee::Session.list_definitions + end + + desc "export [NAME]", "export the box" + method_options :force => :boolean + def export(boxname) + if (!boxname.nil?) + Veewee::Session.export_box(boxname) end - - desc "ostypes", "List the available Operating System types" - def ostypes - puts "Operating System types:" - Veewee::Session.list_ostypes - end - - desc "clean", "Clean all unfinished builds" - def clean - puts "Cleaning all unfinished builds" - end - - end end + end + +end \ No newline at end of file