troo 0.0.10 → 0.0.11
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/Gemfile.lock +7 -7
- data/README.md +39 -40
- data/Rakefile +17 -11
- data/features/step_definitions/troo_steps.rb +1 -1
- data/lib/troo.rb +24 -35
- data/lib/troo/api/client.rb +3 -0
- data/lib/troo/api/endpoints.rb +7 -1
- data/lib/troo/api/headers.rb +7 -0
- data/lib/troo/api/request.rb +9 -0
- data/lib/troo/api/response.rb +3 -0
- data/lib/troo/cli/add.rb +11 -0
- data/lib/troo/cli/commands/add.rb +9 -0
- data/lib/troo/cli/commands/default.rb +7 -0
- data/lib/troo/cli/commands/move/card.rb +9 -0
- data/lib/troo/cli/commands/refresh.rb +7 -0
- data/lib/troo/cli/commands/refresh/all.rb +2 -0
- data/lib/troo/cli/commands/show.rb +7 -0
- data/lib/troo/cli/commands/show/show_boards.rb +2 -0
- data/lib/troo/cli/commands/show/show_comments.rb +5 -0
- data/lib/troo/cli/commands/status.rb +5 -0
- data/lib/troo/cli/default.rb +6 -0
- data/lib/troo/cli/main.rb +8 -0
- data/lib/troo/cli/refresh.rb +7 -0
- data/lib/troo/cli/show.rb +9 -0
- data/lib/troo/cli/thor_fixes.rb +4 -0
- data/lib/troo/configuration.rb +5 -30
- data/lib/troo/database.rb +7 -0
- data/lib/troo/debug.rb +3 -0
- data/lib/troo/decorators/member.rb +1 -0
- data/lib/troo/decorators/resource.rb +19 -0
- data/lib/troo/helpers/model_helpers.rb +13 -0
- data/lib/troo/helpers/remote_model_helpers.rb +9 -0
- data/lib/troo/launcher.rb +44 -0
- data/lib/troo/models/behaviours/set_default.rb +6 -0
- data/lib/troo/models/board.rb +9 -0
- data/lib/troo/models/card.rb +15 -0
- data/lib/troo/models/comment.rb +9 -0
- data/lib/troo/models/list.rb +9 -0
- data/lib/troo/models/member.rb +8 -0
- data/lib/troo/models/refresh.rb +2 -0
- data/lib/troo/options.rb +9 -0
- data/lib/troo/persistence/local.rb +8 -0
- data/lib/troo/preference.rb +29 -0
- data/lib/troo/presentation/formatter.rb +12 -0
- data/lib/troo/presentation/sentence.rb +7 -0
- data/lib/troo/presentation/template.rb +7 -0
- data/lib/troo/presenters/board.rb +8 -0
- data/lib/troo/presenters/card.rb +4 -0
- data/lib/troo/presenters/comment.rb +4 -0
- data/lib/troo/presenters/list.rb +5 -0
- data/lib/troo/presenters/member.rb +4 -0
- data/lib/troo/presenters/resource.rb +7 -0
- data/lib/troo/remote/board.rb +6 -0
- data/lib/troo/remote/card.rb +7 -0
- data/lib/troo/remote/comment.rb +10 -0
- data/lib/troo/remote/list.rb +6 -0
- data/lib/troo/remote/member.rb +6 -0
- data/lib/troo/remote/persistence/board.rb +7 -0
- data/lib/troo/remote/persistence/card.rb +9 -0
- data/lib/troo/remote/persistence/comment.rb +7 -0
- data/lib/troo/remote/persistence/list.rb +7 -0
- data/lib/troo/remote/persistence/move_card.rb +9 -0
- data/lib/troo/retrieval/local.rb +16 -0
- data/lib/troo/retrieval/remote.rb +9 -0
- data/lib/troo/troo.rb +4 -0
- data/lib/troo/version.rb +1 -1
- data/test/lib/troo/api/client_test.rb +4 -4
- data/test/lib/troo/api/response_test.rb +27 -0
- data/test/lib/troo/cli/commands/refresh/all_test.rb +2 -2
- data/test/lib/troo/cli/commands/refresh_test.rb +2 -2
- data/test/lib/troo/configuration_test.rb +1 -1
- data/test/lib/troo/database_test.rb +7 -0
- data/test/lib/troo/decorators/resource_test.rb +5 -3
- data/test/lib/troo/launcher_test.rb +7 -0
- data/test/lib/troo/models/card_test.rb +5 -5
- data/test/lib/troo/options_test.rb +7 -0
- data/test/lib/troo/preference_test.rb +21 -0
- data/test/lib/troo/presentation/formatter_test.rb +8 -8
- data/test/lib/troo/presenters/member_test.rb +33 -3
- data/test/lib/troo/presenters/resource_test.rb +2 -2
- data/test/lib/troo/remote/board_test.rb +2 -2
- data/test/lib/troo/remote/card_test.rb +2 -2
- data/test/lib/troo/remote/comment_test.rb +2 -2
- data/test/lib/troo/remote/list_test.rb +2 -2
- data/test/lib/troo/remote/member_test.rb +2 -2
- data/test/lib/troo/remote/persistence/card_test.rb +2 -2
- data/test/lib/troo/remote/persistence/comment_test.rb +2 -2
- data/test/lib/troo/remote/persistence/list_test.rb +2 -2
- data/test/lib/troo_test.rb +5 -0
- data/test/support/remotes/board.json +140 -0
- data/test/test_helper.rb +1 -1
- data/troo.gemspec +2 -1
- metadata +34 -4
@@ -0,0 +1,29 @@
|
|
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
|
+
# @param [Hash]
|
12
|
+
# @return []
|
13
|
+
def view(parameters)
|
14
|
+
new(parameters).view
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [String]
|
19
|
+
def view
|
20
|
+
[formatted_label, value].join(' ')
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def formatted_label
|
26
|
+
(label + ':').rjust(25, ' ')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -26,6 +26,7 @@ module Troo
|
|
26
26
|
attribute :align, Troo::Align, default: Troo::Align.new
|
27
27
|
end
|
28
28
|
|
29
|
+
# @return [String]
|
29
30
|
def underline
|
30
31
|
@underline ? Esc.underline : nil
|
31
32
|
end
|
@@ -38,21 +39,30 @@ module Troo
|
|
38
39
|
attribute :options, Troo::Format
|
39
40
|
|
40
41
|
class << self
|
42
|
+
# @param []
|
43
|
+
# @param [Hash]
|
44
|
+
# @return []
|
41
45
|
def highlight(value, options = {})
|
42
46
|
new(value: value, options: options).highlight
|
43
47
|
end
|
44
48
|
|
49
|
+
# @param []
|
50
|
+
# @return []
|
45
51
|
def error(value)
|
46
52
|
new(value: value,
|
47
53
|
options: { colour: Esc.red }).error
|
48
54
|
end
|
49
55
|
|
56
|
+
# @param []
|
57
|
+
# @param [Integer]
|
58
|
+
# @return []
|
50
59
|
def wordwrap(value, width = 70)
|
51
60
|
new(value: value,
|
52
61
|
options: { align: { width: width } }).wordwrap
|
53
62
|
end
|
54
63
|
end
|
55
64
|
|
65
|
+
# @return [String]
|
56
66
|
def highlight
|
57
67
|
[
|
58
68
|
options.colour,
|
@@ -62,6 +72,7 @@ module Troo
|
|
62
72
|
].join
|
63
73
|
end
|
64
74
|
|
75
|
+
# @return [String]
|
65
76
|
def error
|
66
77
|
[
|
67
78
|
options.colour,
|
@@ -70,6 +81,7 @@ module Troo
|
|
70
81
|
].join
|
71
82
|
end
|
72
83
|
|
84
|
+
# @return []
|
73
85
|
def wordwrap
|
74
86
|
Wordwrap.this(formatted_value, width: width)
|
75
87
|
end
|
@@ -1,15 +1,22 @@
|
|
1
1
|
module Troo
|
2
2
|
class Sentence
|
3
3
|
class << self
|
4
|
+
# @param [Array]
|
5
|
+
# @param [String]
|
6
|
+
# @return [String]
|
4
7
|
def construct(elements, label = 'elements')
|
5
8
|
new(elements, label).construct
|
6
9
|
end
|
7
10
|
end
|
8
11
|
|
12
|
+
# @param [Array]
|
13
|
+
# @param [String]
|
14
|
+
# @return [Troo::Sentence]
|
9
15
|
def initialize(elements, label)
|
10
16
|
@elements, @label = elements, label
|
11
17
|
end
|
12
18
|
|
19
|
+
# @return [String]
|
13
20
|
def construct
|
14
21
|
if one?
|
15
22
|
first
|
@@ -3,15 +3,22 @@ module Troo
|
|
3
3
|
include DecoratorHelpers
|
4
4
|
|
5
5
|
class << self
|
6
|
+
# @param []
|
7
|
+
# @param []
|
8
|
+
# @return []
|
6
9
|
def parse(object, path)
|
7
10
|
new(object, path).parse
|
8
11
|
end
|
9
12
|
end
|
10
13
|
|
14
|
+
# @param []
|
15
|
+
# @param []
|
16
|
+
# @return []
|
11
17
|
def initialize(object, path)
|
12
18
|
@object, @path = object, path
|
13
19
|
end
|
14
20
|
|
21
|
+
# @return []
|
15
22
|
def parse
|
16
23
|
ERB.new(load, nil, '-').result(binding)
|
17
24
|
end
|
@@ -4,16 +4,23 @@ module Troo
|
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
6
|
class << self
|
7
|
+
# @param [Array]
|
8
|
+
# @param [Hash]
|
9
|
+
# @return [NilClass]
|
7
10
|
def all(boards, options = {})
|
8
11
|
boards.map { |board| new(board, options).show }
|
9
12
|
nil
|
10
13
|
end
|
11
14
|
end
|
12
15
|
|
16
|
+
# @param [Troo::Board]
|
17
|
+
# @param [Hash]
|
18
|
+
# @return [Troo::Presenters::Board]
|
13
19
|
def initialize(board, options = {})
|
14
20
|
@board, @options = board, options
|
15
21
|
end
|
16
22
|
|
23
|
+
# @return []
|
17
24
|
def show
|
18
25
|
output.render Presenters::Resource.list_view(board)
|
19
26
|
|
@@ -28,6 +35,7 @@ module Troo
|
|
28
35
|
end
|
29
36
|
end
|
30
37
|
|
38
|
+
# @return []
|
31
39
|
def render_lists
|
32
40
|
output.spacer
|
33
41
|
|
data/lib/troo/presenters/card.rb
CHANGED
@@ -3,10 +3,14 @@ module Troo
|
|
3
3
|
class Card
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
|
+
# @param [Troo::Card]
|
7
|
+
# @param [Hash]
|
8
|
+
# @return [Troo::Presenter::Card]
|
6
9
|
def initialize(card, options = {})
|
7
10
|
@card, @options = card, options
|
8
11
|
end
|
9
12
|
|
13
|
+
# @return []
|
10
14
|
def show
|
11
15
|
output.render Template.parse(card, '/../views/card.erb')
|
12
16
|
end
|
@@ -3,10 +3,14 @@ module Troo
|
|
3
3
|
class Comment
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
|
+
# @param [Troo::Card]
|
7
|
+
# @param [Hash]
|
8
|
+
# @return [Troo::Presenters::Comment]
|
6
9
|
def initialize(card, options = {})
|
7
10
|
@card, @options = card, options
|
8
11
|
end
|
9
12
|
|
13
|
+
# @return []
|
10
14
|
def show
|
11
15
|
title
|
12
16
|
|
data/lib/troo/presenters/list.rb
CHANGED
@@ -3,10 +3,13 @@ module Troo
|
|
3
3
|
class List
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
|
+
# @param [Troo::List]
|
7
|
+
# @return [Troo::Presenters::List]
|
6
8
|
def initialize(list, options = {})
|
7
9
|
@list, @options = list, options
|
8
10
|
end
|
9
11
|
|
12
|
+
# @return [String]
|
10
13
|
def show
|
11
14
|
output.render Presenters::Resource.list_view(list.board)
|
12
15
|
|
@@ -17,6 +20,7 @@ module Troo
|
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
23
|
+
# @return [String]
|
20
24
|
def render_list
|
21
25
|
output.render Presenters::Resource.list_view(list)
|
22
26
|
|
@@ -31,6 +35,7 @@ module Troo
|
|
31
35
|
end
|
32
36
|
end
|
33
37
|
|
38
|
+
# @return [String]
|
34
39
|
def render_cards
|
35
40
|
output.spacer do
|
36
41
|
list.cards.map do |card|
|
@@ -3,10 +3,14 @@ module Troo
|
|
3
3
|
class Member
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
|
+
# @param [Troo::Card]
|
7
|
+
# @param [Hash]
|
8
|
+
# @return [Troo::Presenters::Member]
|
6
9
|
def initialize(card, options = {})
|
7
10
|
@card, @options = card, options
|
8
11
|
end
|
9
12
|
|
13
|
+
# @return [String]
|
10
14
|
def show
|
11
15
|
Sentence.construct(members, 'members')
|
12
16
|
end
|
@@ -4,15 +4,22 @@ module Troo
|
|
4
4
|
include DecoratorHelpers
|
5
5
|
|
6
6
|
class << self
|
7
|
+
# @param []
|
8
|
+
# @param [Hash]
|
9
|
+
# @return []
|
7
10
|
def list_view(klass, options = {})
|
8
11
|
new(klass, options).list_view
|
9
12
|
end
|
10
13
|
end
|
11
14
|
|
15
|
+
# @param []
|
16
|
+
# @param [Hash]
|
17
|
+
# @return []
|
12
18
|
def initialize(klass, options = {})
|
13
19
|
@klass, @options = klass, options
|
14
20
|
end
|
15
21
|
|
22
|
+
# @return []
|
16
23
|
def list_view
|
17
24
|
[id, name, default].compact.join(' ') + "\n"
|
18
25
|
end
|
data/lib/troo/remote/board.rb
CHANGED
@@ -20,10 +20,12 @@ module Troo
|
|
20
20
|
attribute :members, Array[Troo::Remote::Member]
|
21
21
|
|
22
22
|
class << self
|
23
|
+
# @return [Hash]
|
23
24
|
def remote_options
|
24
25
|
{ mode: :board }
|
25
26
|
end
|
26
27
|
|
28
|
+
# @return [Hash]
|
27
29
|
def all
|
28
30
|
{
|
29
31
|
endpoint: :boards_all,
|
@@ -31,6 +33,7 @@ module Troo
|
|
31
33
|
}
|
32
34
|
end
|
33
35
|
|
36
|
+
# @return [Hash]
|
34
37
|
def by_board_id
|
35
38
|
{
|
36
39
|
endpoint: :board_by_id,
|
@@ -43,14 +46,17 @@ module Troo
|
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
49
|
+
# @return [Hash]
|
46
50
|
def associations
|
47
51
|
[:lists, :cards, :members]
|
48
52
|
end
|
49
53
|
|
54
|
+
# @return []
|
50
55
|
def local_model
|
51
56
|
Troo::Board
|
52
57
|
end
|
53
58
|
|
59
|
+
# @return [Hash]
|
54
60
|
def adapted
|
55
61
|
{
|
56
62
|
external_id: id,
|
data/lib/troo/remote/card.rb
CHANGED
@@ -27,10 +27,12 @@ module Troo
|
|
27
27
|
attribute :actions, Array[Troo::Remote::Comment]
|
28
28
|
|
29
29
|
class << self
|
30
|
+
# @return [Hash]
|
30
31
|
def remote_options
|
31
32
|
{ mode: :card }
|
32
33
|
end
|
33
34
|
|
35
|
+
# @return [Hash]
|
34
36
|
def by_board_id
|
35
37
|
{
|
36
38
|
endpoint: :cards_by_board_id,
|
@@ -38,6 +40,7 @@ module Troo
|
|
38
40
|
}
|
39
41
|
end
|
40
42
|
|
43
|
+
# @return [Hash]
|
41
44
|
def by_list_id
|
42
45
|
{
|
43
46
|
endpoint: :cards_by_list_id,
|
@@ -45,6 +48,7 @@ module Troo
|
|
45
48
|
}
|
46
49
|
end
|
47
50
|
|
51
|
+
# @return [Hash]
|
48
52
|
def by_card_id
|
49
53
|
{
|
50
54
|
endpoint: :card_by_id,
|
@@ -53,14 +57,17 @@ module Troo
|
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
60
|
+
# @return [Array]
|
56
61
|
def associations
|
57
62
|
[:actions]
|
58
63
|
end
|
59
64
|
|
65
|
+
# @return []
|
60
66
|
def local_model
|
61
67
|
Troo::Card
|
62
68
|
end
|
63
69
|
|
70
|
+
# @return [Hash]
|
64
71
|
def adapted
|
65
72
|
{
|
66
73
|
short_id: idShort,
|
data/lib/troo/remote/comment.rb
CHANGED
@@ -12,10 +12,12 @@ module Troo
|
|
12
12
|
attribute :memberCreator, Troo::Remote::Member
|
13
13
|
|
14
14
|
class << self
|
15
|
+
# @return [Hash]
|
15
16
|
def remote_options
|
16
17
|
{ mode: :card }
|
17
18
|
end
|
18
19
|
|
20
|
+
# @return [Hash]
|
19
21
|
def by_board_id
|
20
22
|
{
|
21
23
|
endpoint: :comments_by_board_id,
|
@@ -23,6 +25,7 @@ module Troo
|
|
23
25
|
}
|
24
26
|
end
|
25
27
|
|
28
|
+
# @return [Hash]
|
26
29
|
def by_card_id
|
27
30
|
{
|
28
31
|
endpoint: :comments_by_card_id,
|
@@ -31,30 +34,37 @@ module Troo
|
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
37
|
+
# @return []
|
34
38
|
def external_board_id
|
35
39
|
data.board.id
|
36
40
|
end
|
37
41
|
|
42
|
+
# @return []
|
38
43
|
def external_card_id
|
39
44
|
data.card.id
|
40
45
|
end
|
41
46
|
|
47
|
+
# @return []
|
42
48
|
def external_comment_id
|
43
49
|
id
|
44
50
|
end
|
45
51
|
|
52
|
+
# @return []
|
46
53
|
def text
|
47
54
|
data.text
|
48
55
|
end
|
49
56
|
|
57
|
+
# @return [Array]
|
50
58
|
def associations
|
51
59
|
[:memberCreator]
|
52
60
|
end
|
53
61
|
|
62
|
+
# @return []
|
54
63
|
def local_model
|
55
64
|
Troo::Comment
|
56
65
|
end
|
57
66
|
|
67
|
+
# @return [Hash]
|
58
68
|
def adapted
|
59
69
|
{
|
60
70
|
external_id: id,
|
data/lib/troo/remote/list.rb
CHANGED
@@ -11,10 +11,12 @@ module Troo
|
|
11
11
|
attribute :pos, Integer
|
12
12
|
|
13
13
|
class << self
|
14
|
+
# @return [Hash]
|
14
15
|
def remote_options
|
15
16
|
{ mode: :list }
|
16
17
|
end
|
17
18
|
|
19
|
+
# @return [Hash]
|
18
20
|
def by_board_id
|
19
21
|
{
|
20
22
|
endpoint: :lists_by_board_id,
|
@@ -22,19 +24,23 @@ module Troo
|
|
22
24
|
}
|
23
25
|
end
|
24
26
|
|
27
|
+
# @return [Hash]
|
25
28
|
def by_list_id
|
26
29
|
{ endpoint: :list_by_id }
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
33
|
+
# @return [Array]
|
30
34
|
def associations
|
31
35
|
[]
|
32
36
|
end
|
33
37
|
|
38
|
+
# @return []
|
34
39
|
def local_model
|
35
40
|
Troo::List
|
36
41
|
end
|
37
42
|
|
43
|
+
# @return [Hash]
|
38
44
|
def adapted
|
39
45
|
{
|
40
46
|
external_board_id: idBoard,
|
data/lib/troo/remote/member.rb
CHANGED
@@ -34,10 +34,12 @@ module Troo
|
|
34
34
|
attribute :premiumFeatures
|
35
35
|
|
36
36
|
class << self
|
37
|
+
# @return [Hash]
|
37
38
|
def remote_options
|
38
39
|
{ mode: :member }
|
39
40
|
end
|
40
41
|
|
42
|
+
# @return [Hash]
|
41
43
|
def by_board_id
|
42
44
|
{
|
43
45
|
endpoint: :members_by_board_id,
|
@@ -45,19 +47,23 @@ module Troo
|
|
45
47
|
}
|
46
48
|
end
|
47
49
|
|
50
|
+
# @return [Hash]
|
48
51
|
def by_member_id
|
49
52
|
{ endpoint: :member_by_id }
|
50
53
|
end
|
51
54
|
end
|
52
55
|
|
56
|
+
# @return [Array]
|
53
57
|
def associations
|
54
58
|
[]
|
55
59
|
end
|
56
60
|
|
61
|
+
# @return []
|
57
62
|
def local_model
|
58
63
|
Troo::Member
|
59
64
|
end
|
60
65
|
|
66
|
+
# @return [Hash]
|
61
67
|
def adapted
|
62
68
|
{
|
63
69
|
external_id: id,
|