class Hulaki::OptionParser

Public Class Methods

new() click to toggle source
# File lib/hulaki/option_parser.rb, line 7
def initialize
  @config = RecursiveOstruct.ostruct(
      {
          to:      [],
          from:    nil,
          subject: 'Mic testing',
          message: 'sample message',
          command: 'help',
          gateway: nil
      })
end

Public Instance Methods

options() click to toggle source
# File lib/hulaki/option_parser.rb, line 24
def options
  OptionParser.new do |opts|
    opts.banner =
        "Usage: \n"\
        "------- Search --------\n"\
        "$ hulaki -s search-string\n"\
        "# Example: Hulaki features fuzzy search\n"\
        "$ hulaki -s smithjohn\n"\
        "$ hulaki -s johsmith\n"\
        "$ hulaki -s smijohnth\n"\
        "\n"\
        "------- Copy PhoneNumber to ClipBoard -----------\n"\
        "$ hulaki -s smithjohn -c \n"\
        "# You will see phone_number of the top result copied to ClipBoard \n"\
        "# Number '+97798xxx66455' is copied to your clipboard\n"\
        "\n"\
        "------- SMS --------\n"\
        "$ hulaki -t +977xxxxxxxxxx -m \"Message to be sent\"\n"\
        "\n"\
        "# You can even select a specific SMS Gateway\n"\
        "$ hulaki -t +977xxxxxxxxxx -m \"Message to be sent\" -g nexmo\n"\
        "$ hulaki -t +61xxxxxxxxxx  -m \"Message to be sent\" -g twilio\n"\
        "$ hulaki -t +1xxxxxxxxxx   -m \"Message to be sent\" -g sparrow\n"\
        "\n"\
        "# You can even broadcast SMSes selecting a specific SMS Gateway\n"\
        "#   However, keep in mind that multiple SMS request will go to the server\n"\
        "$ hulaki -t +977xxxxxxxxxx,+9779832xxxxxx -m \"Message to be sent\" -g nexmo\n"\
        "\n"\
        "# You can also change the name that appears on recipient's Phone using `-f` switch. This only works with Nexmo\n"\
        "$ hulaki -t +977xxxxxxxxxx,+9779832xxxxxx -m \"Message to be sent\" -g nexmo -f \"Hero Dai!\"\n"\
        "\n"\
        "------- EMAIL --------\n"\
        "$ hulaki -t someone@example.com -S \"Subject of the email\" -m \"Message to be sent\"\n"\
        "$ hulaki -t someone@example.com --subject \"Subject of the email\" -m \"Message to be sent\"\n"\
        "\n"\
        "# You can even broadcast emails, i.e. mutiple recipients\n"\
        "#   However, keep in mind that multiple SMTP request will go to the server. No `CC`, `BCC` will be used\n"\
        "$ hulaki -t someone@example.com,nextperson@email.com --subject \"Subject of the email\" -m \"Message to be sent\"\n"\
        "\n"\
        "# You can also change your sender id using `-f` switch\n"\
        "$ hulaki -t someone@example.com -S \"Subject of the email\" -m \"Message to be sent\" -f \"My Name<anonymous@example.com>\" \n"\
        "\n"\
        "------- EMAIL TEMPLATES --------\n"\
        "# You are allowed to have an Email template in HTML format at `~/hulaki/template.html.erb` which\n"\
        "#   will be copied when you use `-i` switch. If you have `use_template` setting set to `true` then only\n"\
        "#   you will be able to use the template\n"\
        "$ hulaki -t someone@example.com -S \"Subject of the email\" -m \"Messagopts.to_se to be sent\"\n"



    opts.separator ''
    opts.separator 'Specific options:'

    # This can be list of emails or phonenumbers separated by commas `,`
    opts.on('-t x,y,z', '--to x,y,z', Array, 'list of recipient, can be') do |recipient_list|
      @config.to = recipient_list
    end

    opts.on('-m [Message]', '--message [Message]', String, 'Message to be sent to recipient') do |message|
      @config.message = message
    end
    "\n"\

    opts.on('-S [Subject]', '--subject [Subject]', String, 'Subject to email') do |subject|
      @config.subject = subject
    end

    opts.on('-c', '--copy', nil, 'Copy phone-number at top to ClipBoard; Linux users need to install `xclip`.') do
      @config.copy_phone_number = true
    end

    opts.on('-g [Gateway Name]', '--gateway [Gateway Name]', String, 'Name of the gateway, `nexmo`, `twilio`, `sparrow` are currently supported') do |gateway|
      @config.gateway = gateway
    end

    opts.on('-f [Sender]', '--from [Sender]', String, "name <email> | PhoneNumber; this will take precedence over `from` in `config.yml`.") do |sender|
      @config.from = sender
    end

    opts.on('-s [name/contact]', '--search [name/contact]', String, 'Search keyword') do |search_keyword|
      @config.search_keyword = search_keyword
    end

    # ----------------------------------------------------------------------
    opts.on('-h', '--help', 'Help / Examples') do
      puts Utils.present(opts)
      exit
    end

    opts.on('-l', '--list', 'list all the options available') do
      puts Utils.present(opts)
      exit
    end

    opts.on('-i', '--install', 'Creates ~/hulaki/config.yml, `template.html.erb`. Will ask you if have to replace them') do
      Utils.install_dependencies
      Utils.create_dir
      Utils.start_copying_file
      exit
    end
  end
end
parse(args) click to toggle source
# File lib/hulaki/option_parser.rb, line 19
def parse(args)
  options.parse!(args)
  @config
end