stormbytes

Untitled

Jun 1st, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.69 KB | None | 0 0
  1. #!/usr/local/bin/ruby
  2.  
  3. Version = 'ports v.0.1'
  4.  
  5. require 'optparse'
  6. require 'open3'
  7.  
  8. options = {}
  9.  
  10. parser = OptionParser.new do |opts|
  11.   opts.banner = "usage: rd ports [options]"
  12.  
  13.   opts.on('-i', '--index PORT', Integer, 'Returns port-path for given index') do |index|
  14.     options[:index] = index
  15.   end
  16.  
  17.   opts.on('-c', '--check PATH', 'Prints ports list-index if PATH is valid port path') do |path|
  18.     options[:check] = path
  19.      # TODO !!
  20.   end
  21.  
  22.   opts.on('-v', '--version', 'Show script version') do
  23.     puts Version  
  24.     exit
  25.   end
  26.  
  27.   opts.on('-h', '--help', 'Show help screen') do
  28.     puts opts
  29.     exit
  30.   end
  31. end
  32.  
  33. begin
  34.   parser.parse!
  35. rescue OptionParser::InvalidOption, OptionParser::MissingArgument, OptionParser::InvalidArgument
  36.   puts $!.to_s
  37.   exit
  38. end  
  39.  
  40. # Scan ports
  41. ports = []
  42. stdout, stderr, status = Open3.capture3("ls /dev/*usb*")
  43. if (status.success?)
  44.   ports += stdout.split("\n")
  45. end
  46.  
  47. # No ports available? => terminate w/error
  48. if ports.empty?
  49.   STDERR.puts "No USB devices/ports detected"
  50.   exit 1
  51. end
  52.  
  53. # checks port-path against available ports,
  54. # returns ports list index if path is valid
  55. # TODO:
  56. if (options.has_key?(:check))
  57.   puts 'port PATH has been triggered'
  58.   exit
  59. end
  60.  
  61. # returns port path for option[:index]
  62. if (options.has_key?(:index))
  63.   if (options[:index] < ports.length) #<= index must be within range
  64.     puts ports[options[:index]]
  65.     exit
  66.   else
  67.     STDERR.puts "invalid port list index: #{options[:index]}"
  68.     exit 1
  69.   end
  70. end
  71.  
  72. # default action: returns ports list
  73. puts "....................................."
  74. ports.each_index {|i| puts "[#{i}]: #{ports[i]}"}
  75. puts "....................................."
  76. exit
Advertisement
Add Comment
Please, Sign In to add comment