slack_trello 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7649664550dd66220778af08612adc57e80d69fd
4
- data.tar.gz: 500773ef5e8678324c5c26d79691970355536847
3
+ metadata.gz: c412d076e38c5e27813959ae64e1db1c0daeb607
4
+ data.tar.gz: e714b20fe5e54749f90f046b84cf76b5fa272b51
5
5
  SHA512:
6
- metadata.gz: 4c0f0765f68f76eca2e03bd1974fdb60bd7591e19075332800f6166ca10852bc54a7000ad73afeb913c8ade9bb9111c061e49512e506c7493ab247f1b8a1b38f
7
- data.tar.gz: 9707ec02efd060ab377c4fd302200bd637cf91b2f71dfe042d9dc6b0ce5284f3f3ee6b286d2e00a19b09f579a4846147cf2fb8abb504c9d7b60d4a44f4d07e9f
6
+ metadata.gz: 173e23b8b2c3f2384dbad5cef280f64c99a69bc81645510f38b071952528290424bc32c2696f119065fecacac42e4e99bad9b49c3f645da0c1e40d9784a4726d
7
+ data.tar.gz: 53b536445db574c7352d456a1c258c8a2fbc3f221a2608c499e58521e81c2d1d4571480c68336595b1bbdab0c565458e956321cb43606f834b8a1e0d058b1171
data/lib/slack_trello.rb CHANGED
@@ -10,6 +10,7 @@ require "slack_trello/create_trello_card"
10
10
  require "slack_trello/copy_cards"
11
11
  require "slack_trello/speaker"
12
12
 
13
+ require "slack_trello/copy_cards_command"
13
14
  require "slack_trello/create_card_command"
14
15
  require "slack_trello/work_command"
15
16
  require "slack_trello/retro_command"
@@ -11,8 +11,8 @@ module SlackTrello; class CopyCards
11
11
 
12
12
  def run
13
13
  source_cards.each do |source_card|
14
- creator = CreateTrelloCard.new(destination_board, destination_list, source_card.name)
15
- creator.card
14
+ creator = CreateTrelloCard.new(board_name: destination_board, list_name: destination_list, card_name: source_card.name)
15
+ creator.first_or_create
16
16
  end
17
17
  end
18
18
 
@@ -0,0 +1,70 @@
1
+ module SlackTrello; class CopyCardsCommand
2
+
3
+ include TextParser
4
+
5
+ attr_reader :parser, :webhook_url
6
+
7
+ def initialize(args, webhook_url)
8
+ @parser = ResponseParser.new(args)
9
+ @webhook_url = webhook_url
10
+ end
11
+
12
+ def run
13
+ return help_message unless valid_text_format?
14
+ return help_message unless num_args == 4
15
+
16
+ card_copier.run
17
+ speaker.speak success_message
18
+ "You should see a notification with a link. If not, the card might not have been created."
19
+ end
20
+
21
+ private
22
+
23
+ def help_message
24
+ %{:cry: Invalid format
25
+ Your message: #{parser.text}
26
+ Example: /copy_cards (source_board, source_list, destination_board, destination_list)
27
+ }
28
+ end
29
+
30
+ def speaker
31
+ args = {
32
+ webhook_url: webhook_url,
33
+ channel: parser.channel_name,
34
+ username: parser.user_name
35
+ }
36
+ Speaker.new(args)
37
+ end
38
+
39
+ def card_copier
40
+ args = {
41
+ source_board_name: source_board_name,
42
+ source_list_name: source_list_name,
43
+ destination_board_name: destination_board_name,
44
+ destination_list_name: destination_list_name
45
+ }
46
+ @card_copier ||= CardCopier.new(args)
47
+ end
48
+
49
+ def source_board_name
50
+ args[0]
51
+ end
52
+
53
+ def source_list_name
54
+ args[1]
55
+ end
56
+
57
+ def destination_board_name
58
+ args[2]
59
+ end
60
+
61
+ def destination_list_name
62
+ args[3]
63
+ end
64
+
65
+ def success_message
66
+ ":mega: [#{parser.user_name}] has copied all the cards from the #{source_list_name} of the #{source_board_name} to the #{destination_list_name} of the #{destination_board_name}"
67
+ end
68
+
69
+ end; end
70
+
@@ -12,7 +12,6 @@ module SlackTrello; class CreateCardCommand
12
12
  def run
13
13
  return help_message unless valid_text_format?
14
14
  return help_message unless num_args == 2
15
- return board_not_found_message unless trello_card_creator.trello_board
16
15
  return list_not_found_message unless trello_card_creator.trello_list
17
16
 
18
17
  trello_card
@@ -50,7 +49,7 @@ For example, Some Board Name => some_board_name
50
49
  end
51
50
 
52
51
  def trello_card
53
- trello_card_creator.card
52
+ @card ||= trello_card_creator.first_or_create
54
53
  end
55
54
 
56
55
  def trello_board_name
@@ -61,10 +60,6 @@ For example, Some Board Name => some_board_name
61
60
  args[1]
62
61
  end
63
62
 
64
- def board_not_found_message
65
- "A Trello board named '#{trello_board_name}' must be created and the Trello user in the codebase must be added to the board for this command to function for this Slack room."
66
- end
67
-
68
63
  def list_not_found_message
69
64
  "A Trello list named #{trello_list_name} must be added to the '#{trello_board_name}' board for this command to function."
70
65
  end
@@ -8,12 +8,17 @@ module SlackTrello; class CreateTrelloCard
8
8
  @card_name = args.fetch(:card_name)
9
9
  end
10
10
 
11
- def card
12
- return @card if @card
13
- @card = Trello::Card.new
14
- @card.name = card_name
15
- @card.list_id = trello_list.id
16
- @card.save
11
+ def first_or_create
12
+ card = TrelloLookup.card(board_name, list_name, card_name)
13
+ return card if card
14
+ create_card
15
+ end
16
+
17
+ def create_card
18
+ card = Trello::Card.new
19
+ card.name = card_name
20
+ card.list_id = trello_list.id
21
+ card.save
17
22
  end
18
23
 
19
24
  def trello_list
@@ -12,7 +12,6 @@ module SlackTrello; class RetroCommand
12
12
  def run
13
13
  return help_message unless valid_text_format?
14
14
  return help_message unless num_args == 1
15
- return board_not_found_message unless trello_card_creator.trello_board
16
15
  return list_not_found_message unless trello_card_creator.trello_list
17
16
 
18
17
  trello_card
@@ -51,7 +50,7 @@ For example, Some List Name => some_list_name
51
50
  end
52
51
 
53
52
  def trello_card
54
- trello_card_creator.card
53
+ @card ||= trello_card_creator.first_or_create
55
54
  end
56
55
 
57
56
  def trello_board_name
@@ -62,10 +61,6 @@ For example, Some List Name => some_list_name
62
61
  args[0]
63
62
  end
64
63
 
65
- def board_not_found_message
66
- "A Trello board named '#{trello_board_name}' must be created and the Trello user in the codebase must be added to the board for this command to function for this Slack room."
67
- end
68
-
69
64
  def list_not_found_message
70
65
  "A Trello list named #{trello_list_name} must be added to the '#{trello_board_name}' board for this command to function."
71
66
  end
@@ -3,18 +3,25 @@ module SlackTrello; class TrelloLookup
3
3
  class << self
4
4
 
5
5
  def board(board_name)
6
- @board ||= Trello::Board.all.find do |b|
6
+ Trello::Board.all.find do |b|
7
7
  spaceify(b.name) == spaceify(board_name) && b.closed == false
8
8
  end
9
9
  end
10
10
 
11
11
  def list(board_name, list_name)
12
12
  b = board(board_name)
13
- @list ||= b.lists.find do |l|
13
+ b.lists.find do |l|
14
14
  spaceify(l.name) == spaceify(list_name)
15
15
  end
16
16
  end
17
17
 
18
+ def card(board_name, list_name, card_name)
19
+ l = list(board_name, list_name)
20
+ l.cards.find do |c|
21
+ spaceify(c.name) == spaceify(card_name)
22
+ end
23
+ end
24
+
18
25
  def spaceify(str)
19
26
  str.gsub(/-|_/, " ").downcase
20
27
  end
@@ -1,3 +1,3 @@
1
1
  module SlackTrello
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -8,7 +8,6 @@ module SlackTrello; class WorkCommand
8
8
  end
9
9
 
10
10
  def run
11
- return board_not_found_message unless trello_card_creator.trello_board
12
11
  return list_not_found_message unless trello_card_creator.trello_list
13
12
 
14
13
  trello_card
@@ -37,7 +36,7 @@ module SlackTrello; class WorkCommand
37
36
  end
38
37
 
39
38
  def trello_card
40
- trello_card_creator.card
39
+ @card ||= trello_card_creator.first_or_create
41
40
  end
42
41
 
43
42
  def trello_board_name
@@ -48,10 +47,6 @@ module SlackTrello; class WorkCommand
48
47
  'From Chat'
49
48
  end
50
49
 
51
- def board_not_found_message
52
- "A Trello board named '#{trello_board_name}' must be created and the Trello user in the codebase must be added to the board for the work command to function for this Slack room."
53
- end
54
-
55
50
  def list_not_found_message
56
51
  "A Trello list named #{trello_list_name} must be added to the '#{trello_board_name}' board for the work command to function."
57
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_trello
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Powers
@@ -99,6 +99,7 @@ files:
99
99
  - bin/setup
100
100
  - lib/slack_trello.rb
101
101
  - lib/slack_trello/copy_cards.rb
102
+ - lib/slack_trello/copy_cards_command.rb
102
103
  - lib/slack_trello/create_card_command.rb
103
104
  - lib/slack_trello/create_trello_card.rb
104
105
  - lib/slack_trello/response_parser.rb