troo 0.0.8 → 0.0.9
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 +3 -1
- data/.ruby-version +1 -1
- data/.trooconf.example +18 -0
- data/Gemfile.lock +178 -0
- data/README.md +77 -21
- data/Rakefile +1 -1
- data/bin/completion.bash +10 -0
- data/bin/completion.zsh +10 -0
- data/bin/init.sh +15 -0
- data/bin/troo +12 -3
- data/config/cucumber.yml +3 -3
- data/config/en.yml +29 -0
- data/config/trello_api.yml +19 -0
- data/features/add/board.feature +3 -19
- data/features/add/card.feature +14 -18
- data/features/add/comment.feature +14 -14
- data/features/add/list.feature +11 -14
- data/features/default/board.feature +4 -4
- data/features/default/card.feature +4 -4
- data/features/default/list.feature +4 -4
- data/features/move/card.feature +54 -0
- data/features/refresh/all.feature +8 -4
- data/features/refresh/board.feature +9 -6
- data/features/refresh/card.feature +9 -6
- data/features/refresh/list.feature +9 -6
- data/features/show/board.feature +7 -7
- data/features/show/boards.feature +19 -0
- data/features/show/card.feature +86 -15
- data/features/show/comment.feature +14 -12
- data/features/show/list.feature +19 -14
- data/features/status.feature +27 -13
- data/features/step_definitions/fabrication_steps.rb +43 -8
- data/features/step_definitions/troo_steps.rb +3 -2
- data/features/support/env.rb +1 -0
- data/features/troo.feature +0 -12
- data/lib/troo.rb +32 -29
- data/lib/troo/api/client.rb +117 -0
- data/lib/troo/api/endpoints.rb +39 -0
- data/lib/troo/api/headers.rb +44 -0
- data/lib/troo/api/oauth_settings.rb +36 -0
- data/lib/troo/api/request.rb +37 -0
- data/lib/troo/api/response.rb +31 -0
- data/lib/troo/cli/add.rb +8 -12
- data/lib/troo/cli/commands/add.rb +95 -0
- data/lib/troo/cli/commands/default.rb +44 -0
- data/lib/troo/cli/commands/move/card.rb +95 -0
- data/lib/troo/cli/commands/refresh.rb +80 -0
- data/lib/troo/cli/commands/refresh/all.rb +52 -0
- data/lib/troo/cli/commands/show.rb +56 -0
- data/lib/troo/cli/commands/show/show_boards.rb +36 -0
- data/lib/troo/cli/commands/show/show_comments.rb +54 -0
- data/lib/troo/cli/commands/status.rb +68 -0
- data/lib/troo/cli/default.rb +3 -3
- data/lib/troo/cli/main.rb +60 -9
- data/lib/troo/cli/refresh.rb +4 -4
- data/lib/troo/cli/show.rb +7 -7
- data/lib/troo/cli/thor_fixes.rb +1 -5
- data/lib/troo/configuration.rb +53 -0
- data/lib/troo/debug.rb +18 -0
- data/lib/troo/decorators/member.rb +2 -19
- data/lib/troo/decorators/resource.rb +130 -0
- data/lib/troo/helpers/decorator_helpers.rb +21 -74
- data/lib/troo/helpers/model_helpers.rb +19 -4
- data/lib/troo/helpers/remote_model_helpers.rb +54 -0
- data/lib/troo/models/board.rb +19 -11
- data/lib/troo/models/card.rb +20 -17
- data/lib/troo/models/comment.rb +28 -8
- data/lib/troo/models/list.rb +22 -14
- data/lib/troo/models/member.rb +21 -5
- data/lib/troo/models/refresh.rb +3 -4
- data/lib/troo/persistence/local.rb +63 -0
- data/lib/troo/presentation/formatter.rb +132 -0
- data/lib/troo/presentation/template.rb +0 -4
- data/lib/troo/presenters/board.rb +32 -51
- data/lib/troo/presenters/card.rb +4 -11
- data/lib/troo/presenters/comment.rb +30 -16
- data/lib/troo/presenters/list.rb +25 -21
- data/lib/troo/presenters/member.rb +1 -8
- data/lib/troo/remote/all.rb +16 -0
- data/lib/troo/remote/board.rb +64 -0
- data/lib/troo/remote/card.rb +81 -0
- data/lib/troo/remote/comment.rb +70 -0
- data/lib/troo/remote/comment_data.rb +11 -0
- data/lib/troo/remote/comment_data_board.rb +13 -0
- data/lib/troo/remote/comment_data_card.rb +15 -0
- data/lib/troo/remote/list.rb +49 -0
- data/lib/troo/remote/member.rb +75 -0
- data/lib/troo/remote/persistence/board.rb +57 -0
- data/lib/troo/remote/persistence/card.rb +59 -0
- data/lib/troo/remote/persistence/comment.rb +58 -0
- data/lib/troo/remote/persistence/list.rb +57 -0
- data/lib/troo/remote/persistence/move_card.rb +85 -0
- data/lib/troo/retrieval/local.rb +100 -0
- data/lib/troo/retrieval/remote.rb +91 -0
- data/lib/troo/troo.rb +42 -42
- data/lib/troo/version.rb +1 -1
- data/lib/troo/views/card.erb +8 -10
- data/lib/troo/views/comments.erb +4 -0
- data/test/cassettes/board_by_id.yml +21 -30
- data/test/cassettes/boards_all.yml +22 -90
- data/test/cassettes/card_by_id.yml +49 -0
- data/test/cassettes/cards_by_board_id.yml +22 -90
- data/test/cassettes/cards_by_list_id.yml +22 -87
- data/test/cassettes/comments_by_board_id.yml +22 -95
- data/test/cassettes/comments_by_card_id.yml +22 -87
- data/test/cassettes/create_board.yml +20 -32
- data/test/cassettes/create_card.yml +21 -35
- data/test/cassettes/create_comment.yml +19 -37
- data/test/cassettes/create_list.yml +18 -32
- data/test/cassettes/list_by_id.yml +46 -0
- data/test/cassettes/lists_by_board_id.yml +19 -91
- data/test/cassettes/member_by_id.yml +48 -0
- data/test/cassettes/members_by_board_id.yml +21 -82
- data/test/cassettes/move_card_board.yml +49 -0
- data/test/cassettes/move_card_list.yml +49 -0
- data/test/lib/troo/api/client_test.rb +75 -0
- data/test/lib/troo/api/endpoints_test.rb +48 -0
- data/test/lib/troo/api/headers_test.rb +27 -0
- data/test/lib/troo/api/oauth_settings_test.rb +10 -0
- data/test/lib/troo/api/request_test.rb +63 -0
- data/test/lib/troo/api/response_test.rb +15 -0
- data/test/lib/troo/cli/add_test.rb +113 -0
- data/test/lib/troo/cli/commands/add_test.rb +66 -0
- data/test/lib/troo/cli/commands/default_test.rb +39 -0
- data/test/lib/troo/cli/commands/move/card_test.rb +86 -0
- data/test/lib/troo/cli/commands/refresh/all_test.rb +37 -0
- data/test/lib/troo/cli/commands/refresh_test.rb +59 -0
- data/test/lib/troo/cli/commands/show/show_boards_test.rb +35 -0
- data/test/lib/troo/cli/commands/show/show_comments_test.rb +63 -0
- data/test/lib/troo/cli/commands/show_test.rb +65 -0
- data/test/lib/troo/cli/commands/status_test.rb +48 -0
- data/test/lib/troo/cli/default_test.rb +39 -0
- data/test/lib/troo/cli/main_test.rb +102 -0
- data/test/lib/troo/cli/refresh_test.rb +43 -0
- data/test/lib/troo/cli/show_test.rb +49 -0
- data/test/lib/troo/cli/thor_fixes_test.rb +38 -0
- data/test/lib/troo/configuration_test.rb +43 -0
- data/test/lib/troo/debug_test.rb +25 -0
- data/test/lib/troo/decorators/card_test.rb +105 -229
- data/test/lib/troo/decorators/member_test.rb +20 -35
- data/test/lib/troo/decorators/resource_test.rb +157 -0
- data/test/lib/troo/helpers/decorator_helpers_test.rb +10 -19
- data/test/lib/troo/helpers/model_helpers_test.rb +18 -8
- data/test/lib/troo/helpers/remote_model_helpers_test.rb +68 -0
- data/test/lib/troo/models/behaviours/set_default_test.rb +0 -10
- data/test/lib/troo/models/board_test.rb +2 -2
- data/test/lib/troo/models/card_test.rb +2 -2
- data/test/lib/troo/models/comment_test.rb +6 -2
- data/test/lib/troo/models/list_test.rb +2 -2
- data/test/lib/troo/models/member_test.rb +6 -2
- data/test/lib/troo/persistence/local_test.rb +31 -0
- data/test/lib/troo/presentation/formatter_test.rb +31 -0
- data/test/lib/troo/presentation/sentence_test.rb +0 -12
- data/test/lib/troo/presentation/template_test.rb +1 -14
- data/test/lib/troo/presenters/board_test.rb +17 -36
- data/test/lib/troo/presenters/card_test.rb +1 -31
- data/test/lib/troo/presenters/comment_test.rb +19 -19
- data/test/lib/troo/presenters/list_test.rb +18 -18
- data/test/lib/troo/presenters/member_test.rb +1 -14
- data/test/lib/troo/remote/board_test.rb +66 -0
- data/test/lib/troo/remote/card_test.rb +81 -0
- data/test/lib/troo/remote/comment_data_board.rb +9 -0
- data/test/lib/troo/remote/comment_data_card_test.rb +9 -0
- data/test/lib/troo/remote/comment_data_test.rb +9 -0
- data/test/lib/troo/remote/comment_test.rb +100 -0
- data/test/lib/troo/remote/list_test.rb +67 -0
- data/test/lib/troo/remote/member_test.rb +70 -0
- data/test/lib/troo/remote/persistence/board_test.rb +39 -0
- data/test/lib/troo/remote/persistence/card_test.rb +50 -0
- data/test/lib/troo/remote/persistence/comment_test.rb +45 -0
- data/test/lib/troo/remote/persistence/list_test.rb +45 -0
- data/test/lib/troo/remote/persistence/move_card_test.rb +78 -0
- data/test/lib/troo/retrieval/local_test.rb +192 -0
- data/test/lib/troo/retrieval/remote_test.rb +49 -0
- data/test/support/fabrication.rb +17 -17
- data/test/support/fake_trello/fake_response.rb +38 -0
- data/test/support/fake_trello/server.rb +124 -0
- data/test/support/remotes/all_boards.json +41 -0
- data/test/support/remotes/board.json +140 -0
- data/test/support/remotes/board_by_id.json +75 -0
- data/test/support/remotes/card.json +40 -0
- data/test/support/remotes/card_by_card_id.json +302 -0
- data/test/support/remotes/comment.json +27 -0
- data/test/support/remotes/create_board.json +38 -0
- data/test/support/remotes/list.json +7 -0
- data/test/support/remotes/member.json +50 -0
- data/test/system_test.sh +21 -1
- data/test/test_helper.rb +2 -1
- data/troo.gemspec +28 -20
- metadata +376 -269
- data/configuration.yml.example +0 -7
- data/features/cleanup.feature +0 -13
- data/lib/troo/actions/create_board.rb +0 -46
- data/lib/troo/actions/create_card.rb +0 -44
- data/lib/troo/actions/create_comment.rb +0 -46
- data/lib/troo/actions/create_list.rb +0 -42
- data/lib/troo/actions/move_card.rb +0 -37
- data/lib/troo/adaptors/board.rb +0 -32
- data/lib/troo/adaptors/card.rb +0 -67
- data/lib/troo/adaptors/comment.rb +0 -42
- data/lib/troo/adaptors/list.rb +0 -37
- data/lib/troo/adaptors/member.rb +0 -52
- data/lib/troo/adaptors/resource.rb +0 -17
- data/lib/troo/commands/add/board.rb +0 -26
- data/lib/troo/commands/add/card.rb +0 -33
- data/lib/troo/commands/add/comment.rb +0 -33
- data/lib/troo/commands/add/list.rb +0 -33
- data/lib/troo/commands/add/resource.rb +0 -21
- data/lib/troo/commands/commands.rb +0 -28
- data/lib/troo/commands/default/board.rb +0 -25
- data/lib/troo/commands/default/card.rb +0 -25
- data/lib/troo/commands/default/list.rb +0 -25
- data/lib/troo/commands/default/resource.rb +0 -26
- data/lib/troo/commands/refresh/all.rb +0 -41
- data/lib/troo/commands/refresh/board.rb +0 -28
- data/lib/troo/commands/refresh/card.rb +0 -29
- data/lib/troo/commands/refresh/list.rb +0 -29
- data/lib/troo/commands/refresh/resource.rb +0 -42
- data/lib/troo/commands/show/board.rb +0 -13
- data/lib/troo/commands/show/boards.rb +0 -35
- data/lib/troo/commands/show/card.rb +0 -13
- data/lib/troo/commands/show/comments.rb +0 -21
- data/lib/troo/commands/show/list.rb +0 -13
- data/lib/troo/commands/show/resource.rb +0 -41
- data/lib/troo/commands/status/board.rb +0 -30
- data/lib/troo/commands/status/card.rb +0 -30
- data/lib/troo/commands/status/list.rb +0 -30
- data/lib/troo/commands/status/resource.rb +0 -34
- data/lib/troo/decorators/board.rb +0 -66
- data/lib/troo/decorators/card.rb +0 -105
- data/lib/troo/decorators/comment.rb +0 -36
- data/lib/troo/decorators/list.rb +0 -60
- data/lib/troo/external/board.rb +0 -31
- data/lib/troo/external/card.rb +0 -31
- data/lib/troo/external/comment.rb +0 -27
- data/lib/troo/external/list.rb +0 -27
- data/lib/troo/external/member.rb +0 -27
- data/lib/troo/external/resource.rb +0 -42
- data/lib/troo/helpers/command_helpers.rb +0 -37
- data/lib/troo/models/persistence/board.rb +0 -19
- data/lib/troo/models/persistence/card.rb +0 -19
- data/lib/troo/models/persistence/comment.rb +0 -19
- data/lib/troo/models/persistence/list.rb +0 -19
- data/lib/troo/models/persistence/member.rb +0 -19
- data/lib/troo/models/persistence/resource.rb +0 -50
- data/lib/troo/models/remote/comment.rb +0 -21
- data/lib/troo/models/remote/resource.rb +0 -25
- data/lib/troo/models/retrieval/board.rb +0 -29
- data/lib/troo/models/retrieval/card.rb +0 -33
- data/lib/troo/models/retrieval/comment.rb +0 -25
- data/lib/troo/models/retrieval/list.rb +0 -29
- data/lib/troo/models/retrieval/member.rb +0 -25
- data/lib/troo/models/retrieval/resource.rb +0 -36
- data/lib/troo/views/comment.erb +0 -3
- data/test/cassettes/card_by_card_id.yml +0 -58
- data/test/cassettes/comments_by_list_id.yml +0 -109
- data/test/cassettes/list_by_list_id.yml +0 -56
- data/test/cassettes/member_by_member_id.yml +0 -60
- data/test/cassettes/move_card.yml +0 -61
- data/test/lib/troo/actions/create_board_test.rb +0 -66
- data/test/lib/troo/actions/create_card_test.rb +0 -71
- data/test/lib/troo/actions/create_comment_test.rb +0 -71
- data/test/lib/troo/actions/create_list_test.rb +0 -65
- data/test/lib/troo/actions/move_card_test.rb +0 -54
- data/test/lib/troo/adaptors/board_test.rb +0 -38
- data/test/lib/troo/adaptors/card_test.rb +0 -49
- data/test/lib/troo/adaptors/comment_test.rb +0 -41
- data/test/lib/troo/adaptors/list_test.rb +0 -38
- data/test/lib/troo/adaptors/member_test.rb +0 -44
- data/test/lib/troo/commands/add/board_test.rb +0 -43
- data/test/lib/troo/commands/add/card_test.rb +0 -44
- data/test/lib/troo/commands/add/comment_test.rb +0 -44
- data/test/lib/troo/commands/add/list_test.rb +0 -44
- data/test/lib/troo/commands/add/resource_test.rb +0 -25
- data/test/lib/troo/commands/default/board_test.rb +0 -37
- data/test/lib/troo/commands/default/card_test.rb +0 -37
- data/test/lib/troo/commands/default/list_test.rb +0 -37
- data/test/lib/troo/commands/default/resource_test.rb +0 -20
- data/test/lib/troo/commands/refresh/all_test.rb +0 -39
- data/test/lib/troo/commands/refresh/board_test.rb +0 -62
- data/test/lib/troo/commands/refresh/card_test.rb +0 -62
- data/test/lib/troo/commands/refresh/list_test.rb +0 -62
- data/test/lib/troo/commands/refresh/resource_test.rb +0 -20
- data/test/lib/troo/commands/show/board_test.rb +0 -65
- data/test/lib/troo/commands/show/boards_test.rb +0 -36
- data/test/lib/troo/commands/show/card_test.rb +0 -64
- data/test/lib/troo/commands/show/comments_test.rb +0 -64
- data/test/lib/troo/commands/show/list_test.rb +0 -64
- data/test/lib/troo/commands/show/resource_test.rb +0 -25
- data/test/lib/troo/commands/status/board_test.rb +0 -43
- data/test/lib/troo/commands/status/card_test.rb +0 -43
- data/test/lib/troo/commands/status/list_test.rb +0 -43
- data/test/lib/troo/commands/status/resource_test.rb +0 -19
- data/test/lib/troo/decorators/board_test.rb +0 -129
- data/test/lib/troo/decorators/comment_test.rb +0 -74
- data/test/lib/troo/decorators/list_test.rb +0 -102
- data/test/lib/troo/external/board_test.rb +0 -102
- data/test/lib/troo/external/card_test.rb +0 -131
- data/test/lib/troo/external/comment_test.rb +0 -109
- data/test/lib/troo/external/list_test.rb +0 -94
- data/test/lib/troo/external/member_test.rb +0 -94
- data/test/lib/troo/external/resource_test.rb +0 -25
- data/test/lib/troo/helpers/command_helpers_test.rb +0 -82
- data/test/lib/troo/models/persistence/board_test.rb +0 -62
- data/test/lib/troo/models/persistence/card_test.rb +0 -61
- data/test/lib/troo/models/persistence/comment_test.rb +0 -69
- data/test/lib/troo/models/persistence/list_test.rb +0 -60
- data/test/lib/troo/models/persistence/member_test.rb +0 -60
- data/test/lib/troo/models/remote/comment_test.rb +0 -56
- data/test/lib/troo/models/remote/resource_test.rb +0 -26
- data/test/lib/troo/models/retrieval/board_test.rb +0 -93
- data/test/lib/troo/models/retrieval/card_test.rb +0 -101
- data/test/lib/troo/models/retrieval/comment_test.rb +0 -46
- data/test/lib/troo/models/retrieval/list_test.rb +0 -93
- data/test/lib/troo/models/retrieval/member_test.rb +0 -58
data/lib/troo/cli/default.rb
CHANGED
@@ -6,19 +6,19 @@ module Troo
|
|
6
6
|
desc 'board <id>',
|
7
7
|
'Set the board <id> to default.'
|
8
8
|
def board(id)
|
9
|
-
say Commands::Default
|
9
|
+
say Commands::Default.dispatch(Board, id)
|
10
10
|
end
|
11
11
|
|
12
12
|
desc 'card <id>',
|
13
13
|
'Set the card <id> to default.'
|
14
14
|
def card(id)
|
15
|
-
say Commands::Default
|
15
|
+
say Commands::Default.dispatch(Card, id)
|
16
16
|
end
|
17
17
|
|
18
18
|
desc 'list <id>',
|
19
19
|
'Set the list <id> to default.'
|
20
20
|
def list(id)
|
21
|
-
say Commands::Default
|
21
|
+
say Commands::Default.dispatch(List, id)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
data/lib/troo/cli/main.rb
CHANGED
@@ -1,13 +1,41 @@
|
|
1
1
|
module Troo
|
2
2
|
module CLI
|
3
3
|
class Main < ThorFixes
|
4
|
+
desc 'init',
|
5
|
+
'Prepare to use Troo.'
|
6
|
+
def init
|
7
|
+
if File.exist?(destination)
|
8
|
+
say 'A configuration file already exists in your home ' \
|
9
|
+
'directory.'
|
10
|
+
else
|
11
|
+
say 'A configuration file does not exist in your home ' \
|
12
|
+
'directory, creating one...'
|
13
|
+
FileUtils.cp(source, destination)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
4
17
|
desc 'status',
|
5
18
|
'Get troo status.'
|
6
19
|
def status
|
7
|
-
say 'Status:'
|
8
|
-
say Commands::Status::Board
|
9
|
-
say Commands::Status::List
|
10
|
-
say Commands::Status::Card
|
20
|
+
say heading('Status:')
|
21
|
+
say Commands::Status.dispatch(Troo::Board)
|
22
|
+
say Commands::Status.dispatch(Troo::List)
|
23
|
+
say Commands::Status.dispatch(Troo::Card)
|
24
|
+
|
25
|
+
say "\n" + heading('Last refreshed:')
|
26
|
+
|
27
|
+
if Troo::Refresh.last_performed_at?
|
28
|
+
say Troo::Refresh.last_performed_at
|
29
|
+
else
|
30
|
+
say 'Unknown. Run `troo refresh all`.'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
desc 'config',
|
35
|
+
'Show the current configuration.'
|
36
|
+
def config
|
37
|
+
say heading('Current configuration:')
|
38
|
+
say Troo.configuration.view
|
11
39
|
end
|
12
40
|
|
13
41
|
desc 'cleanup',
|
@@ -15,7 +43,9 @@ module Troo
|
|
15
43
|
def cleanup
|
16
44
|
if yes?('This will remove all local data, are you sure?')
|
17
45
|
Ohm.redis.flushdb
|
18
|
-
say 'All local data has been removed.'
|
46
|
+
say "\n" + 'All local data has been removed.'
|
47
|
+
else
|
48
|
+
say "\n" + 'No local data has been removed.'
|
19
49
|
end
|
20
50
|
end
|
21
51
|
|
@@ -25,12 +55,12 @@ module Troo
|
|
25
55
|
say "troo #{Troo::VERSION}"
|
26
56
|
end
|
27
57
|
|
28
|
-
desc 'show [board|list|card|comments] <id>',
|
29
|
-
'Show the board, list, card with
|
30
|
-
'comments for card with <id>.'
|
58
|
+
desc 'show [boards|board|list|card|comments] <id>',
|
59
|
+
'Show all the boards or the board, list, card with ' \
|
60
|
+
'<id>. Also, show all comments for card with <id>.'
|
31
61
|
subcommand :show, CLI::Show
|
32
62
|
|
33
|
-
desc 'add [board|list|card|comment] <id>',
|
63
|
+
desc 'add [board|list|card|comment] (<id>) (<value>)',
|
34
64
|
'Add board, list, card or comment.'
|
35
65
|
subcommand :add, CLI::Add
|
36
66
|
|
@@ -41,6 +71,27 @@ module Troo
|
|
41
71
|
desc 'refresh [board|list|card] <id>',
|
42
72
|
'Refresh board, list or card with <id>.'
|
43
73
|
subcommand :refresh, CLI::Refresh
|
74
|
+
|
75
|
+
desc 'move <card_id> <list_id> (<board_id>)',
|
76
|
+
'Move card with <card_id> to list with <list_id> ' \
|
77
|
+
'optionally to another board with <board_id>.'
|
78
|
+
def move(card_id, list_id, board_id = nil)
|
79
|
+
say Commands::Move::Card.dispatch(card_id, list_id, board_id)
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def source
|
85
|
+
File.dirname(__FILE__) + '/../.trooconf.example'
|
86
|
+
end
|
87
|
+
|
88
|
+
def destination
|
89
|
+
Dir.home + '/.trooconf'
|
90
|
+
end
|
91
|
+
|
92
|
+
def heading(text = '')
|
93
|
+
[Esc.yellow, Esc.underline, text, Esc.reset].join
|
94
|
+
end
|
44
95
|
end
|
45
96
|
end
|
46
97
|
end
|
data/lib/troo/cli/refresh.rb
CHANGED
@@ -6,25 +6,25 @@ module Troo
|
|
6
6
|
desc 'all',
|
7
7
|
'Refresh all the local data.'
|
8
8
|
def all
|
9
|
-
say Commands::
|
9
|
+
say Commands::RefreshAll.dispatch
|
10
10
|
end
|
11
11
|
|
12
12
|
desc 'board (<id>)',
|
13
13
|
'Refresh the default board or board with <id>.'
|
14
14
|
def board(id = nil)
|
15
|
-
say Commands::Refresh
|
15
|
+
say Commands::Refresh.dispatch(Troo::Board, id)
|
16
16
|
end
|
17
17
|
|
18
18
|
desc 'card (<id>)',
|
19
19
|
'Refresh the default card or card with <id>.'
|
20
20
|
def card(id = nil)
|
21
|
-
say Commands::Refresh
|
21
|
+
say Commands::Refresh.dispatch(Troo::Card, id)
|
22
22
|
end
|
23
23
|
|
24
24
|
desc 'list (<id>)',
|
25
25
|
'Refresh the default list or list with <id>.'
|
26
26
|
def list(id = nil)
|
27
|
-
say Commands::Refresh
|
27
|
+
say Commands::Refresh.dispatch(Troo::List, id)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
data/lib/troo/cli/show.rb
CHANGED
@@ -6,35 +6,35 @@ module Troo
|
|
6
6
|
desc 'boards',
|
7
7
|
'Show all the boards with lists.'
|
8
8
|
def boards
|
9
|
-
say Troo::Commands::
|
9
|
+
say Troo::Commands::ShowBoards.dispatch
|
10
10
|
end
|
11
11
|
|
12
12
|
desc 'board (<id>)',
|
13
13
|
'Show lists and cards for board <id>' \
|
14
|
-
' (uses default
|
14
|
+
' (uses default board if <id> not provided).'
|
15
15
|
def board(id = nil)
|
16
|
-
say Troo::Commands::Show
|
16
|
+
say Troo::Commands::Show.dispatch(Troo::Board, id)
|
17
17
|
end
|
18
18
|
|
19
19
|
desc 'list (<id>)',
|
20
20
|
'Show all cards for list <id>' \
|
21
|
-
' (uses default
|
21
|
+
' (uses default list if <id> not provided).'
|
22
22
|
def list(id = nil)
|
23
|
-
say Troo::Commands::Show
|
23
|
+
say Troo::Commands::Show.dispatch(Troo::List, id)
|
24
24
|
end
|
25
25
|
|
26
26
|
desc 'card (<id>)',
|
27
27
|
'Show a card <id> including last 3 comments' \
|
28
28
|
' (uses default card if <id> not provided).'
|
29
29
|
def card(id = nil)
|
30
|
-
say Troo::Commands::Show
|
30
|
+
say Troo::Commands::Show.dispatch(Troo::Card, id)
|
31
31
|
end
|
32
32
|
|
33
33
|
desc 'comments (<id>)',
|
34
34
|
'Show all comments for card <id>' \
|
35
35
|
' (uses default card if <id> not provided).'
|
36
36
|
def comments(id = nil)
|
37
|
-
say Troo::Commands::
|
37
|
+
say Troo::Commands::ShowComments.dispatch(id)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
data/lib/troo/cli/thor_fixes.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
module Troo
|
2
2
|
module CLI
|
3
3
|
class ThorFixes < Thor
|
4
|
-
# def self.exit_on_failure?
|
5
|
-
# true # exit code is non-zero on error
|
6
|
-
# end
|
7
|
-
|
8
4
|
def self.banner(command, namespace = nil, subcommand = false)
|
9
|
-
|
5
|
+
[basename, @package_name, command.usage].compact.join(' ')
|
10
6
|
end
|
11
7
|
end
|
12
8
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Troo
|
2
|
+
class Preference
|
3
|
+
include Virtus.value_object
|
4
|
+
|
5
|
+
values do
|
6
|
+
attribute :label, String
|
7
|
+
attribute :value, String
|
8
|
+
end
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def view(parameters)
|
12
|
+
new(parameters).view
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def view
|
17
|
+
[formatted_label, value].join(' ')
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def formatted_label
|
23
|
+
(label + ':').rjust(25, ' ')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class Configuration
|
28
|
+
include Virtus.value_object
|
29
|
+
|
30
|
+
values do
|
31
|
+
attribute :api_url
|
32
|
+
attribute :api_key
|
33
|
+
attribute :api_token
|
34
|
+
attribute :api_oauth_token
|
35
|
+
attribute :api_oauth_token_secret
|
36
|
+
attribute :database
|
37
|
+
attribute :allow_remote, Boolean, default: true
|
38
|
+
attribute :logs, Boolean, default: false
|
39
|
+
end
|
40
|
+
|
41
|
+
class << self
|
42
|
+
def load(file, env)
|
43
|
+
new(YAML.load_file(file)[env.to_s])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def view
|
48
|
+
attributes.map do |label, value|
|
49
|
+
Preference.view(label: label, value: value)
|
50
|
+
end.join("\n")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/troo/debug.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'pry'
|
2
|
+
require 'pry-nav'
|
3
|
+
require 'ruby-prof'
|
4
|
+
|
5
|
+
module Troo
|
6
|
+
def self.debug(filename = 'profile.html', &block)
|
7
|
+
RubyProf.start
|
8
|
+
|
9
|
+
yield
|
10
|
+
|
11
|
+
result = RubyProf.stop
|
12
|
+
result.eliminate_methods!([/^Array/, /^Hash/])
|
13
|
+
|
14
|
+
File.open('./tmp/' + filename, 'w') do |file|
|
15
|
+
RubyProf::CallStackPrinter.new(result).print(file)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,28 +1,11 @@
|
|
1
1
|
module Troo
|
2
2
|
module Decorators
|
3
|
-
class Member
|
3
|
+
class Member < Resource
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
|
-
def initialize(member, options = {})
|
7
|
-
@member = member
|
8
|
-
@options = options
|
9
|
-
end
|
10
|
-
|
11
6
|
def username
|
12
|
-
['@',
|
13
|
-
end
|
14
|
-
|
15
|
-
def name
|
16
|
-
member.full_name
|
7
|
+
['@', klass.username].join
|
17
8
|
end
|
18
|
-
|
19
|
-
def initials
|
20
|
-
member.initials
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
attr_reader :member
|
26
9
|
end
|
27
10
|
end
|
28
11
|
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module Troo
|
2
|
+
module Decorators
|
3
|
+
class Resource
|
4
|
+
include DecoratorHelpers
|
5
|
+
|
6
|
+
def initialize(klass, options = {})
|
7
|
+
@klass, @options = klass, options
|
8
|
+
end
|
9
|
+
|
10
|
+
def title
|
11
|
+
[
|
12
|
+
brackets(klass.id),
|
13
|
+
Troo::Formatter.highlight(name, options),
|
14
|
+
default
|
15
|
+
].compact.join(' ') + "\n"
|
16
|
+
end
|
17
|
+
|
18
|
+
def description
|
19
|
+
return 'N/A' if klass.description.nil? ||
|
20
|
+
klass.description.empty?
|
21
|
+
Troo::Formatter.wordwrap(klass.description)
|
22
|
+
end
|
23
|
+
|
24
|
+
def default
|
25
|
+
klass.default? ? '*' : nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def name
|
29
|
+
(klass.name && klass.name.chomp) || 'N/A'
|
30
|
+
end
|
31
|
+
|
32
|
+
def board
|
33
|
+
klass.board.decorator
|
34
|
+
end
|
35
|
+
|
36
|
+
def list
|
37
|
+
klass.list.decorator
|
38
|
+
end
|
39
|
+
|
40
|
+
def lists
|
41
|
+
klass.lists.map { |list| list.decorator }
|
42
|
+
end
|
43
|
+
|
44
|
+
def cards
|
45
|
+
klass.cards.map { |card| card.decorator }
|
46
|
+
end
|
47
|
+
|
48
|
+
def comments
|
49
|
+
if klass.comments.any? && klass.comments.size > 3
|
50
|
+
msg = '(There are more comments, use: ' \
|
51
|
+
"'troo show comments #{klass.short_id}' to view " \
|
52
|
+
' all comments.)'
|
53
|
+
[decorated_recent_comments, msg].join("\n")
|
54
|
+
elsif klass.comments.any?
|
55
|
+
decorated_all_comments
|
56
|
+
else
|
57
|
+
'No comments have been left.'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def members
|
62
|
+
Presenters::Member.new(klass).show
|
63
|
+
end
|
64
|
+
|
65
|
+
def last_activity_date
|
66
|
+
return 'N/A' unless klass.last_activity_date
|
67
|
+
Time.parse(klass.last_activity_date)
|
68
|
+
.strftime('%a, %b %d at %H:%M')
|
69
|
+
end
|
70
|
+
|
71
|
+
def as_view
|
72
|
+
Template.parse(self, '/../views/' + type + '.erb')
|
73
|
+
end
|
74
|
+
|
75
|
+
def username
|
76
|
+
['@', klass.member.username].join
|
77
|
+
end
|
78
|
+
|
79
|
+
def text
|
80
|
+
Troo::Formatter.wordwrap(klass.text)
|
81
|
+
end
|
82
|
+
|
83
|
+
def date
|
84
|
+
Time.parse(klass.date).strftime('%a, %b %d at %H:%M')
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
attr_reader :klass, :options
|
90
|
+
|
91
|
+
def type
|
92
|
+
klass.type.to_s
|
93
|
+
end
|
94
|
+
|
95
|
+
def decorated_recent_comments
|
96
|
+
klass.recent_comments.map do |comment|
|
97
|
+
comment.decorator.as_view
|
98
|
+
end.join
|
99
|
+
end
|
100
|
+
|
101
|
+
def decorated_all_comments
|
102
|
+
klass.comments.map do |comment|
|
103
|
+
comment.decorator.as_view
|
104
|
+
end.join
|
105
|
+
end
|
106
|
+
|
107
|
+
def options
|
108
|
+
defaults.merge!(@options)
|
109
|
+
end
|
110
|
+
|
111
|
+
def defaults
|
112
|
+
{
|
113
|
+
ansicolor: true,
|
114
|
+
colour: colour.fetch(klass.type, nil),
|
115
|
+
underline: true
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
119
|
+
def colour
|
120
|
+
{
|
121
|
+
board: Esc.blue,
|
122
|
+
card: Esc.magenta,
|
123
|
+
list: Esc.green,
|
124
|
+
comments: Esc.cyan,
|
125
|
+
member: Esc.white
|
126
|
+
}
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|