Sha256: 27e11adba93e2e778a08bff01d36b3f9c5bbe706a11d4c929d22a024ee905d65

Contents?: true

Size: 1.71 KB

Versions: 8

Compression:

Stored size: 1.71 KB

Contents

# Author::    Eric Crane  (mailto:eric.crane@mac.com)
# Copyright:: Copyright (c) 2019 Eric Crane.  All rights reserved.
#
# Arguments (parameters) used to specify functionality.
# These might have come from the CLI or as parameters
# in the constructor.
#
require 'active_support'
require 'colorize'

module Gloo
  module App
    class Args

      attr_reader :switches, :files

      def initialize( params = [] )
        @switches = []
        @files = []

        params.each { |o| process_one_arg( o ) }
        ARGV.each { |o| process_one_arg( o ) }
      end

      # Was the --quiet arg passed?
      def quiet?
        return @switches.include?( 'quiet' )
      end

      #
      # Detect the mode to be run in.
      # Start by seeing if a mode is specified.
      # Then look for the presence of files.
      # Then finally use the default: embedded mode.
      #
      def detect_mode
        mode = if ENV[ 'GLOO_ENV' ] == 'test'
                 Mode::TEST
               elsif @switches.include?( 'version' )
                 Mode::VERSION
               elsif @switches.include?( 'help' )
                 Mode::HELP
               elsif @switches.include?( 'cli' )
                 Mode::CLI
               elsif @switches.include?( 'embed' )
                 Mode::EMBED
               elsif @files.count.positive?
                 Mode::SCRIPT
               else
                 Mode.default_mode
               end
        $log.debug "running in #{mode} mode"

        return mode
      end

      private

      # Process one argument or parameter.
      def process_one_arg( arg )
        if arg.start_with? '--'
          switches << arg[ 2..-1 ]
        else
          files << arg
        end
      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
gloo-0.6.1 lib/gloo/app/args.rb
gloo-0.6.0 lib/gloo/app/args.rb
gloo-0.5.4 lib/gloo/app/args.rb
gloo-0.5.3 lib/gloo/app/args.rb
gloo-0.5.2 lib/gloo/app/args.rb
gloo-0.5.1 lib/gloo/app/args.rb
gloo-0.5.0 lib/gloo/app/args.rb
gloo-0.4.0 lib/gloo/app/args.rb