class Pendulum::Command::Apply::Schedule
Attributes
client[RW]
color[RW]
dry_run[RW]
force[RW]
from[RW]
to[RW]
Public Class Methods
new(client, from, to, dry_run=false, force=false, color=false)
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 7 def initialize(client, from, to, dry_run=false, force=false, color=false) self.client = client self.from = from self.to = to self.dry_run = dry_run self.force = force self.color = color end
Public Instance Methods
apply()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 16 def apply case when will_create? then create when will_update? then update when will_delete? then delete end end
Private Instance Methods
color?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 140 def color? color end
colorize(message, color)
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 161 def colorize(message, color) return message unless color? h.color message, color end
create()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 26 def create puts message_for_create client.create_schedule(to.name, to.to_params) unless dry_run? end
default_params()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 144 def default_params { database: '', query: nil, retry_limit: 0, priority: 0, cron: nil, timezone: 'Asia/Tokyo', # TODO: require timezone. delay: 0, result: '' } end
delete()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 39 def delete puts message_for_delete client.delete_schedule(from.name) if force? && !dry_run? end
diff()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 60 def diff return {} unless will_update? @diff ||= begin default_params.merge(to.to_params).select do |k, v| if k == :result || k == :result_json result_url_changed?(from.result_url, v) else v != from.send(k) end end end end
dry_run?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 132 def dry_run? dry_run end
force?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 136 def force? force end
h()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 166 def h @h ||= HighLine.new end
has_diff?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 56 def has_diff? !diff.empty? end
masked_diff()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 74 def masked_diff return diff unless diff.key?(:result) masked = diff.dup if masked[:result].start_with?('{') || diff.key?(:result_json) hashed_result = JSON.parse(masked[:result]) hashed_result.delete('apikey') masked[:result] = hashed_result.to_json else uri = URI.parse(masked[:result]) uri.password = '***' if uri.user masked[:result] = uri.to_s end masked end
message_for(action)
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 117 def message_for(action) message_with_dry_run "#{action.to_s.capitalize} schedule: #{name}" end
message_for_create()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 92 def message_for_create colorize message_for(:create), :cyan end
message_for_delete()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 104 def message_for_delete if force? colorize message_for(:delete), :red else colorize message_with_dry_run("Undefined schedule (pass `--force` if you want to remove): #{name}"), :yellow end end
message_for_diff()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 121 def message_for_diff message = masked_diff.map do |name, value| " set #{name}=#{value}" end.join("\n") colorize message, :green end
message_for_update()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 96 def message_for_update if force? || has_diff? colorize message_for(:update), :green else colorize message_with_dry_run("No change schedule: #{name}"), :blue end end
message_with_dry_run(message)
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 112 def message_with_dry_run(message) message += ' (dry-run)' if dry_run? message end
name()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 128 def name (from && from.name) || (to && to.name) end
result_url_changed?(from_url, to_url)
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 157 def result_url_changed?(from_url, to_url) Apply::ResultURL.new(client, from_url, to_url).changed? end
update()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 31 def update puts message_for_update puts message_for_diff if has_diff? if force? || has_diff? client.update_schedule(to.name, to.to_params) unless dry_run? end end
will_create?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 44 def will_create? !from && to end
will_delete?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 52 def will_delete? from && !to end
will_update?()
click to toggle source
# File lib/pendulum/command/apply/schedule.rb, line 48 def will_update? from && to end