lib/travis/cli/settings.rb in travis-1.6.15.travis.565.6 vs lib/travis/cli/settings.rb in travis-1.6.15.travis.566.6

- old
+ new

@@ -5,37 +5,60 @@ class Settings < RepoCommand attr_accessor :setting description "access repository settings" on('--keys', 'always use setting key instead of description') - on('-t', '--enable', 'enable the setting(s)') { |c| c.setting = true } - on('-f', '--disable', 'disable the setting(s)') { |c| c.setting = false } + on('-t', '--enable', 'enable boolean setting(s)') { |c | c.setting = true } + on('-f', '--disable', 'disable boolean setting(s)') { |c | c.setting = false } + on('-s', '--set VALUE', 'set to given value') { |c,v| c.setting = v } on('-c', '--configure', 'change settings interactively') DESCRIPTIONS = { :builds_only_with_travis_yml => "Only run builds with a .travis.yml", :build_pushes => "Build pushes", - :build_pull_requests => "Build pull requests" + :build_pull_requests => "Build pull requests", + :maximum_number_of_builds => "Maximum number of concurrent builds" } 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? - repository.settings[key] = agree("#{describe(key, "enable #{key}")}? ") do |q| - default = setting.nil? ? value : setting - q.default = default ? "yes" : "no" + 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 color("[#{value ? "+" : "-"}] ", [:bold, value ? :green : :red]) << descr + 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 + + def boolean?(key) + key.to_sym != :maximum_number_of_builds + end + + 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 def all_settings? agree("Really #{setting ? "enable" : "disable"} all settings? ") do |q| q.default = "no"