troo 0.0.7 → 0.0.8
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 +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
|