Class: Dister::Cli
- Inherits:
-
Thor
- Object
- Thor
- Dister::Cli
- Includes:
- Thor::Actions
- Defined in:
- lib/dister/cli.rb
Overview
This is the public facing command line interface which is available through the dister
command line tool. Use dister –help for usage instructions.
Class Method Summary collapse
-
.source_root ⇒ String
NOTE: Some of Thor’s actions require this method to be defined.
Instance Method Summary collapse
- #basesystems
- #build
- #bundle
- #config(option, value)
- #create(appliance_name)
- #download
- #format(operation, format = nil)
- #info
- #package(operation, *package)
- #push
- #templates
- #testdrive
- #version
Class Method Details
.source_root ⇒ String
NOTE: Some of Thor’s actions require this method to be defined.
11 12 13 |
# File 'lib/dister/cli.rb', line 11 def self.source_root File.('../../',__FILE__) end |
Instance Method Details
#basesystems
122 123 124 125 |
# File 'lib/dister/cli.rb', line 122 def basesystems access_core puts @core.basesystems.sort end |
#build
66 67 68 69 70 71 72 73 74 |
# File 'lib/dister/cli.rb', line 66 def build access_core ensure_appliance_exists if @core.build puts "Appliance successfully built." else puts "Build failed." end end |
#bundle
128 129 130 131 132 133 134 |
# File 'lib/dister/cli.rb', line 128 def bundle access_core @core.package_gems @core.package_config_files # Package app last, since it will tarball the application including all gems. @core.package_app end |
#config(option, value)
24 25 26 27 |
# File 'lib/dister/cli.rb', line 24 def config option, value = Dister::Options.new(![:local].nil?) .send("#{option}=", value) end |
#create(appliance_name)
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/dister/cli.rb', line 33 def create(appliance_name) # Check parameters. access_core ensure_valid_option [:arch], VALID_ARCHS, "arch" ensure_valid_option [:template], VALID_TEMPLATES, "template" basesystems = @core.basesystems if basesystems.empty? STDERR.puts "No basesystem found, contact server administrator" exit 1 end if [:basesystem].nil? # attempt to find latest version of openSUSE basesystem = basesystems.find_all{|a| a =~ /\d+\.\d+/}.sort.last if basesystem.nil? # apparently this server doesn't offer openSUSE basesystem, so we # present the user with a menu with available choices basesystem = choose do || .header = "Available base systems" .choices *basesystems .prompt = "Which base system do you want to use?" end end else basesystem = [:basesystem] end ensure_valid_option basesystem, basesystems, "base system" # Create appliance and add patterns required to build native gems. @core.create_appliance(appliance_name, [:template], basesystem, [:arch]) end |
#download
77 78 79 80 81 82 |
# File 'lib/dister/cli.rb', line 77 def download access_core ensure_appliance_exists ensure_build_exists @core.download(@builds) end |
#format(operation, format = nil)
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/dister/cli.rb', line 94 def format(operation,format = nil) access_core ensure_valid_option operation, %w(add rm list), "operation" if operation == 'list' puts "Available formats:" puts VALID_FORMATS else existing_types = @core..build_types || [] chosen_types = case operation when "add" ensure_valid_option format, VALID_FORMATS, "format" @core..build_types = (existing_types + [format]).uniq when "rm" @core..build_types = (existing_types - [format]) else existing_types end puts "Chosen formats:" puts chosen_types end end |
#info
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/dister/cli.rb', line 165 def info access_core app = Utils::execute_printing_progress "Contacting SUSE Studio" do @core.appliance end puts "Name: #{app.name}" puts "Based on: #{app.parent.name}" if app.builds.empty? puts "No builds yet." else puts "Builds:" app.builds.each do |b| puts " - #{b.image_type}, version #{b.version}" end end puts "Edit url: #{app.edit_url}" end |
#package(operation, *package)
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/dister/cli.rb', line 146 def package operation, *package access_core valid_operations = %w(add rm) ensure_valid_option operation, valid_operations, "operation" case operation when "add" package.each do |p| @core.add_package p end when "rm" package.each do |p| @core.rm_package p end end @core.verify_status puts "Done." end |
#push
137 138 139 140 141 142 143 |
# File 'lib/dister/cli.rb', line 137 def push access_core # Always call 'bundle' to ensure we got the latest version bundled. invoke :bundle ensure_appliance_exists @core.upload_bundled_files end |
#templates
117 118 119 |
# File 'lib/dister/cli.rb', line 117 def templates puts VALID_TEMPLATES.sort end |
#testdrive
85 86 87 88 89 90 |
# File 'lib/dister/cli.rb', line 85 def testdrive access_core ensure_appliance_exists ensure_build_exists @core.testdrive(@builds) end |