class SC2Cli::Subcommands::League

Public Class Methods

new(configuration:, options:) click to toggle source
# File lib/sc2cli/subcommands/league.rb, line 83
def initialize(configuration:, options:)
  @configuration = configuration

  name   = nil
  random = nil
  region = nil
  season = nil
  type   = nil

  OptionParser.new do |opts|
    opts.banner = "Usage: #{$0} #{self.class.name.split("::").last.downcase} [options]"

    opts.on("-h", "--help", "Prints this help") do
      @@console.info(opts)
      exit
    end

    opts.on("-n", "--name NAME", String, "League name, such as 'gold' or 'silver'.") do |value|
      name = value
    end

    opts.on("-r", "--region REGION", String, "Region name, such as 'eu' or 'us'. Use configuration region by default.") do |value|
      region = Shared::Region.new(name: value)
    end

    opts.on("-R", "--[no-]random", "Specify for randomly assigned teams. Default is arranged teams.") do |value|
      random = value
    end

    opts.on("-s", "--season SEASON", Integer, "Season number.") do |value|
      season = value
    end

    opts.on("-t", "--type TYPE", String, "League type, such as '1v1' or '2v2'. Default is '1v1'.") do |value|
      type = value
    end
  end.parse!

  random ||= @@random
  region ||= @configuration.region
  type   ||= @@type

  @@console.fatal("League name must be specified!") unless name.kind_of?(String)

  @@console.fatal("Specified league name: #{name} is not valid!") unless @@valid_codes.key?(name)
  @@console.fatal("Specified league type: #{type} is not valid!") unless @@valid_types.key?(type)

  name = @@valid_codes[name]

  @@console.fatal("Leagues name resolved from code: #{name} is not valid! This should never happen...") unless @@valid_names.key?(name)

  if random then
    @@console.fatal("There are no randomly assigned teams for leagues of type: #{type}!") unless @@valid_types[type]["random"]
  end

  unless season.kind_of?(Integer) then
    current_season = Shared::Season.new(configuration: @configuration, region: region)
    season = current_season.id
  end

  @name   = name
  @random = random
  @region = region
  @season = season
  @type   = type
end

Public Instance Methods

run() click to toggle source
# File lib/sc2cli/subcommands/league.rb, line 152
def run
  @@console.info("Finding league information:")
  @@console.info(" - Name  : #{@name}")
  @@console.info(" - Random: #{@random.to_s}")
  @@console.info(" - Region: #{@region.description}")
  @@console.info(" - Season: #{@season.to_s}")
  @@console.info(" - Type  : #{@type}")

  api_name   = @@valid_names[@name]["value"].to_s
  api_random = @random ? "1" : "0"
  api_season = @season.to_s
  api_type   = @@valid_types[@type]["value"].to_s

  colour = @@valid_names[@name]["colour"]

  path = "#{@@prefix}/#{api_season}/#{api_type}/#{api_random}/#{api_name}"

  api = Shared::Api.new(configuration: @configuration, region: @region)

  result = api.get(path: path)

  tiers = LeagueShared::LeagueTiers.new(name: @name, colour: colour, json: result)

  @@console.info(tiers.to_s)
end