Class: Pandata::ArgvParser
- Inherits:
-
Object
- Object
- Pandata::ArgvParser
- Defined in:
- lib/pandata/argv_parser.rb
Overview
Parses command-line input.
Class Method Summary collapse
-
.parse(argv) ⇒ Hash
Parses an ARGV array for options.
Class Method Details
.parse(argv) ⇒ Hash
Parses an ARGV array for options.
21 22 23 24 25 26 27 28 29 30 31 32 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/pandata/argv_parser.rb', line 21 def self.parse(argv) = { data_to_get: [] } get_all_data = false [:opts] = OptionParser.new do |opts| opts. = 'Pandata: A tool for downloading Pandora.com data (likes, bookmarks, stations, etc.)' opts.define_head 'Usage: pandata <email|webname> [options]' opts.separator <<-END Examples: pandata [email protected] --liked_tracks pandata my_webname --all -o my_pandora_data.txt pandata my_webname -lLb --json Options: END opts.on('--all', 'Get all data') do get_all_data = true end opts.on('-a', '--recent_activity', 'Get recent activity') do [:data_to_get] << :recent_activity end opts.on('-B', '--bookmarked_artists', 'Get all bookmarked artists') do [:data_to_get] << :bookmarked_artists end opts.on('-b', '--bookmarked_tracks', 'Get all bookmarked tracks') do [:data_to_get] << :bookmarked_tracks end opts.on('-F', '--followers', "Get all user's followers") do [:data_to_get] << :followers end opts.on('-f', '--following', 'Get all users being followed by user') do [:data_to_get] << :following end opts.on('-j', '--json', 'Return the results as JSON') do [:return_as_json] = true end opts.on('-L', '--liked_artists', 'Get all liked artists') do [:data_to_get] << :liked_artists end opts.on('-l', '--liked_tracks', 'Get all liked tracks') do [:data_to_get] << :liked_tracks end opts.on('-m', '--liked_albums', 'Get all liked albums') do [:data_to_get] << :liked_albums end opts.on('-n', '--liked_stations', 'Get all liked stations') do [:data_to_get] << :liked_stations end opts.on('-o', '--output_file PATH', 'File to output the data into') do |path| [:output_file] = path end opts.on('-S', '--playing_station', 'Get currently playing station') do [:data_to_get] << :playing_station end opts.on('-s', '--stations', 'Get all stations') do [:data_to_get] << :stations end opts.on_tail("-h", "--help", "Show this message") do [:help] = true end opts.on_tail("--version", "Show version") do [:version] = true end end [:opts].parse(argv) # User ID is the first argument. [:user_id] = argv[0] if get_all_data [:data_to_get] = [ :recent_activity, :playing_station, :stations, :bookmarked_tracks, :bookmarked_artists, :liked_tracks, :liked_artists, :liked_albums, :liked_stations, :followers, :following ] else # Remove any duplicates caused by supplying flags multiple times. [:data_to_get].uniq! end end |