Class: Commander::Runner
- Inherits:
-
Object
- Object
- Commander::Runner
- Defined in:
- lib/commander/runner.rb
Instance Attribute Summary collapse
-
#board ⇒ Object
Returns the value of attribute board.
-
#options ⇒ Object
Returns the value of attribute options.
-
#selected_commander ⇒ Object
Returns the value of attribute selected_commander.
-
#users ⇒ Object
Returns the value of attribute users.
Instance Method Summary collapse
-
#add_member_to_card ⇒ Object
Adds commander to Trello Card.
-
#comment_on_card ⇒ Object
Comments on Trello Card.
-
#count_up ⇒ Object
Increments the counter.
-
#delete_assigned_members ⇒ Object
Delete assigned commander from Trello Card.
-
#evaluate_vacations(commander) ⇒ Object
Check for timespans.
-
#find_card ⇒ Object
Finds the Commander Card on Trello.
-
#find_member ⇒ Object
Finds the member on Trello.
-
#import ⇒ Object
Imports TrelloConnection.
-
#initialize(opts = {}) ⇒ Runner
constructor
Init.
-
#list_all_members ⇒ Object
List all available Users.
-
#manipulate_trello ⇒ Object
All Trello actions.
-
#parse_vacations ⇒ Object
Parsing vacation to computable format.
-
#select_commander ⇒ Object
Sorting logic.
-
#set_commander ⇒ Object
Steps.
-
#set_vacation_flag(commander, state) ⇒ Object
Sets :vacation true if vacation.
-
#show_status(commander) ⇒ Object
Prints out the status.
-
#update_vacations ⇒ Object
Updates all vacations.
-
#write_attributes ⇒ Object
And writes.
-
#write_to_file(filename, content) ⇒ Object
Writes to yaml.
Constructor Details
#initialize(opts = {}) ⇒ Runner
Init
19 20 21 22 23 24 |
# File 'lib/commander/runner.rb', line 19 def initialize(opts = {}) @options = opts @options[:force] = opts[:force] @selected_commander = opts[:force] || opts[:status] || opts[:vacation] @users = YAML.load_file("#{File.join(ENV['HOME'])}/.config/happy-commander/members.yml") end |
Instance Attribute Details
#board ⇒ Object
Returns the value of attribute board.
16 17 18 |
# File 'lib/commander/runner.rb', line 16 def board @board end |
#options ⇒ Object
Returns the value of attribute options.
16 17 18 |
# File 'lib/commander/runner.rb', line 16 def @options end |
#selected_commander ⇒ Object
Returns the value of attribute selected_commander.
16 17 18 |
# File 'lib/commander/runner.rb', line 16 def selected_commander @selected_commander end |
#users ⇒ Object
Returns the value of attribute users.
16 17 18 |
# File 'lib/commander/runner.rb', line 16 def users @users end |
Instance Method Details
#add_member_to_card ⇒ Object
Adds commander to Trello Card
113 114 115 |
# File 'lib/commander/runner.rb', line 113 def add_member_to_card @trello.add_commander_to_card(find_member, @card) end |
#comment_on_card ⇒ Object
Comments on Trello Card
150 151 152 153 |
# File 'lib/commander/runner.rb', line 150 def comment_on_card @comment_string = "@#{@users[@selected_commander][:trello_name]} is your commanding officer for the next 7 Days." @trello.comment_on_card(@comment_string, @card) end |
#count_up ⇒ Object
Increments the counter
133 134 135 |
# File 'lib/commander/runner.rb', line 133 def count_up users[@selected_commander][:times_commander] += 1 end |
#delete_assigned_members ⇒ Object
Delete assigned commander from Trello Card
108 109 110 |
# File 'lib/commander/runner.rb', line 108 def delete_assigned_members @card.members.each{|member| @card.remove_member member} end |
#evaluate_vacations(commander) ⇒ Object
Check for timespans
62 63 64 65 66 67 68 69 |
# File 'lib/commander/runner.rb', line 62 def evaluate_vacations(commander) parse_vacations.each do |check| check[1] = check[0] unless check[1] # Rewrite if statement with catch to prevent this error? if (check[0]..check[1]).cover?(Date.today) set_vacation_flag(commander, 'true') end end end |
#find_card ⇒ Object
Finds the Commander Card on Trello
123 124 125 |
# File 'lib/commander/runner.rb', line 123 def find_card @card = @trello.find_card_by_id(CONFIG['card_id']) # replace when move to real board end |
#find_member ⇒ Object
Finds the member on Trello
128 129 130 |
# File 'lib/commander/runner.rb', line 128 def find_member @trello.find_member_by_username(users[@selected_commander][:trello_name]) end |
#import ⇒ Object
Imports TrelloConnection
145 146 147 |
# File 'lib/commander/runner.rb', line 145 def import @trello = Commander::TrelloConnection.new end |
#list_all_members ⇒ Object
List all available Users
118 119 120 |
# File 'lib/commander/runner.rb', line 118 def list_all_members @users.each { |x| puts "-#{x.first}"} end |
#manipulate_trello ⇒ Object
All Trello actions
38 39 40 41 42 |
# File 'lib/commander/runner.rb', line 38 def manipulate_trello comment_on_card delete_assigned_members add_member_to_card end |
#parse_vacations ⇒ Object
Parsing vacation to computable format
72 73 74 75 |
# File 'lib/commander/runner.rb', line 72 def parse_vacations split = @vacations.map { |x| x.split(' - ') } split.map { |x| x.map { |b| Date.parse(b) } } end |
#select_commander ⇒ Object
Sorting logic
78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/commander/runner.rb', line 78 def select_commander @selected_commander = Hash[@users.select { |_, v| !v[:vacation] }].sort_by{ |_, v| v[:times_commander] } if @selected_commander.count > 1 if @selected_commander[0][1][:times_commander] == @selected_commander[1][1][:times_commander] @selected_commander = @selected_commander.sort_by { |_,v| v[:date] }[0][0] else @selected_commander = @selected_commander[0][0] end else @selected_commander = @selected_commander[0][0] end write_attributes end |
#set_commander ⇒ Object
Steps
27 28 29 30 31 32 33 34 35 |
# File 'lib/commander/runner.rb', line 27 def set_commander import find_card update_vacations select_commander if @options[:auto] write_attributes if @options[:force] manipulate_trello puts "Chose: #{@selected_commander}" end |
#set_vacation_flag(commander, state) ⇒ Object
Sets :vacation true if vacation
55 56 57 58 59 |
# File 'lib/commander/runner.rb', line 55 def set_vacation_flag(commander, state) Commander::Helpers.to_boolean(state) puts "#{commander} is on vacation" @users[commander][:vacation] = true end |
#show_status(commander) ⇒ Object
Prints out the status
93 94 95 96 97 |
# File 'lib/commander/runner.rb', line 93 def show_status(commander) puts "#{commander} was #{@users[commander][:times_commander] } times Commanding officer of the week." puts "#{commander} is currently on vacation" if @users[commander][:vacation] @users[commander][:vacations].each { |x| puts x} end |
#update_vacations ⇒ Object
Updates all vacations
45 46 47 48 49 50 51 52 |
# File 'lib/commander/runner.rb', line 45 def update_vacations self.users.keys.each do |name| @vacations = Commander::Vacations.find_vacations(self.users[name][:tel_name]) #tel_name evaluate_vacations(name) @users[name][:vacations] = @vacations end write_to_file('members', @users.to_yaml) end |
#write_attributes ⇒ Object
And writes
100 101 102 103 104 105 |
# File 'lib/commander/runner.rb', line 100 def write_attributes users[@selected_commander][:vacation] = false users[@selected_commander][:times_commander] = count_up users[@selected_commander][:date] = Time.now write_to_file('members', @users.to_yaml) end |
#write_to_file(filename, content) ⇒ Object
Writes to yaml
138 139 140 141 142 |
# File 'lib/commander/runner.rb', line 138 def write_to_file(filename, content) File.open("#{File.join(Dir.home)}/.config/happy-commander/#{filename}.yml", 'w') do |f| f.write(content) end end |