trello_cli 0.2.1 → 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: 9f6f168bd026bf25fdcd47f9f589a5837e1339d8
4
- data.tar.gz: dcff0a71503befe5a480088b17ea2835e9f9d548
3
+ metadata.gz: 67d3269ab8c44f68e1ecdadb52a096162df122d3
4
+ data.tar.gz: 0995679927099f04e253b604d145f8d414665c18
5
5
  SHA512:
6
- metadata.gz: 081b31895dd730abd67700638f2155f0b50c6c120f59bac61d99f7fa62c67eb7e7e3a21d57e4dbb5b556dd87b4fd165ce4f3dfacc0896ee2495d30f79162f1df
7
- data.tar.gz: 70fbeb8cbf808f989c9e30c56bfd5b6529772636cfec2a04636d213aa639d979780221890bfecf6c4b00c441493e580c9115529a88254961e1a3168a911aeec2
6
+ metadata.gz: a52aaeac10cf59ac1fdf54e614c83bcd3cbf0703ce545e3b699cdbc146ac74705847dd9b4701e1ab5d771c0789f31dac790d23349de5de56b6f8fe9c716dd21c
7
+ data.tar.gz: 01a9dcce612760fd26d7e3c3b83efff6cb683df5d9d394d73c81dd9430aab96a374d01303d3a7610064353b9bdbbdad13ffbd1e152e46a7adba33b1f60ae689b
@@ -1,3 +1,8 @@
1
+ ## 0.3.0:
2
+
3
+ * Add ability to assign member to card on creation
4
+ * Updated to ruby-trello 1.1.1
5
+
1
6
  ## 0.2.1:
2
7
 
3
8
  * Bug fix in listing closed boards
@@ -1,4 +1,5 @@
1
1
  require "trello_cli/cli"
2
+ require "trello_cli/errors"
2
3
  require "trello_cli/requests"
3
4
  require "trello_cli/version"
4
5
 
@@ -4,7 +4,7 @@ module TrelloCli
4
4
  class Create
5
5
 
6
6
  def initialize
7
- @options = {}
7
+ @options = { members: [] }
8
8
  end
9
9
 
10
10
  def run
@@ -42,6 +42,10 @@ module TrelloCli
42
42
  @options[:list_id] = l
43
43
  end
44
44
 
45
+ opts.on("-m", "--member [MEMBER_NAME]", "Member name to assign to card") do |m|
46
+ @options[:members] << m
47
+ end
48
+
45
49
  opts.on("-n", "--name [NAME]", "Name Of Card") do |n|
46
50
  @options[:name] = n
47
51
  end
@@ -8,6 +8,9 @@ module TrelloCli
8
8
  def create
9
9
  ensure_credential_envs_set
10
10
  TrelloCli::CLI::Card::Create.new.run
11
+ rescue TrelloCli::Errors => e
12
+ puts "error: #{e}"
13
+ exit 1
11
14
  end
12
15
 
13
16
  def list
@@ -0,0 +1,4 @@
1
+ module TrelloCli
2
+ class Errors < StandardError
3
+ end
4
+ end
@@ -1,6 +1,7 @@
1
1
  require 'trello'
2
2
 
3
3
  require 'trello_cli/requests/shared'
4
+ require 'trello_cli/requests/members'
4
5
 
5
6
  require 'trello_cli/requests/create_card'
6
7
  require 'trello_cli/requests/move_card'
@@ -9,13 +9,34 @@ module TrelloCli
9
9
  end
10
10
 
11
11
  def create(args)
12
- card = Trello::Card.new 'name' => args[:name],
13
- 'desc' => args[:description],
14
- 'idBoard' => args[:board_id],
15
- 'idList' => args[:list_id]
12
+ @board_id = args[:board_id]
13
+
14
+ args[:members].each do |member_username|
15
+ unless members.member_exists_in_board? member_username
16
+ msg = "member '#{member_username}' does not exist in board '#{@board_id}'."
17
+ raise Errors.new msg
18
+ end
19
+ end
20
+
21
+ member_ids = args[:members].map do |member_username|
22
+ m = members.find_member_by_username_in_board member_username
23
+ m.attributes[:id]
24
+ end
25
+
26
+ card = Trello::Card.new 'name' => args[:name],
27
+ 'desc' => args[:description],
28
+ 'idBoard' => @board_id,
29
+ 'idList' => args[:list_id],
30
+ 'idMembers' => member_ids.join(",")
16
31
  card.save
17
32
  end
18
33
 
34
+ private
35
+
36
+ def members
37
+ @members ||= Members.new @board_id
38
+ end
39
+
19
40
  end
20
41
  end
21
42
  end
@@ -0,0 +1,41 @@
1
+ module TrelloCli
2
+ module Requests
3
+ class Members
4
+
5
+ include Shared
6
+
7
+ def initialize(board_id)
8
+ connect_to_trello
9
+
10
+ @board_id = board_id
11
+ end
12
+
13
+ def member_exists_in_board?(member_username)
14
+ !!find_member_by_username_in_board(member_username)
15
+ end
16
+
17
+ def find_member_by_username_in_board(member_username)
18
+ members.each do |m|
19
+ return m if m.attributes[:username] == member_username
20
+ end
21
+
22
+ false
23
+ end
24
+
25
+ private
26
+
27
+ def member_id?(name)
28
+ Trello::Member.find(name)
29
+ end
30
+
31
+ def members
32
+ @members ||= board.members
33
+ end
34
+
35
+ def board
36
+ @board ||= Trello::Board.find @board_id
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module TrelloCli
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -5,20 +5,39 @@ describe TrelloCli::Requests::CreateCard do
5
5
  Trello.should_receive(:configure)
6
6
  end
7
7
 
8
+ let(:members_mock) { double "members" }
9
+ let(:trello_card_mock) { double 'trello card' }
10
+ let(:member_struct) { Struct.new(:attributes) }
11
+
12
+ before do
13
+ @args = { :name => 'name',
14
+ :description => 'desc',
15
+ :board_id => '123',
16
+ :list_id => '321',
17
+ :members => ["user1", "user2"] }
18
+ @options = { 'name' => @args[:name],
19
+ 'desc' => @args[:description],
20
+ 'idBoard' => @args[:board_id],
21
+ 'idList' => @args[:list_id],
22
+ 'idMembers' => "id1,id2" }
23
+ end
24
+
8
25
  it "should create the requested card" do
9
- args = { :name => 'name',
10
- :description => 'desc',
11
- :board_id => '123',
12
- :list_id => '321' }
13
- options = { 'name' => args[:name],
14
- 'desc' => args[:description],
15
- 'idBoard' => args[:board_id],
16
- 'idList' => args[:list_id] }
17
- trello_card_mock = double 'trello card'
26
+ TrelloCli::Requests::Members.should_receive(:new).
27
+ with("123").
28
+ and_return members_mock
29
+ @args[:members].each do |m|
30
+ members_mock.should_receive(:member_exists_in_board?).with(m).and_return true
31
+ end
32
+ members_mock.should_receive(:find_member_by_username_in_board).
33
+ with("user1").and_return member_struct.new(id: "id1")
34
+ members_mock.should_receive(:find_member_by_username_in_board).
35
+ with("user2").and_return member_struct.new(id: "id2")
36
+
18
37
  Trello::Card.should_receive(:new).
19
- with(options).
38
+ with(@options).
20
39
  and_return trello_card_mock
21
40
  trello_card_mock.should_receive(:save)
22
- subject.create args
41
+ subject.create @args
23
42
  end
24
43
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloCli::Requests::Members do
4
+ before do
5
+ Trello.should_receive(:configure)
6
+ end
7
+
8
+ let(:subject) { TrelloCli::Requests::Members.new "123" }
9
+ let(:board_mock) { double "board" }
10
+ let(:member_object) { Struct.new(:attributes) }
11
+ let(:member1) { member_object.new(username: "member1") }
12
+ let(:member2) { member_object.new(username: "member2") }
13
+ let(:members) { [member1, member2] }
14
+
15
+ before do
16
+ Trello::Board.should_receive(:find).with("123").and_return board_mock
17
+ board_mock.should_receive(:members).and_return members
18
+ end
19
+
20
+ describe "#member_exists_in_board?" do
21
+ it "should return true if the member exists" do
22
+ subject.member_exists_in_board?("member1").should == true
23
+ end
24
+ it "should return false if the member does not exists" do
25
+ subject.member_exists_in_board?("member999").should == false
26
+ end
27
+ end
28
+
29
+ describe "#find_member_by_username_in_board" do
30
+ it "should return the member object for a given username" do
31
+ subject.find_member_by_username_in_board("member1").should == member1
32
+ end
33
+ end
34
+
35
+ end
@@ -18,8 +18,9 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_development_dependency "rspec"
22
- gem.add_development_dependency "rake"
21
+ gem.add_development_dependency "rspec", "~> 2.14"
22
+ gem.add_development_dependency "rake", "~> 10.1"
23
23
 
24
- gem.add_runtime_dependency 'ruby-trello', '0.5.1'
24
+ gem.add_runtime_dependency 'json', '1.8.0' # Added to resolve version conflict
25
+ gem.add_runtime_dependency 'ruby-trello', '1.1.1'
25
26
  end
metadata CHANGED
@@ -1,57 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trello_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Weaver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-21 00:00:00.000000000 Z
11
+ date: 2014-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '2.14'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '2.14'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.1'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '10.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.8.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.8.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: ruby-trello
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - '='
46
60
  - !ruby/object:Gem::Version
47
- version: 0.5.1
61
+ version: 1.1.1
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - '='
53
67
  - !ruby/object:Gem::Version
54
- version: 0.5.1
68
+ version: 1.1.1
55
69
  description: Simple Trello Command Line Interface
56
70
  email:
57
71
  - brett@weav.net
@@ -82,11 +96,13 @@ files:
82
96
  - lib/trello_cli/cli/list.rb
83
97
  - lib/trello_cli/cli/list/list.rb
84
98
  - lib/trello_cli/cli/run.rb
99
+ - lib/trello_cli/errors.rb
85
100
  - lib/trello_cli/requests.rb
86
101
  - lib/trello_cli/requests/create_card.rb
87
102
  - lib/trello_cli/requests/list_boards.rb
88
103
  - lib/trello_cli/requests/list_cards.rb
89
104
  - lib/trello_cli/requests/list_lists.rb
105
+ - lib/trello_cli/requests/members.rb
90
106
  - lib/trello_cli/requests/move_card.rb
91
107
  - lib/trello_cli/requests/shared.rb
92
108
  - lib/trello_cli/version.rb
@@ -97,6 +113,7 @@ files:
97
113
  - spec/requests/list_boards_spec.rb
98
114
  - spec/requests/list_card_spec.rb
99
115
  - spec/requests/list_lists_spec.rb
116
+ - spec/requests/members_spec.rb
100
117
  - spec/requests/move_card_spec.rb
101
118
  - spec/requests/shared_spec.rb
102
119
  - spec/spec_helper.rb
@@ -132,6 +149,7 @@ test_files:
132
149
  - spec/requests/list_boards_spec.rb
133
150
  - spec/requests/list_card_spec.rb
134
151
  - spec/requests/list_lists_spec.rb
152
+ - spec/requests/members_spec.rb
135
153
  - spec/requests/move_card_spec.rb
136
154
  - spec/requests/shared_spec.rb
137
155
  - spec/spec_helper.rb