stormbytes

Untitled

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