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 |
# 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' opts.define_head 'Usage: pandata <email|webname> [options]' opts.separator "\nExamples:\n pandata [email protected] --liked_tracks\n pandata my_webname --all -o my_pandora_data.txt\n pandata my_webname -lL --json\n\nOptions:\n END\n\n opts.on('--all', 'Get all data') do\n get_all_data = true\n end\n\n opts.on('-F', '--followers', \"Get all user's followers\") do\n options[:data_to_get] << :followers\n end\n\n opts.on('-f', '--following', 'Get all users being followed by user') do\n options[:data_to_get] << :following\n end\n\n opts.on('-j', '--json', 'Return the results as JSON') do\n options[:return_as_json] = true\n end\n\n opts.on('-L', '--liked_artists', 'Get all liked artists') do\n options[:data_to_get] << :liked_artists\n end\n\n opts.on('-l', '--liked_tracks', 'Get all liked tracks') do\n options[:data_to_get] << :liked_tracks\n end\n\n opts.on('-m', '--liked_albums', 'Get all liked albums') do\n options[:data_to_get] << :liked_albums\n end\n\n opts.on('-n', '--liked_stations', 'Get all liked stations') do\n options[:data_to_get] << :liked_stations\n end\n\n opts.on('-o', '--output_file PATH', 'File to output the data into') do |path|\n options[:output_file] = path\n end\n\n opts.on_tail(\"-h\", \"--help\", \"Show this message\") do\n options[:help] = true\n end\n\n opts.on_tail(\"--version\", \"Show version\") do\n options[:version] = true\n end\n end\n\n options[:opts].parse(argv)\n\n # User ID is the first argument.\n options[:user_id] = argv[0]\n\n if get_all_data\n options[:data_to_get] = [\n :liked_tracks,\n :liked_artists,\n :liked_albums,\n :liked_stations,\n :followers,\n :following\n ]\n else\n # Remove any duplicates caused by supplying flags multiple times.\n options[:data_to_get].uniq!\n end\n\n options\nend\n" |