Create a proper executable for qwandry, qw

This commit is contained in:
Adam Sanderson 2010-08-17 21:42:57 -07:00
parent 0306e71f47
commit e5b64406ce
2 changed files with 52 additions and 49 deletions

52
bin/qw
View File

@ -0,0 +1,52 @@
#!/usr/bin/env ruby
# Add qwandry's library to the load path
$: << File.dirname(__FILE__) + '/../lib'
# Require it
require "qwandry"
@qwandry = Qwandry::Launcher.new
load('~/.qwandry/repositories.rb') if File.exists?('~/.qwandry/repositories.rb')
opts = OptionParser.new do |opts|
opts.banner = "Usage: qwandry [options] name [version]"
opts.separator ""
opts.separator "Known Repositories: #{@qwandry.repositories.keys.join(", ")}"
opts.on("-e", "--editor EDITOR", "Use EDITOR to open the package") do |editor|
@qwandry.editor = editor
end
opts.on_tail("-h", "--help", "Show this message") do
puts opts
exit
end
end
opts.parse! ARGV
if ARGV.length != 1
puts opts
exit(1)
end
name = ARGV.pop
packages = @qwandry.find(name)
package = nil
case packages.length
when 0
puts "No packages matched '#{name}'"
exit 404 # Package not found -- hehe, super lame.
when 1
package = packages.first
else
packages.each_with_index do |package, index|
puts "%3d. %s" % [index+1, package.name]
end
print ">> "
index = gets.to_i-1
package = packages[index]
end
@qwandry.launch(package) if package

49
lib/qwandry.rb Executable file → Normal file
View File

@ -19,52 +19,3 @@ module Qwandry
autoload :FlatRepository, "qwandry/flat_repository"
autoload :Package, "qwandry/package"
end
if __FILE__ == $0
@qwandry = Qwandry::Launcher.new
load('~/.qwandry/repositories.rb') if File.exists?('~/.qwandry/repositories.rb')
opts = OptionParser.new do |opts|
opts.banner = "Usage: qwandry [options] name [version]"
opts.separator ""
opts.separator "Known Repositories: #{@qwandry.repositories.keys.join(", ")}"
opts.on("-e", "--editor EDITOR", "Use EDITOR to open the package") do |editor|
@qwandry.editor = editor
end
opts.on_tail("-h", "--help", "Show this message") do
puts opts
exit
end
end
opts.parse! ARGV
if ARGV.length != 1
puts opts
exit(1)
end
name = ARGV.pop
packages = @qwandry.find(name)
package = nil
case packages.length
when 0
puts "No packages matched '#{name}'"
exit 404 # Package not found -- hehe, super lame.
when 1
package = packages.first
else
packages.each_with_index do |package, index|
puts "%3d. %s" % [index+1, package.name]
end
print ">> "
index = gets.to_i-1
package = packages[index]
end
@qwandry.launch(package) if package
end