module Flydata module Command class Setlogdel < Base def run Flydata::Command::Login.new.run unless flydata.credentials.authenticated? # Choose target data_entry data_entry = choose_data_entry return unless data_entry # Confirm and update if confirm_setting data_entry set_log_deletion data_entry end end private def choose_data_entry data_entries = retrieve_data_entries choices = data_entries.map {|e| "#{e['log_path']}\t\t -- Log deletion:#{boolToOnOff e['log_deletion']}" } choices << "Cancel" choice = nil say('Please select your log path for setting log deletion.') newline choose do |menu| menu.index = :letter menu.index_suffix = ") " menu.prompt = "Select item to change log deletion setting: " menu.choices(*choices) {|item| choice = item.split(' ')[0]} end newline data_entries.select{|e| e['log_path'] == choice}.first end def confirm_setting(data_entry) cur_flag = data_entry['log_deletion'] loop do say "Target log path: #{data_entry['log_path']}" say "Now changing log deletion setting: #{boolToOnOff cur_flag} -> #{boolToOnOff !cur_flag}" ans = ask "Are you sure? (yes/no): " if ans.size > 0 case ans[0].downcase when 'y'; return true when 'n'; return false end end say " ! Please answer y[es] or n[o]" newline end end def boolToOnOff(bool) bool ? 'ON' : 'OFF' end def set_log_deletion(data_entry) param = { :data_entry => { 'log_deletion' => !data_entry['log_deletion'] } } url = "/data_entries/#{data_entry['id']}" ret = flydata.put(url, param) raise 'Failed to update the log deletion setting.' unless ret['success'] Flydata::Command::Crontab.new.run if !data_entry['log_deletion'] puts "Update succeeded!" end end end end