Class: Travis::CLI::Settings

Inherits:
RepoCommand show all
Defined in:
lib/travis/cli/settings.rb

Constant Summary collapse

DESCRIPTIONS =
{
  :builds_only_with_travis_yml => "Only run builds with a .travis.yml",
  :build_pushes                => "Build pushes",
  :build_pull_requests         => "Build pull requests",
  :maximum_number_of_builds    => "Maximum number of concurrent builds"
}

Constants inherited from RepoCommand

RepoCommand::GIT_REGEX, RepoCommand::TRAVIS

Constants inherited from Command

Command::DAY, Command::HOUR, Command::MINUTE, Command::WEEK

Constants included from Tools::Assets

Tools::Assets::BASE

Instance Attribute Summary collapse

Attributes inherited from RepoCommand

#slug

Attributes inherited from ApiCommand

#enterprise_name, #session

Attributes inherited from Command

#arguments, #config, #debug, #force_interactive, #formatter, #input, #output

Instance Method Summary collapse

Methods inherited from RepoCommand

#repository, #setup

Methods inherited from ApiCommand

#authenticate, #detected_endpoint?, #endpoint_config, #enterprise?, #initialize, #org?, #pro?, #setup, #sync

Methods included from Travis::Client::Methods

#access_token, #access_token=, #account, #accounts, #api_endpoint, #api_endpoint=, #artifact, #broadcasts, #build, #cancel, #explicit_api_endpoint?, #github_auth, #hooks, #job, #lint, #listen, #repo, #repos, #restart, #user

Methods inherited from Command

abstract, abstract?, #check_completion, #check_ruby, #check_version, #command_name, command_name, #debug?, description, #execute, #help, #info, #initialize, #last_check, #on_signal, #parse, #say, #setup, skip, subcommands, #terminal, #time, #usage, #usage_for, #write_to

Methods included from Parser

#new, #on, #on_initialize

Methods included from Tools::Assets

#asset, #asset_path

Constructor Details

This class inherits a constructor from Travis::CLI::ApiCommand

Instance Attribute Details

#settingObject

Returns the value of attribute setting


6
7
8
# File 'lib/travis/cli/settings.rb', line 6

def setting
  @setting
end

Instance Method Details

#all_settings?Boolean

Returns:

  • (Boolean)

63
64
65
66
67
# File 'lib/travis/cli/settings.rb', line 63

def all_settings?
  agree("Really #{setting ? "enable" : "disable"} all settings? ") do |q|
    q.default = "no"
  end
end

#boolean?(key) ⇒ Boolean

Returns:

  • (Boolean)

51
52
53
# File 'lib/travis/cli/settings.rb', line 51

def boolean?(key)
  key.to_sym != :maximum_number_of_builds
end

#describe(key, description = key) ⇒ Object


69
70
71
72
73
74
# File 'lib/travis/cli/settings.rb', line 69

def describe(key, description = key)
  return description if keys?
  desc = DESCRIPTIONS[key.to_sym]
  desc &&= yield(desc) if block_given?
  desc || description
end

#format_value(value) ⇒ Object


55
56
57
58
59
60
61
# File 'lib/travis/cli/settings.rb', line 55

def format_value(value)
  case value
  when false, nil then color("[-]", [ :bold, :red   ])
  when true       then color("[+]", [ :bold, :green ])
  else color(value.to_s.rjust(3),    [ :bold, :blue  ])
  end
end

#run(*keys) ⇒ Object


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/travis/cli/settings.rb', line 22

def run(*keys)
  exit 1 if interactive? and keys.empty? and !setting.nil? and !all_settings? and !configure?
  authenticate
  say repository.slug, "Settings for %s:"
  repository.settings.to_h.each do |key, value|
    next unless keys.empty? or keys.include? key
    if configure?
      if boolean? key
        repository.settings[key] = agree("#{describe(key, "enable #{key}")}? ") do |q|
          default   = setting.nil? ? value : setting
          q.default = default ? "yes" : "no"
        end
      else
        repository.settings[key] = ask("#{describe(key,  "Value for #{key}")}: ", Integer) do |q|
          default   = setting.to_i if setting and setting.respond_to? :to_i
          default ||= value
          default ||= 0
          q.default = default
        end
      end
    else
      value  = repository.settings[key] = setting unless setting.nil?
      descr  = color(describe(key, color(key, :info)) { |s| key.ljust(30) + " " + color(s, [:reset, :bold]) }, :info)
      say format_value(value) << " " << descr
    end
  end
  repository.settings.save if configure? or !setting.nil?
end