troo 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +2 -0
- data/Guardfile +3 -1
- data/Rakefile +7 -0
- data/bin/troo +3 -8
- data/config/.gitkeep +0 -0
- data/config/cucumber.yml +8 -0
- data/features/add/board.feature +26 -0
- data/features/add/card.feature +34 -0
- data/features/add/comment.feature +21 -0
- data/features/add/list.feature +24 -0
- data/features/cleanup.feature +13 -0
- data/features/default/board.feature +21 -0
- data/features/default/card.feature +21 -0
- data/features/default/list.feature +21 -0
- data/features/refresh/all.feature +7 -0
- data/features/refresh/board.feature +26 -0
- data/features/refresh/card.feature +27 -0
- data/features/refresh/list.feature +27 -0
- data/features/show/board.feature +32 -0
- data/features/show/card.feature +62 -0
- data/features/show/comment.feature +39 -0
- data/features/show/list.feature +37 -0
- data/features/status.feature +46 -1
- data/features/step_definitions/fabrication_steps.rb +34 -0
- data/features/step_definitions/troo_steps.rb +16 -0
- data/features/support/env.rb +22 -24
- data/features/troo.feature +31 -1
- data/lib/troo/actions/create_board.rb +10 -7
- data/lib/troo/actions/create_card.rb +5 -4
- data/lib/troo/actions/create_comment.rb +15 -13
- data/lib/troo/actions/create_list.rb +5 -4
- data/lib/troo/actions/move_card.rb +4 -3
- data/lib/troo/{external/board_adaptor.rb → adaptors/board.rb} +3 -14
- data/lib/troo/{external/card_adaptor.rb → adaptors/card.rb} +4 -15
- data/lib/troo/{external/comment_adaptor.rb → adaptors/comment.rb} +6 -17
- data/lib/troo/{external/list_adaptor.rb → adaptors/list.rb} +3 -14
- data/lib/troo/{external/member_adaptor.rb → adaptors/member.rb} +3 -14
- data/lib/troo/adaptors/resource.rb +17 -0
- data/lib/troo/cli/add.rb +53 -0
- data/lib/troo/cli/default.rb +25 -0
- data/lib/troo/cli/main.rb +46 -0
- data/lib/troo/cli/refresh.rb +31 -0
- data/lib/troo/cli/show.rb +41 -0
- data/lib/troo/cli/thor_fixes.rb +13 -0
- data/lib/troo/commands/add/board.rb +26 -0
- data/lib/troo/commands/add/card.rb +33 -0
- data/lib/troo/commands/add/comment.rb +33 -0
- data/lib/troo/commands/add/list.rb +33 -0
- data/lib/troo/commands/add/resource.rb +21 -0
- data/lib/troo/commands/commands.rb +28 -0
- data/lib/troo/commands/default/board.rb +25 -0
- data/lib/troo/commands/default/card.rb +25 -0
- data/lib/troo/commands/default/list.rb +25 -0
- data/lib/troo/commands/default/resource.rb +26 -0
- data/lib/troo/commands/refresh/all.rb +41 -0
- data/lib/troo/commands/refresh/board.rb +28 -0
- data/lib/troo/commands/refresh/card.rb +29 -0
- data/lib/troo/commands/refresh/list.rb +29 -0
- data/lib/troo/commands/refresh/resource.rb +42 -0
- data/lib/troo/commands/show/board.rb +13 -0
- data/lib/troo/commands/show/boards.rb +35 -0
- data/lib/troo/commands/show/card.rb +13 -0
- data/lib/troo/commands/show/comments.rb +21 -0
- data/lib/troo/commands/show/list.rb +13 -0
- data/lib/troo/commands/show/resource.rb +41 -0
- data/lib/troo/commands/status/board.rb +30 -0
- data/lib/troo/commands/status/card.rb +30 -0
- data/lib/troo/commands/status/list.rb +30 -0
- data/lib/troo/commands/status/resource.rb +34 -0
- data/lib/troo/decorators/board.rb +66 -0
- data/lib/troo/decorators/card.rb +105 -0
- data/lib/troo/decorators/comment.rb +36 -0
- data/lib/troo/decorators/list.rb +60 -0
- data/lib/troo/decorators/member.rb +28 -0
- data/lib/troo/external/board.rb +14 -26
- data/lib/troo/external/card.rb +2 -19
- data/lib/troo/external/comment.rb +5 -23
- data/lib/troo/external/list.rb +2 -20
- data/lib/troo/external/member.rb +2 -20
- data/lib/troo/external/resource.rb +21 -6
- data/lib/troo/helpers/command_helpers.rb +37 -0
- data/lib/troo/{display → helpers}/decorator_helpers.rb +23 -17
- data/lib/troo/{models → helpers}/model_helpers.rb +1 -1
- data/lib/troo/models/behaviours/set_default.rb +49 -0
- data/lib/troo/models/board.rb +10 -7
- data/lib/troo/models/card.rb +33 -15
- data/lib/troo/models/comment.rb +8 -5
- data/lib/troo/models/list.rb +10 -6
- data/lib/troo/models/member.rb +7 -4
- data/lib/troo/models/persistence/board.rb +19 -0
- data/lib/troo/models/persistence/card.rb +19 -0
- data/lib/troo/models/persistence/comment.rb +19 -0
- data/lib/troo/models/persistence/list.rb +19 -0
- data/lib/troo/models/persistence/member.rb +19 -0
- data/lib/troo/models/persistence/resource.rb +50 -0
- data/lib/troo/models/refresh.rb +1 -1
- data/lib/troo/models/remote/comment.rb +21 -0
- data/lib/troo/models/remote/resource.rb +25 -0
- data/lib/troo/models/retrieval/board.rb +29 -0
- data/lib/troo/models/retrieval/card.rb +33 -0
- data/lib/troo/models/retrieval/comment.rb +25 -0
- data/lib/troo/models/retrieval/list.rb +29 -0
- data/lib/troo/models/retrieval/member.rb +25 -0
- data/lib/troo/models/retrieval/resource.rb +36 -0
- data/lib/troo/presentation/sentence.rb +57 -0
- data/lib/troo/presentation/template.rb +4 -3
- data/lib/troo/presenters/board.rb +81 -0
- data/lib/troo/presenters/card.rb +30 -0
- data/lib/troo/presenters/comment.rb +38 -0
- data/lib/troo/presenters/list.rb +44 -0
- data/lib/troo/presenters/member.rb +32 -0
- data/lib/troo/troo.rb +79 -65
- data/lib/troo/version.rb +1 -2
- data/lib/troo.rb +36 -8
- data/test/lib/troo/actions/create_board_test.rb +34 -15
- data/test/lib/troo/actions/create_card_test.rb +35 -18
- data/test/lib/troo/actions/create_comment_test.rb +38 -16
- data/test/lib/troo/actions/create_list_test.rb +31 -15
- data/test/lib/troo/actions/move_card_test.rb +23 -15
- data/test/lib/troo/adaptors/board_test.rb +38 -0
- data/test/lib/troo/adaptors/card_test.rb +49 -0
- data/test/lib/troo/adaptors/comment_test.rb +41 -0
- data/test/lib/troo/adaptors/list_test.rb +38 -0
- data/test/lib/troo/adaptors/member_test.rb +44 -0
- data/test/lib/troo/commands/add/board_test.rb +43 -0
- data/test/lib/troo/commands/add/card_test.rb +44 -0
- data/test/lib/troo/commands/add/comment_test.rb +44 -0
- data/test/lib/troo/commands/add/list_test.rb +44 -0
- data/test/lib/troo/commands/add/resource_test.rb +25 -0
- data/test/lib/troo/commands/default/board_test.rb +37 -0
- data/test/lib/troo/commands/default/card_test.rb +37 -0
- data/test/lib/troo/commands/default/list_test.rb +37 -0
- data/test/lib/troo/commands/default/resource_test.rb +20 -0
- data/test/lib/troo/commands/refresh/all_test.rb +39 -0
- data/test/lib/troo/commands/refresh/board_test.rb +62 -0
- data/test/lib/troo/commands/refresh/card_test.rb +62 -0
- data/test/lib/troo/commands/refresh/list_test.rb +62 -0
- data/test/lib/troo/commands/refresh/resource_test.rb +20 -0
- data/test/lib/troo/commands/show/board_test.rb +65 -0
- data/test/lib/troo/commands/show/boards_test.rb +36 -0
- data/test/lib/troo/commands/show/card_test.rb +64 -0
- data/test/lib/troo/commands/show/comments_test.rb +64 -0
- data/test/lib/troo/commands/show/list_test.rb +64 -0
- data/test/lib/troo/commands/show/resource_test.rb +25 -0
- data/test/lib/troo/commands/status/board_test.rb +43 -0
- data/test/lib/troo/commands/status/card_test.rb +43 -0
- data/test/lib/troo/commands/status/list_test.rb +43 -0
- data/test/lib/troo/commands/status/resource_test.rb +19 -0
- data/test/lib/troo/decorators/board_test.rb +129 -0
- data/test/lib/troo/decorators/card_test.rb +237 -0
- data/test/lib/troo/decorators/comment_test.rb +74 -0
- data/test/lib/troo/decorators/list_test.rb +102 -0
- data/test/lib/troo/decorators/member_test.rb +50 -0
- data/test/lib/troo/external/board_test.rb +74 -41
- data/test/lib/troo/external/card_test.rb +49 -37
- data/test/lib/troo/external/comment_test.rb +43 -33
- data/test/lib/troo/external/list_test.rb +37 -30
- data/test/lib/troo/external/member_test.rb +37 -30
- data/test/lib/troo/external/resource_test.rb +18 -1
- data/test/lib/troo/helpers/command_helpers_test.rb +82 -0
- data/test/lib/troo/{display → helpers}/decorator_helpers_test.rb +6 -6
- data/test/lib/troo/helpers/model_helpers_test.rb +103 -0
- data/test/lib/troo/models/behaviours/set_default_test.rb +54 -0
- data/test/lib/troo/models/board_test.rb +13 -14
- data/test/lib/troo/models/card_test.rb +64 -33
- data/test/lib/troo/models/comment_test.rb +18 -19
- data/test/lib/troo/models/list_test.rb +15 -15
- data/test/lib/troo/models/member_test.rb +18 -18
- data/test/lib/troo/models/persistence/board_test.rb +62 -0
- data/test/lib/troo/models/persistence/card_test.rb +61 -0
- data/test/lib/troo/models/persistence/comment_test.rb +69 -0
- data/test/lib/troo/models/persistence/list_test.rb +60 -0
- data/test/lib/troo/models/persistence/member_test.rb +60 -0
- data/test/lib/troo/models/refresh_test.rb +12 -11
- data/test/lib/troo/models/remote/comment_test.rb +56 -0
- data/test/lib/troo/models/remote/resource_test.rb +26 -0
- data/test/lib/troo/models/retrieval/board_test.rb +93 -0
- data/test/lib/troo/models/retrieval/card_test.rb +101 -0
- data/test/lib/troo/models/retrieval/comment_test.rb +46 -0
- data/test/lib/troo/models/retrieval/list_test.rb +93 -0
- data/test/lib/troo/models/retrieval/member_test.rb +58 -0
- data/test/lib/troo/presentation/sentence_test.rb +57 -0
- data/test/lib/troo/presentation/template_test.rb +17 -16
- data/test/lib/troo/presenters/board_test.rb +79 -0
- data/test/lib/troo/presenters/card_test.rb +41 -0
- data/test/lib/troo/presenters/comment_test.rb +49 -0
- data/test/lib/troo/presenters/list_test.rb +50 -0
- data/test/lib/troo/presenters/member_test.rb +40 -0
- data/test/support/fabrication.rb +31 -32
- data/test/support/vcr_setup.rb +7 -9
- data/test/system_test.sh +55 -0
- data/test/test_helper.rb +10 -10
- data/troo.gemspec +1 -0
- metadata +232 -134
- data/features/add_board.feature +0 -1
- data/features/add_card.feature +0 -1
- data/features/add_comment.feature +0 -1
- data/features/add_list.feature +0 -1
- data/features/move_card_to_list.feature +0 -1
- data/features/refresh.feature +0 -1
- data/features/set_default.feature +0 -7
- data/features/show_board.feature +0 -1
- data/features/show_boards.feature +0 -1
- data/features/show_card.feature +0 -1
- data/features/show_comments.feature +0 -1
- data/features/show_list.feature +0 -1
- data/features/version.feature +0 -8
- data/lib/troo/actions/refresh_all.rb +0 -79
- data/lib/troo/actions/set_default.rb +0 -46
- data/lib/troo/cli/add_cli.rb +0 -83
- data/lib/troo/cli/cli_helpers.rb +0 -34
- data/lib/troo/cli/default_cli.rb +0 -32
- data/lib/troo/cli/main_cli.rb +0 -132
- data/lib/troo/cli/show_cli.rb +0 -64
- data/lib/troo/display/board_decorator.rb +0 -62
- data/lib/troo/display/board_presenter.rb +0 -71
- data/lib/troo/display/card_decorator.rb +0 -100
- data/lib/troo/display/card_presenter.rb +0 -27
- data/lib/troo/display/comment_decorator.rb +0 -33
- data/lib/troo/display/comment_presenter.rb +0 -31
- data/lib/troo/display/list_decorator.rb +0 -57
- data/lib/troo/display/list_presenter.rb +0 -41
- data/lib/troo/display/member_decorator.rb +0 -25
- data/lib/troo/display/member_presenter.rb +0 -59
- data/lib/troo/models/board_persistence.rb +0 -25
- data/lib/troo/models/board_retrieval.rb +0 -45
- data/lib/troo/models/card_persistence.rb +0 -25
- data/lib/troo/models/card_retrieval.rb +0 -49
- data/lib/troo/models/comment_persistence.rb +0 -25
- data/lib/troo/models/comment_retrieval.rb +0 -32
- data/lib/troo/models/list_persistence.rb +0 -25
- data/lib/troo/models/list_retrieval.rb +0 -45
- data/lib/troo/models/member_persistence.rb +0 -25
- data/lib/troo/models/member_retrieval.rb +0 -36
- data/lib/troo/models/persistence.rb +0 -39
- data/test/lib/troo/actions/refresh_all_test.rb +0 -68
- data/test/lib/troo/actions/set_default_test.rb +0 -44
- data/test/lib/troo/cli/add_cli_test.rb +0 -216
- data/test/lib/troo/cli/cli_helpers_test.rb +0 -24
- data/test/lib/troo/cli/default_cli_test.rb +0 -85
- data/test/lib/troo/cli/main_cli_test.rb +0 -234
- data/test/lib/troo/cli/show_cli_test.rb +0 -251
- data/test/lib/troo/display/board_decorator_test.rb +0 -126
- data/test/lib/troo/display/board_presenter_test.rb +0 -77
- data/test/lib/troo/display/card_decorator_test.rb +0 -213
- data/test/lib/troo/display/card_presenter_test.rb +0 -38
- data/test/lib/troo/display/comment_decorator_test.rb +0 -70
- data/test/lib/troo/display/comment_presenter_test.rb +0 -47
- data/test/lib/troo/display/list_decorator_test.rb +0 -98
- data/test/lib/troo/display/list_presenter_test.rb +0 -48
- data/test/lib/troo/display/member_decorator_test.rb +0 -47
- data/test/lib/troo/display/member_presenter_test.rb +0 -70
- data/test/lib/troo/external/board_adaptor_test.rb +0 -36
- data/test/lib/troo/external/card_adaptor_test.rb +0 -50
- data/test/lib/troo/external/comment_adaptor_test.rb +0 -41
- data/test/lib/troo/external/list_adaptor_test.rb +0 -38
- data/test/lib/troo/external/member_adaptor_test.rb +0 -44
- data/test/lib/troo/models/board_persistence_test.rb +0 -61
- data/test/lib/troo/models/board_retrieval_test.rb +0 -93
- data/test/lib/troo/models/card_persistence_test.rb +0 -60
- data/test/lib/troo/models/card_retrieval_test.rb +0 -101
- data/test/lib/troo/models/comment_persistence_test.rb +0 -65
- data/test/lib/troo/models/comment_retrieval_test.rb +0 -46
- data/test/lib/troo/models/list_persistence_test.rb +0 -60
- data/test/lib/troo/models/list_retrieval_test.rb +0 -93
- data/test/lib/troo/models/member_persistence_test.rb +0 -59
- data/test/lib/troo/models/member_retrieval_test.rb +0 -58
- data/test/lib/troo/models/model_helpers_test.rb +0 -103
- data/test/lib/troo/models/persistence_test.rb +0 -6
data/features/support/env.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'simplecov'
|
2
|
+
require 'aruba'
|
3
|
+
require 'aruba/cucumber'
|
4
|
+
require 'aruba/in_process'
|
5
|
+
require 'ohm'
|
6
|
+
require 'vcr'
|
7
|
+
require 'webmock/cucumber'
|
4
8
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
# base.extend(MiniTest::Assertions)
|
9
|
-
# base.assertions = 0
|
10
|
-
# end
|
11
|
-
|
12
|
-
# attr_accessor :assertions
|
13
|
-
# end
|
14
|
-
# World(MiniTestAssertions)
|
9
|
+
SimpleCov.start do
|
10
|
+
add_filter '/test/'
|
11
|
+
end
|
15
12
|
|
13
|
+
require_relative '../../lib/troo.rb'
|
16
14
|
|
17
|
-
|
15
|
+
class CucumberError < StandardError; end
|
18
16
|
|
19
|
-
|
20
|
-
|
17
|
+
Aruba::InProcess.main_class = Troo::Launcher
|
18
|
+
Aruba.process = Aruba::InProcess
|
21
19
|
|
22
|
-
|
23
|
-
# Using "announce" causes massive warnings on 1.9.2
|
24
|
-
@puts = true
|
25
|
-
@original_rubylib = ENV['RUBYLIB']
|
26
|
-
ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
|
27
|
-
end
|
20
|
+
WebMock.disable_net_connect!
|
28
21
|
|
29
|
-
|
30
|
-
|
22
|
+
VCR.configure do |c|
|
23
|
+
c.cassette_library_dir = 'features/support/fixtures/cassettes'
|
24
|
+
c.hook_into :webmock
|
25
|
+
# c.debug_logger = File.open("logs/vcr.log", 'w')
|
26
|
+
c.filter_sensitive_data('<OAuth Credentials>') do |interaction|
|
27
|
+
interaction.request.headers['Authorization'].first
|
28
|
+
end
|
31
29
|
end
|
data/features/troo.feature
CHANGED
@@ -1 +1,31 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: Troo Basics
|
2
|
+
|
3
|
+
@basics
|
4
|
+
Scenario: Getting the current version
|
5
|
+
When I run `troo version`
|
6
|
+
Then the output should be the version number of troo
|
7
|
+
|
8
|
+
@basics
|
9
|
+
Scenario: Running the command with no arguments
|
10
|
+
When I run `troo`
|
11
|
+
Then the output should contain "Commands:"
|
12
|
+
|
13
|
+
@basics
|
14
|
+
Scenario: Running an unknown command
|
15
|
+
When I run `troo unknown`
|
16
|
+
Then the output should contain:
|
17
|
+
"""
|
18
|
+
Could not find command "unknown".
|
19
|
+
"""
|
20
|
+
|
21
|
+
@pending @authentication
|
22
|
+
Scenario: Not authenticated with Trello
|
23
|
+
Given the Trello API is stubbed with "unauthenticated"
|
24
|
+
|
25
|
+
@pending @connectivity
|
26
|
+
Scenario: Trello not responding
|
27
|
+
Given the Trello API is stubbed with "trello_failure"
|
28
|
+
|
29
|
+
@pending @connectivity
|
30
|
+
Scenario: No network connection
|
31
|
+
|
@@ -6,26 +6,29 @@ module Troo
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
attr_reader :name
|
10
|
-
|
11
9
|
def initialize(name, description = nil)
|
12
10
|
@name = name
|
13
11
|
@description = description
|
14
12
|
end
|
15
13
|
|
16
14
|
def perform
|
17
|
-
|
15
|
+
create_local
|
18
16
|
end
|
19
17
|
|
20
18
|
private
|
19
|
+
|
21
20
|
attr_reader :name, :description
|
22
21
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
22
|
+
def create_local
|
23
|
+
if create_remote
|
24
|
+
Persistence::Board.for(create_remote)
|
25
|
+
# refresh for lists
|
26
|
+
else
|
27
|
+
false
|
28
|
+
end
|
26
29
|
end
|
27
30
|
|
28
|
-
def
|
31
|
+
def create_remote
|
29
32
|
@board ||= Trello::Board.create(attributes)
|
30
33
|
rescue Trello::InvalidAccessToken
|
31
34
|
raise Troo::InvalidAccessToken
|
@@ -13,18 +13,19 @@ module Troo
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def perform
|
16
|
-
|
16
|
+
create_local
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
|
+
|
20
21
|
attr_reader :list, :name, :description
|
21
22
|
|
22
|
-
def
|
23
|
-
return
|
23
|
+
def create_local
|
24
|
+
return Persistence::Card.for(create_remote) if create_remote
|
24
25
|
false
|
25
26
|
end
|
26
27
|
|
27
|
-
def
|
28
|
+
def create_remote
|
28
29
|
@card ||= Trello::Card.create(attributes)
|
29
30
|
rescue Trello::InvalidAccessToken
|
30
31
|
raise Troo::InvalidAccessToken
|
@@ -12,28 +12,30 @@ module Troo
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def perform
|
15
|
-
|
15
|
+
create_local
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
|
-
attr_reader :card, :comment
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
attr_reader :card, :comment
|
21
|
+
attr_accessor :comment_resource
|
22
|
+
|
23
|
+
def create_local
|
24
|
+
return Persistence::Comment.for(resource) if create_remote
|
23
25
|
false
|
24
26
|
end
|
25
27
|
|
26
|
-
def
|
27
|
-
|
28
|
-
resource = OpenStruct.new(JSON.parse(create_comment))
|
29
|
-
resource.member_creator_id = resource.memberCreator.fetch("id", "")
|
30
|
-
resource
|
28
|
+
def resource
|
29
|
+
Remote::Comment.create(comment_resource)
|
31
30
|
end
|
32
31
|
|
33
|
-
def
|
34
|
-
@comment_resource ||= Trello::Card.new
|
35
|
-
|
36
|
-
|
32
|
+
def create_remote
|
33
|
+
@comment_resource ||= Trello::Card.new
|
34
|
+
.update_fields(attributes)
|
35
|
+
.add_comment(comment)
|
36
|
+
rescue Trello::InvalidAccessToken
|
37
|
+
raise Troo::InvalidAccessToken
|
38
|
+
rescue Trello::Error
|
37
39
|
false
|
38
40
|
end
|
39
41
|
|
@@ -12,18 +12,19 @@ module Troo
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def perform
|
15
|
-
|
15
|
+
create_local
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
|
+
|
19
20
|
attr_reader :board, :name
|
20
21
|
|
21
|
-
def
|
22
|
-
return
|
22
|
+
def create_local
|
23
|
+
return Persistence::List.for(create_remote) if create_remote
|
23
24
|
false
|
24
25
|
end
|
25
26
|
|
26
|
-
def
|
27
|
+
def create_remote
|
27
28
|
@list ||= Trello::List.create(attributes)
|
28
29
|
rescue Trello::InvalidAccessToken
|
29
30
|
raise Troo::InvalidAccessToken
|
@@ -17,6 +17,7 @@ module Troo
|
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
|
+
|
20
21
|
attr_reader :card, :list
|
21
22
|
|
22
23
|
def update_cards
|
@@ -24,9 +25,9 @@ module Troo
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def move_card
|
27
|
-
Trello::Card.new
|
28
|
-
update_fields(
|
29
|
-
move_to_list(list.external_list_id)
|
28
|
+
Trello::Card.new
|
29
|
+
.update_fields('id' => card.external_card_id)
|
30
|
+
.move_to_list(list.external_list_id)
|
30
31
|
rescue Trello::InvalidAccessToken
|
31
32
|
raise Troo::InvalidAccessToken
|
32
33
|
rescue Trello::Error
|
@@ -1,27 +1,16 @@
|
|
1
1
|
module Troo
|
2
|
-
module
|
3
|
-
class
|
4
|
-
class << self
|
5
|
-
def adapt(resource)
|
6
|
-
new(resource).adapted
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(resource)
|
11
|
-
@resource = resource
|
12
|
-
end
|
13
|
-
|
2
|
+
module Adaptors
|
3
|
+
class Board < Resource
|
14
4
|
def adapted
|
15
5
|
{
|
16
6
|
external_board_id: external_board_id,
|
17
7
|
name: name,
|
18
8
|
description: description,
|
19
|
-
closed: closed
|
9
|
+
closed: closed
|
20
10
|
}
|
21
11
|
end
|
22
12
|
|
23
13
|
private
|
24
|
-
attr_reader :resource
|
25
14
|
|
26
15
|
def external_board_id
|
27
16
|
resource.id
|
@@ -1,16 +1,6 @@
|
|
1
1
|
module Troo
|
2
|
-
module
|
3
|
-
class
|
4
|
-
class << self
|
5
|
-
def adapt(resource)
|
6
|
-
new(resource).adapted
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(resource)
|
11
|
-
@resource = resource
|
12
|
-
end
|
13
|
-
|
2
|
+
module Adaptors
|
3
|
+
class Card < Resource
|
14
4
|
def adapted
|
15
5
|
{
|
16
6
|
external_board_id: external_board_id,
|
@@ -23,12 +13,11 @@ module Troo
|
|
23
13
|
url: url,
|
24
14
|
position: position,
|
25
15
|
last_activity_date: last_activity_date,
|
26
|
-
closed: closed
|
16
|
+
closed: closed
|
27
17
|
}
|
28
18
|
end
|
29
19
|
|
30
20
|
private
|
31
|
-
attr_reader :resource
|
32
21
|
|
33
22
|
def external_board_id
|
34
23
|
resource.board_id
|
@@ -43,7 +32,7 @@ module Troo
|
|
43
32
|
end
|
44
33
|
|
45
34
|
def external_member_ids
|
46
|
-
resource.member_ids.to_s.gsub(
|
35
|
+
resource.member_ids.to_s.gsub(' ', '')
|
47
36
|
end
|
48
37
|
|
49
38
|
def short_id
|
@@ -1,16 +1,6 @@
|
|
1
1
|
module Troo
|
2
|
-
module
|
3
|
-
class
|
4
|
-
class << self
|
5
|
-
def adapt(resource)
|
6
|
-
new(resource).adapted
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(resource)
|
11
|
-
@resource = resource
|
12
|
-
end
|
13
|
-
|
2
|
+
module Adaptors
|
3
|
+
class Comment < Resource
|
14
4
|
def adapted
|
15
5
|
{
|
16
6
|
external_comment_id: external_comment_id,
|
@@ -18,23 +8,22 @@ module Troo
|
|
18
8
|
external_card_id: external_card_id,
|
19
9
|
external_member_id: external_member_id,
|
20
10
|
date: date,
|
21
|
-
text: text
|
11
|
+
text: text
|
22
12
|
}
|
23
13
|
end
|
24
14
|
|
25
15
|
private
|
26
|
-
attr_reader :resource
|
27
16
|
|
28
17
|
def external_comment_id
|
29
18
|
resource.id
|
30
19
|
end
|
31
20
|
|
32
21
|
def external_board_id
|
33
|
-
resource.data.fetch(
|
22
|
+
resource.data.fetch('board', {}).fetch('id', '')
|
34
23
|
end
|
35
24
|
|
36
25
|
def external_card_id
|
37
|
-
resource.data.fetch(
|
26
|
+
resource.data.fetch('card', {}).fetch('id', '')
|
38
27
|
end
|
39
28
|
|
40
29
|
def external_member_id
|
@@ -46,7 +35,7 @@ module Troo
|
|
46
35
|
end
|
47
36
|
|
48
37
|
def text
|
49
|
-
resource.data.fetch(
|
38
|
+
resource.data.fetch('text', '')
|
50
39
|
end
|
51
40
|
end
|
52
41
|
end
|
@@ -1,28 +1,17 @@
|
|
1
1
|
module Troo
|
2
|
-
module
|
3
|
-
class
|
4
|
-
class << self
|
5
|
-
def adapt(resource)
|
6
|
-
new(resource).adapted
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(resource)
|
11
|
-
@resource = resource
|
12
|
-
end
|
13
|
-
|
2
|
+
module Adaptors
|
3
|
+
class List < Resource
|
14
4
|
def adapted
|
15
5
|
{
|
16
6
|
external_board_id: external_board_id,
|
17
7
|
external_list_id: external_list_id,
|
18
8
|
name: name,
|
19
9
|
position: position,
|
20
|
-
closed: closed
|
10
|
+
closed: closed
|
21
11
|
}
|
22
12
|
end
|
23
13
|
|
24
14
|
private
|
25
|
-
attr_reader :resource
|
26
15
|
|
27
16
|
def external_board_id
|
28
17
|
resource.board_id
|
@@ -1,16 +1,6 @@
|
|
1
1
|
module Troo
|
2
|
-
module
|
3
|
-
class
|
4
|
-
class << self
|
5
|
-
def adapt(resource)
|
6
|
-
new(resource).adapted
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(resource)
|
11
|
-
@resource = resource
|
12
|
-
end
|
13
|
-
|
2
|
+
module Adaptors
|
3
|
+
class Member < Resource
|
14
4
|
def adapted
|
15
5
|
{
|
16
6
|
external_member_id: external_member_id,
|
@@ -20,12 +10,11 @@ module Troo
|
|
20
10
|
initials: initials,
|
21
11
|
avatar_id: avatar_id,
|
22
12
|
bio: bio,
|
23
|
-
url: url
|
13
|
+
url: url
|
24
14
|
}
|
25
15
|
end
|
26
16
|
|
27
17
|
private
|
28
|
-
attr_reader :resource
|
29
18
|
|
30
19
|
def external_member_id
|
31
20
|
resource.id
|
data/lib/troo/cli/add.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
module Troo
|
2
|
+
module CLI
|
3
|
+
class Add < ThorFixes
|
4
|
+
package_name 'add'
|
5
|
+
|
6
|
+
desc 'board (<name>)',
|
7
|
+
'Add a new board with <name>; prompts if <name> not ' \
|
8
|
+
'provided.'
|
9
|
+
def board(name = nil)
|
10
|
+
board_name = name.nil? ? prompt_for_name : name
|
11
|
+
|
12
|
+
say Commands::Add::Board.dispatch(board_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'card <list_id> (<name>)',
|
16
|
+
'Add a new card to the list with <list_id> with <name>; ' \
|
17
|
+
'prompts if <name> not provided.'
|
18
|
+
def card(id, name = nil)
|
19
|
+
card_name = name.nil? ? prompt_for_name : name
|
20
|
+
|
21
|
+
say Commands::Add::Card.dispatch(card_name, id)
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'comment <card_id> (<comment>)',
|
25
|
+
'Add a new comment to the card with <card_id> with ' \
|
26
|
+
'<comment>; prompts if <comment> not provided.'
|
27
|
+
def comment(id, comment = nil)
|
28
|
+
comment_text = comment.nil? ? prompt_for_comment : comment
|
29
|
+
|
30
|
+
say Commands::Add::Comment.dispatch(comment_text, id)
|
31
|
+
end
|
32
|
+
|
33
|
+
desc 'list <board_id> (<name>)',
|
34
|
+
'Add a new list to the board with <board_id> with ' \
|
35
|
+
'<name>; prompts if <name> not provided.'
|
36
|
+
def list(id, name = nil)
|
37
|
+
list_name = name.nil? ? prompt_for_name : name
|
38
|
+
|
39
|
+
say Commands::Add::List.dispatch(list_name, id)
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def prompt_for_name
|
45
|
+
@answer = ask('Please enter a name:')
|
46
|
+
end
|
47
|
+
|
48
|
+
def prompt_for_comment
|
49
|
+
@answer = ask('Please enter a comment:')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Troo
|
2
|
+
module CLI
|
3
|
+
class Default < ThorFixes
|
4
|
+
package_name 'default'
|
5
|
+
|
6
|
+
desc 'board <id>',
|
7
|
+
'Set the board <id> to default.'
|
8
|
+
def board(id)
|
9
|
+
say Commands::Default::Board.dispatch(id)
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'card <id>',
|
13
|
+
'Set the card <id> to default.'
|
14
|
+
def card(id)
|
15
|
+
say Commands::Default::Card.dispatch(id)
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'list <id>',
|
19
|
+
'Set the list <id> to default.'
|
20
|
+
def list(id)
|
21
|
+
say Commands::Default::List.dispatch(id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Troo
|
2
|
+
module CLI
|
3
|
+
class Main < ThorFixes
|
4
|
+
desc 'status',
|
5
|
+
'Get troo status.'
|
6
|
+
def status
|
7
|
+
say 'Status:'
|
8
|
+
say Commands::Status::Board.dispatch
|
9
|
+
say Commands::Status::List.dispatch
|
10
|
+
say Commands::Status::Card.dispatch
|
11
|
+
end
|
12
|
+
|
13
|
+
desc 'cleanup',
|
14
|
+
'Removes all local data.'
|
15
|
+
def cleanup
|
16
|
+
if yes?('This will remove all local data, are you sure?')
|
17
|
+
Ohm.redis.flushdb
|
18
|
+
say 'All local data has been removed.'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'version',
|
23
|
+
'Print the version.'
|
24
|
+
def version
|
25
|
+
say "troo #{Troo::VERSION}"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc 'show [board|list|card|comments] <id>',
|
29
|
+
'Show the board, list, card with <id>. Also, show all ' \
|
30
|
+
'comments for card with <id>.'
|
31
|
+
subcommand :show, CLI::Show
|
32
|
+
|
33
|
+
desc 'add [board|list|card|comment] <id>',
|
34
|
+
'Add board, list, card or comment.'
|
35
|
+
subcommand :add, CLI::Add
|
36
|
+
|
37
|
+
desc 'default [board|list|card] <id>',
|
38
|
+
'Set board, list or card to be default.'
|
39
|
+
subcommand :default, CLI::Default
|
40
|
+
|
41
|
+
desc 'refresh [board|list|card] <id>',
|
42
|
+
'Refresh board, list or card with <id>.'
|
43
|
+
subcommand :refresh, CLI::Refresh
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Troo
|
2
|
+
module CLI
|
3
|
+
class Refresh < ThorFixes
|
4
|
+
package_name 'refresh'
|
5
|
+
|
6
|
+
desc 'all',
|
7
|
+
'Refresh all the local data.'
|
8
|
+
def all
|
9
|
+
say Commands::Refresh::All.dispatch
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'board (<id>)',
|
13
|
+
'Refresh the default board or board with <id>.'
|
14
|
+
def board(id = nil)
|
15
|
+
say Commands::Refresh::Board.dispatch(id)
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'card (<id>)',
|
19
|
+
'Refresh the default card or card with <id>.'
|
20
|
+
def card(id = nil)
|
21
|
+
say Commands::Refresh::Card.dispatch(id)
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'list (<id>)',
|
25
|
+
'Refresh the default list or list with <id>.'
|
26
|
+
def list(id = nil)
|
27
|
+
say Commands::Refresh::List.dispatch(id)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Troo
|
2
|
+
module CLI
|
3
|
+
class Show < ThorFixes
|
4
|
+
package_name 'show'
|
5
|
+
|
6
|
+
desc 'boards',
|
7
|
+
'Show all the boards with lists.'
|
8
|
+
def boards
|
9
|
+
say Troo::Commands::Show::Boards.dispatch
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'board (<id>)',
|
13
|
+
'Show lists and cards for board <id>' \
|
14
|
+
' (uses default card if <id> not provided).'
|
15
|
+
def board(id = nil)
|
16
|
+
say Troo::Commands::Show::Board.dispatch(:board, id)
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'list (<id>)',
|
20
|
+
'Show all cards for list <id>' \
|
21
|
+
' (uses default card if <id> not provided).'
|
22
|
+
def list(id = nil)
|
23
|
+
say Troo::Commands::Show::List.dispatch(:list, id)
|
24
|
+
end
|
25
|
+
|
26
|
+
desc 'card (<id>)',
|
27
|
+
'Show a card <id> including last 3 comments' \
|
28
|
+
' (uses default card if <id> not provided).'
|
29
|
+
def card(id = nil)
|
30
|
+
say Troo::Commands::Show::Card.dispatch(:card, id)
|
31
|
+
end
|
32
|
+
|
33
|
+
desc 'comments (<id>)',
|
34
|
+
'Show all comments for card <id>' \
|
35
|
+
' (uses default card if <id> not provided).'
|
36
|
+
def comments(id = nil)
|
37
|
+
say Troo::Commands::Show::Comments.dispatch(:comments, id)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Troo
|
2
|
+
module CLI
|
3
|
+
class ThorFixes < Thor
|
4
|
+
# def self.exit_on_failure?
|
5
|
+
# true # exit code is non-zero on error
|
6
|
+
# end
|
7
|
+
|
8
|
+
def self.banner(command, namespace = nil, subcommand = false)
|
9
|
+
"#{basename} #{@package_name} #{command.usage}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|