#!/usr/bin/env ruby require 'randomua' require 'docopt' doc = <<~DOCOPT randomua (random user agent) | Generate a random user agent string. Usage: randomua [options] randomua -h | --help randomua --version Options: -c, --crawler Gereate a random crawler user agent string -d, --desktop-browser Gereate a random desktop browser user agent string -m, --mobile-browser Gereate a random mobile browser user agent string -o, --console Gereate a random console user agent string -f, --offline-browser Gereate a random offline browser user agent string -e, --email-client Gereate a random email client user agent string -l, --link-checker Gereate a random link checker user agent string -a, --email-collector Gereate a random email collector user agent string -v, --validator Gereate a random validator user agent string -r, --feed-reader Gereate a random feed reader user agent string -i, --library Gereate a random library user agent string -u, --cloud-platform Gereate a random cloud platform user agent string -t, --other Gereate a random other user agent string -s, --version Print version and exit -h, --help Show this message Examples: randomua -d DOCOPT begin args = Docopt.docopt(doc, version: Randomua::VERSION) # use case 1, using the tool if args.empty? puts UserAgentRandomizer::UserAgent.fetch.string else type = 'crawler' if args['--crawler'] type = 'desktop_browser' if args['--desktop-browser'] type = 'mobile_browser' if args['--mobile-browser'] type = 'console' if args['--console'] type = 'offline_browser' if args['--offline-browser'] type = 'email_client' if args['--email-client'] type = 'link_checker' if args['--link-checker'] type = 'email_collector' if args['--email-collector'] type = 'validator' if args['--validator'] type = 'feed_reader' if args['--feed-reader'] type = 'library' if args['--library'] type = 'cloud_platform' if args['--cloud-platform'] type = 'other' if args['--other'] puts UserAgentRandomizer::UserAgent.fetch(type: type).string end # use case 2, help: already handled by docopt # use case 3, version: already handled by docopt rescue Docopt::Exit => e puts e.message end