module License::CommandLine

Public Class Methods

parse(args) click to toggle source
# File lib/license/compatibility.rb, line 88
def self.parse(args)
  options = {}
  option_parser = OptionParser.new do |opts|
    opts.banner = "#{USAGE}\n\n"
    opts.banner += "Arguments:\n"
    opts.banner += "    List of licenses or list of package:license couples (separated by ':').\n"
    opts.banner += "    Example: 'MIT' 'GPL-3.0' or 'my_package:ISC' 'other_pkg:BSD-2-Clause'.\n"
    opts.banner += "    Mixing the two formats is not allowed.\n"
    opts.banner += "    Additional args after a --read option are accepted.\n\n"
    opts.banner += "Options:"

    opts.on('-l', '--list', 'Print the list of supported licenses.') do
      options[:list] = License::Compatibility.license_data
      return options
    end

    opts.on('-r', '--read FILE', 'Read arguments from file.') do |file|
      unless File.exist?(file)
        raise Errno::ENOENT, "#{file}"
      end
      unless File.file?(file)
        raise ArgumentError, "#{file} is a directory, you must specify a regular file"
      end
      options[:read] = file
    end

    opts.on('-v', '--version', "Show the program version (#{License::Compatibility::VERSION}).") do
      options[:version] = "license-compatibility v#{License::Compatibility::VERSION}"
      return options
    end

    opts.on('-h', '--help', 'Print this help.') do
      options[:help] = opts.to_s
      return options
    end
  end
  option_parser.parse!(args)
  return options
end
parse_positional(args) click to toggle source
# File lib/license/compatibility.rb, line 128
def self.parse_positional(args)
  licenses = false
  packages = false
  prepared = []

  args.each { |arg|
    split = arg.split(':', 2)
    if split.length == 2
      prepared.push(split)
      packages = true
    else
      prepared += split
      licenses = true
    end
    raise ArgumentError, 'do not mix license and package:license arguments' if (licenses && packages)
  }

  if packages
    return 'packages', prepared
  elsif licenses
    return 'licenses', prepared
  else
    return 'unknown', prepared
  end
end