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.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.ruby-version +1 -1
  4. data/.trooconf.example +18 -0
  5. data/Gemfile.lock +178 -0
  6. data/README.md +77 -21
  7. data/Rakefile +1 -1
  8. data/bin/completion.bash +10 -0
  9. data/bin/completion.zsh +10 -0
  10. data/bin/init.sh +15 -0
  11. data/bin/troo +12 -3
  12. data/config/cucumber.yml +3 -3
  13. data/config/en.yml +29 -0
  14. data/config/trello_api.yml +19 -0
  15. data/features/add/board.feature +3 -19
  16. data/features/add/card.feature +14 -18
  17. data/features/add/comment.feature +14 -14
  18. data/features/add/list.feature +11 -14
  19. data/features/default/board.feature +4 -4
  20. data/features/default/card.feature +4 -4
  21. data/features/default/list.feature +4 -4
  22. data/features/move/card.feature +54 -0
  23. data/features/refresh/all.feature +8 -4
  24. data/features/refresh/board.feature +9 -6
  25. data/features/refresh/card.feature +9 -6
  26. data/features/refresh/list.feature +9 -6
  27. data/features/show/board.feature +7 -7
  28. data/features/show/boards.feature +19 -0
  29. data/features/show/card.feature +86 -15
  30. data/features/show/comment.feature +14 -12
  31. data/features/show/list.feature +19 -14
  32. data/features/status.feature +27 -13
  33. data/features/step_definitions/fabrication_steps.rb +43 -8
  34. data/features/step_definitions/troo_steps.rb +3 -2
  35. data/features/support/env.rb +1 -0
  36. data/features/troo.feature +0 -12
  37. data/lib/troo.rb +32 -29
  38. data/lib/troo/api/client.rb +117 -0
  39. data/lib/troo/api/endpoints.rb +39 -0
  40. data/lib/troo/api/headers.rb +44 -0
  41. data/lib/troo/api/oauth_settings.rb +36 -0
  42. data/lib/troo/api/request.rb +37 -0
  43. data/lib/troo/api/response.rb +31 -0
  44. data/lib/troo/cli/add.rb +8 -12
  45. data/lib/troo/cli/commands/add.rb +95 -0
  46. data/lib/troo/cli/commands/default.rb +44 -0
  47. data/lib/troo/cli/commands/move/card.rb +95 -0
  48. data/lib/troo/cli/commands/refresh.rb +80 -0
  49. data/lib/troo/cli/commands/refresh/all.rb +52 -0
  50. data/lib/troo/cli/commands/show.rb +56 -0
  51. data/lib/troo/cli/commands/show/show_boards.rb +36 -0
  52. data/lib/troo/cli/commands/show/show_comments.rb +54 -0
  53. data/lib/troo/cli/commands/status.rb +68 -0
  54. data/lib/troo/cli/default.rb +3 -3
  55. data/lib/troo/cli/main.rb +60 -9
  56. data/lib/troo/cli/refresh.rb +4 -4
  57. data/lib/troo/cli/show.rb +7 -7
  58. data/lib/troo/cli/thor_fixes.rb +1 -5
  59. data/lib/troo/configuration.rb +53 -0
  60. data/lib/troo/debug.rb +18 -0
  61. data/lib/troo/decorators/member.rb +2 -19
  62. data/lib/troo/decorators/resource.rb +130 -0
  63. data/lib/troo/helpers/decorator_helpers.rb +21 -74
  64. data/lib/troo/helpers/model_helpers.rb +19 -4
  65. data/lib/troo/helpers/remote_model_helpers.rb +54 -0
  66. data/lib/troo/models/board.rb +19 -11
  67. data/lib/troo/models/card.rb +20 -17
  68. data/lib/troo/models/comment.rb +28 -8
  69. data/lib/troo/models/list.rb +22 -14
  70. data/lib/troo/models/member.rb +21 -5
  71. data/lib/troo/models/refresh.rb +3 -4
  72. data/lib/troo/persistence/local.rb +63 -0
  73. data/lib/troo/presentation/formatter.rb +132 -0
  74. data/lib/troo/presentation/template.rb +0 -4
  75. data/lib/troo/presenters/board.rb +32 -51
  76. data/lib/troo/presenters/card.rb +4 -11
  77. data/lib/troo/presenters/comment.rb +30 -16
  78. data/lib/troo/presenters/list.rb +25 -21
  79. data/lib/troo/presenters/member.rb +1 -8
  80. data/lib/troo/remote/all.rb +16 -0
  81. data/lib/troo/remote/board.rb +64 -0
  82. data/lib/troo/remote/card.rb +81 -0
  83. data/lib/troo/remote/comment.rb +70 -0
  84. data/lib/troo/remote/comment_data.rb +11 -0
  85. data/lib/troo/remote/comment_data_board.rb +13 -0
  86. data/lib/troo/remote/comment_data_card.rb +15 -0
  87. data/lib/troo/remote/list.rb +49 -0
  88. data/lib/troo/remote/member.rb +75 -0
  89. data/lib/troo/remote/persistence/board.rb +57 -0
  90. data/lib/troo/remote/persistence/card.rb +59 -0
  91. data/lib/troo/remote/persistence/comment.rb +58 -0
  92. data/lib/troo/remote/persistence/list.rb +57 -0
  93. data/lib/troo/remote/persistence/move_card.rb +85 -0
  94. data/lib/troo/retrieval/local.rb +100 -0
  95. data/lib/troo/retrieval/remote.rb +91 -0
  96. data/lib/troo/troo.rb +42 -42
  97. data/lib/troo/version.rb +1 -1
  98. data/lib/troo/views/card.erb +8 -10
  99. data/lib/troo/views/comments.erb +4 -0
  100. data/test/cassettes/board_by_id.yml +21 -30
  101. data/test/cassettes/boards_all.yml +22 -90
  102. data/test/cassettes/card_by_id.yml +49 -0
  103. data/test/cassettes/cards_by_board_id.yml +22 -90
  104. data/test/cassettes/cards_by_list_id.yml +22 -87
  105. data/test/cassettes/comments_by_board_id.yml +22 -95
  106. data/test/cassettes/comments_by_card_id.yml +22 -87
  107. data/test/cassettes/create_board.yml +20 -32
  108. data/test/cassettes/create_card.yml +21 -35
  109. data/test/cassettes/create_comment.yml +19 -37
  110. data/test/cassettes/create_list.yml +18 -32
  111. data/test/cassettes/list_by_id.yml +46 -0
  112. data/test/cassettes/lists_by_board_id.yml +19 -91
  113. data/test/cassettes/member_by_id.yml +48 -0
  114. data/test/cassettes/members_by_board_id.yml +21 -82
  115. data/test/cassettes/move_card_board.yml +49 -0
  116. data/test/cassettes/move_card_list.yml +49 -0
  117. data/test/lib/troo/api/client_test.rb +75 -0
  118. data/test/lib/troo/api/endpoints_test.rb +48 -0
  119. data/test/lib/troo/api/headers_test.rb +27 -0
  120. data/test/lib/troo/api/oauth_settings_test.rb +10 -0
  121. data/test/lib/troo/api/request_test.rb +63 -0
  122. data/test/lib/troo/api/response_test.rb +15 -0
  123. data/test/lib/troo/cli/add_test.rb +113 -0
  124. data/test/lib/troo/cli/commands/add_test.rb +66 -0
  125. data/test/lib/troo/cli/commands/default_test.rb +39 -0
  126. data/test/lib/troo/cli/commands/move/card_test.rb +86 -0
  127. data/test/lib/troo/cli/commands/refresh/all_test.rb +37 -0
  128. data/test/lib/troo/cli/commands/refresh_test.rb +59 -0
  129. data/test/lib/troo/cli/commands/show/show_boards_test.rb +35 -0
  130. data/test/lib/troo/cli/commands/show/show_comments_test.rb +63 -0
  131. data/test/lib/troo/cli/commands/show_test.rb +65 -0
  132. data/test/lib/troo/cli/commands/status_test.rb +48 -0
  133. data/test/lib/troo/cli/default_test.rb +39 -0
  134. data/test/lib/troo/cli/main_test.rb +102 -0
  135. data/test/lib/troo/cli/refresh_test.rb +43 -0
  136. data/test/lib/troo/cli/show_test.rb +49 -0
  137. data/test/lib/troo/cli/thor_fixes_test.rb +38 -0
  138. data/test/lib/troo/configuration_test.rb +43 -0
  139. data/test/lib/troo/debug_test.rb +25 -0
  140. data/test/lib/troo/decorators/card_test.rb +105 -229
  141. data/test/lib/troo/decorators/member_test.rb +20 -35
  142. data/test/lib/troo/decorators/resource_test.rb +157 -0
  143. data/test/lib/troo/helpers/decorator_helpers_test.rb +10 -19
  144. data/test/lib/troo/helpers/model_helpers_test.rb +18 -8
  145. data/test/lib/troo/helpers/remote_model_helpers_test.rb +68 -0
  146. data/test/lib/troo/models/behaviours/set_default_test.rb +0 -10
  147. data/test/lib/troo/models/board_test.rb +2 -2
  148. data/test/lib/troo/models/card_test.rb +2 -2
  149. data/test/lib/troo/models/comment_test.rb +6 -2
  150. data/test/lib/troo/models/list_test.rb +2 -2
  151. data/test/lib/troo/models/member_test.rb +6 -2
  152. data/test/lib/troo/persistence/local_test.rb +31 -0
  153. data/test/lib/troo/presentation/formatter_test.rb +31 -0
  154. data/test/lib/troo/presentation/sentence_test.rb +0 -12
  155. data/test/lib/troo/presentation/template_test.rb +1 -14
  156. data/test/lib/troo/presenters/board_test.rb +17 -36
  157. data/test/lib/troo/presenters/card_test.rb +1 -31
  158. data/test/lib/troo/presenters/comment_test.rb +19 -19
  159. data/test/lib/troo/presenters/list_test.rb +18 -18
  160. data/test/lib/troo/presenters/member_test.rb +1 -14
  161. data/test/lib/troo/remote/board_test.rb +66 -0
  162. data/test/lib/troo/remote/card_test.rb +81 -0
  163. data/test/lib/troo/remote/comment_data_board.rb +9 -0
  164. data/test/lib/troo/remote/comment_data_card_test.rb +9 -0
  165. data/test/lib/troo/remote/comment_data_test.rb +9 -0
  166. data/test/lib/troo/remote/comment_test.rb +100 -0
  167. data/test/lib/troo/remote/list_test.rb +67 -0
  168. data/test/lib/troo/remote/member_test.rb +70 -0
  169. data/test/lib/troo/remote/persistence/board_test.rb +39 -0
  170. data/test/lib/troo/remote/persistence/card_test.rb +50 -0
  171. data/test/lib/troo/remote/persistence/comment_test.rb +45 -0
  172. data/test/lib/troo/remote/persistence/list_test.rb +45 -0
  173. data/test/lib/troo/remote/persistence/move_card_test.rb +78 -0
  174. data/test/lib/troo/retrieval/local_test.rb +192 -0
  175. data/test/lib/troo/retrieval/remote_test.rb +49 -0
  176. data/test/support/fabrication.rb +17 -17
  177. data/test/support/fake_trello/fake_response.rb +38 -0
  178. data/test/support/fake_trello/server.rb +124 -0
  179. data/test/support/remotes/all_boards.json +41 -0
  180. data/test/support/remotes/board.json +140 -0
  181. data/test/support/remotes/board_by_id.json +75 -0
  182. data/test/support/remotes/card.json +40 -0
  183. data/test/support/remotes/card_by_card_id.json +302 -0
  184. data/test/support/remotes/comment.json +27 -0
  185. data/test/support/remotes/create_board.json +38 -0
  186. data/test/support/remotes/list.json +7 -0
  187. data/test/support/remotes/member.json +50 -0
  188. data/test/system_test.sh +21 -1
  189. data/test/test_helper.rb +2 -1
  190. data/troo.gemspec +28 -20
  191. metadata +376 -269
  192. data/configuration.yml.example +0 -7
  193. data/features/cleanup.feature +0 -13
  194. data/lib/troo/actions/create_board.rb +0 -46
  195. data/lib/troo/actions/create_card.rb +0 -44
  196. data/lib/troo/actions/create_comment.rb +0 -46
  197. data/lib/troo/actions/create_list.rb +0 -42
  198. data/lib/troo/actions/move_card.rb +0 -37
  199. data/lib/troo/adaptors/board.rb +0 -32
  200. data/lib/troo/adaptors/card.rb +0 -67
  201. data/lib/troo/adaptors/comment.rb +0 -42
  202. data/lib/troo/adaptors/list.rb +0 -37
  203. data/lib/troo/adaptors/member.rb +0 -52
  204. data/lib/troo/adaptors/resource.rb +0 -17
  205. data/lib/troo/commands/add/board.rb +0 -26
  206. data/lib/troo/commands/add/card.rb +0 -33
  207. data/lib/troo/commands/add/comment.rb +0 -33
  208. data/lib/troo/commands/add/list.rb +0 -33
  209. data/lib/troo/commands/add/resource.rb +0 -21
  210. data/lib/troo/commands/commands.rb +0 -28
  211. data/lib/troo/commands/default/board.rb +0 -25
  212. data/lib/troo/commands/default/card.rb +0 -25
  213. data/lib/troo/commands/default/list.rb +0 -25
  214. data/lib/troo/commands/default/resource.rb +0 -26
  215. data/lib/troo/commands/refresh/all.rb +0 -41
  216. data/lib/troo/commands/refresh/board.rb +0 -28
  217. data/lib/troo/commands/refresh/card.rb +0 -29
  218. data/lib/troo/commands/refresh/list.rb +0 -29
  219. data/lib/troo/commands/refresh/resource.rb +0 -42
  220. data/lib/troo/commands/show/board.rb +0 -13
  221. data/lib/troo/commands/show/boards.rb +0 -35
  222. data/lib/troo/commands/show/card.rb +0 -13
  223. data/lib/troo/commands/show/comments.rb +0 -21
  224. data/lib/troo/commands/show/list.rb +0 -13
  225. data/lib/troo/commands/show/resource.rb +0 -41
  226. data/lib/troo/commands/status/board.rb +0 -30
  227. data/lib/troo/commands/status/card.rb +0 -30
  228. data/lib/troo/commands/status/list.rb +0 -30
  229. data/lib/troo/commands/status/resource.rb +0 -34
  230. data/lib/troo/decorators/board.rb +0 -66
  231. data/lib/troo/decorators/card.rb +0 -105
  232. data/lib/troo/decorators/comment.rb +0 -36
  233. data/lib/troo/decorators/list.rb +0 -60
  234. data/lib/troo/external/board.rb +0 -31
  235. data/lib/troo/external/card.rb +0 -31
  236. data/lib/troo/external/comment.rb +0 -27
  237. data/lib/troo/external/list.rb +0 -27
  238. data/lib/troo/external/member.rb +0 -27
  239. data/lib/troo/external/resource.rb +0 -42
  240. data/lib/troo/helpers/command_helpers.rb +0 -37
  241. data/lib/troo/models/persistence/board.rb +0 -19
  242. data/lib/troo/models/persistence/card.rb +0 -19
  243. data/lib/troo/models/persistence/comment.rb +0 -19
  244. data/lib/troo/models/persistence/list.rb +0 -19
  245. data/lib/troo/models/persistence/member.rb +0 -19
  246. data/lib/troo/models/persistence/resource.rb +0 -50
  247. data/lib/troo/models/remote/comment.rb +0 -21
  248. data/lib/troo/models/remote/resource.rb +0 -25
  249. data/lib/troo/models/retrieval/board.rb +0 -29
  250. data/lib/troo/models/retrieval/card.rb +0 -33
  251. data/lib/troo/models/retrieval/comment.rb +0 -25
  252. data/lib/troo/models/retrieval/list.rb +0 -29
  253. data/lib/troo/models/retrieval/member.rb +0 -25
  254. data/lib/troo/models/retrieval/resource.rb +0 -36
  255. data/lib/troo/views/comment.erb +0 -3
  256. data/test/cassettes/card_by_card_id.yml +0 -58
  257. data/test/cassettes/comments_by_list_id.yml +0 -109
  258. data/test/cassettes/list_by_list_id.yml +0 -56
  259. data/test/cassettes/member_by_member_id.yml +0 -60
  260. data/test/cassettes/move_card.yml +0 -61
  261. data/test/lib/troo/actions/create_board_test.rb +0 -66
  262. data/test/lib/troo/actions/create_card_test.rb +0 -71
  263. data/test/lib/troo/actions/create_comment_test.rb +0 -71
  264. data/test/lib/troo/actions/create_list_test.rb +0 -65
  265. data/test/lib/troo/actions/move_card_test.rb +0 -54
  266. data/test/lib/troo/adaptors/board_test.rb +0 -38
  267. data/test/lib/troo/adaptors/card_test.rb +0 -49
  268. data/test/lib/troo/adaptors/comment_test.rb +0 -41
  269. data/test/lib/troo/adaptors/list_test.rb +0 -38
  270. data/test/lib/troo/adaptors/member_test.rb +0 -44
  271. data/test/lib/troo/commands/add/board_test.rb +0 -43
  272. data/test/lib/troo/commands/add/card_test.rb +0 -44
  273. data/test/lib/troo/commands/add/comment_test.rb +0 -44
  274. data/test/lib/troo/commands/add/list_test.rb +0 -44
  275. data/test/lib/troo/commands/add/resource_test.rb +0 -25
  276. data/test/lib/troo/commands/default/board_test.rb +0 -37
  277. data/test/lib/troo/commands/default/card_test.rb +0 -37
  278. data/test/lib/troo/commands/default/list_test.rb +0 -37
  279. data/test/lib/troo/commands/default/resource_test.rb +0 -20
  280. data/test/lib/troo/commands/refresh/all_test.rb +0 -39
  281. data/test/lib/troo/commands/refresh/board_test.rb +0 -62
  282. data/test/lib/troo/commands/refresh/card_test.rb +0 -62
  283. data/test/lib/troo/commands/refresh/list_test.rb +0 -62
  284. data/test/lib/troo/commands/refresh/resource_test.rb +0 -20
  285. data/test/lib/troo/commands/show/board_test.rb +0 -65
  286. data/test/lib/troo/commands/show/boards_test.rb +0 -36
  287. data/test/lib/troo/commands/show/card_test.rb +0 -64
  288. data/test/lib/troo/commands/show/comments_test.rb +0 -64
  289. data/test/lib/troo/commands/show/list_test.rb +0 -64
  290. data/test/lib/troo/commands/show/resource_test.rb +0 -25
  291. data/test/lib/troo/commands/status/board_test.rb +0 -43
  292. data/test/lib/troo/commands/status/card_test.rb +0 -43
  293. data/test/lib/troo/commands/status/list_test.rb +0 -43
  294. data/test/lib/troo/commands/status/resource_test.rb +0 -19
  295. data/test/lib/troo/decorators/board_test.rb +0 -129
  296. data/test/lib/troo/decorators/comment_test.rb +0 -74
  297. data/test/lib/troo/decorators/list_test.rb +0 -102
  298. data/test/lib/troo/external/board_test.rb +0 -102
  299. data/test/lib/troo/external/card_test.rb +0 -131
  300. data/test/lib/troo/external/comment_test.rb +0 -109
  301. data/test/lib/troo/external/list_test.rb +0 -94
  302. data/test/lib/troo/external/member_test.rb +0 -94
  303. data/test/lib/troo/external/resource_test.rb +0 -25
  304. data/test/lib/troo/helpers/command_helpers_test.rb +0 -82
  305. data/test/lib/troo/models/persistence/board_test.rb +0 -62
  306. data/test/lib/troo/models/persistence/card_test.rb +0 -61
  307. data/test/lib/troo/models/persistence/comment_test.rb +0 -69
  308. data/test/lib/troo/models/persistence/list_test.rb +0 -60
  309. data/test/lib/troo/models/persistence/member_test.rb +0 -60
  310. data/test/lib/troo/models/remote/comment_test.rb +0 -56
  311. data/test/lib/troo/models/remote/resource_test.rb +0 -26
  312. data/test/lib/troo/models/retrieval/board_test.rb +0 -93
  313. data/test/lib/troo/models/retrieval/card_test.rb +0 -101
  314. data/test/lib/troo/models/retrieval/comment_test.rb +0 -46
  315. data/test/lib/troo/models/retrieval/list_test.rb +0 -93
  316. data/test/lib/troo/models/retrieval/member_test.rb +0 -58
@@ -1,36 +0,0 @@
1
- module Troo
2
- module Decorators
3
- class Comment
4
- include DecoratorHelpers
5
-
6
- def initialize(comment, options = {})
7
- @comment = comment
8
- @options = options
9
- end
10
-
11
- def as_view
12
- Template.parse(self, '/../views/comment.erb')
13
- end
14
-
15
- def member_username
16
- [comment.member.username, ':'].join
17
- end
18
-
19
- def text
20
- word_wrap(comment.text)
21
- end
22
-
23
- def date
24
- Time.parse(comment.date).strftime('%a, %b %d at %H:%M')
25
- end
26
-
27
- def id
28
- brackets(comment.id)
29
- end
30
-
31
- private
32
-
33
- attr_reader :comment
34
- end
35
- end
36
- end
@@ -1,60 +0,0 @@
1
- module Troo
2
- module Decorators
3
- class List
4
- include DecoratorHelpers
5
-
6
- def initialize(list, options = {})
7
- @list = list
8
- @options = options
9
- end
10
-
11
- def short
12
- [default_str, id_str, name_str].join + "\n"
13
- end
14
-
15
- def name_str
16
- highlight(name, options)
17
- end
18
-
19
- def default_str
20
- default.center(3)
21
- end
22
-
23
- def id_str
24
- highlight(brackets(id) + ' ', options).rjust(6)
25
- end
26
-
27
- def name
28
- (list.name && list.name.chomp) || 'N/A'
29
- end
30
-
31
- def default
32
- list.default? ? '*' : ''
33
- end
34
-
35
- def id
36
- list.id.to_s
37
- end
38
-
39
- def cards(alt_options = {})
40
- list.cards.map { |card| card.decorator(alt_options) }
41
- end
42
-
43
- private
44
-
45
- attr_reader :list
46
-
47
- def options
48
- defaults.merge!(@options)
49
- end
50
-
51
- def defaults
52
- {
53
- ansicolor: true,
54
- colour: Esc.green,
55
- underline: Esc.underline
56
- }
57
- end
58
- end
59
- end
60
- end
@@ -1,31 +0,0 @@
1
- module Troo
2
- module External
3
- class Board < Resource
4
- def persist
5
- Persistence::Board.with_collection(fetch)
6
- end
7
-
8
- private
9
-
10
- def all_boards
11
- Trello::Board.all
12
- end
13
-
14
- def by_board_id
15
- [Trello::Board.find(external_id)]
16
- end
17
-
18
- def by_list_id
19
- []
20
- end
21
-
22
- def by_card_id
23
- []
24
- end
25
-
26
- def by_member_id
27
- []
28
- end
29
- end
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- module Troo
2
- module External
3
- class Card < Resource
4
- def persist
5
- Persistence::Card.with_collection(fetch)
6
- end
7
-
8
- private
9
-
10
- def defaults
11
- { comments: true, mode: :board }
12
- end
13
-
14
- def by_board_id
15
- Trello::Board.find(external_id).cards
16
- end
17
-
18
- def by_list_id
19
- Trello::List.find(external_id).cards
20
- end
21
-
22
- def by_card_id
23
- [Trello::Card.find(external_id)]
24
- end
25
-
26
- def by_member_id
27
- []
28
- end
29
- end
30
- end
31
- end
@@ -1,27 +0,0 @@
1
- module Troo
2
- module External
3
- class Comment < Resource
4
- def persist
5
- Persistence::Comment.with_collection(fetch)
6
- end
7
-
8
- private
9
-
10
- def by_board_id
11
- Trello::Board.find(external_id).actions(filter: 'commentCard')
12
- end
13
-
14
- def by_list_id
15
- Trello::List.find(external_id).actions(filter: 'commentCard')
16
- end
17
-
18
- def by_card_id
19
- Trello::Card.find(external_id).actions(filter: 'commentCard')
20
- end
21
-
22
- def by_member_id
23
- []
24
- end
25
- end
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- module Troo
2
- module External
3
- class List < Resource
4
- def persist
5
- Persistence::List.with_collection(fetch)
6
- end
7
-
8
- private
9
-
10
- def by_board_id
11
- Trello::Board.find(external_id).lists
12
- end
13
-
14
- def by_list_id
15
- [Trello::List.find(external_id)]
16
- end
17
-
18
- def by_card_id
19
- []
20
- end
21
-
22
- def by_member_id
23
- []
24
- end
25
- end
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- module Troo
2
- module External
3
- class Member < Resource
4
- def persist
5
- Persistence::Member.with_collection(fetch)
6
- end
7
-
8
- private
9
-
10
- def by_board_id
11
- Trello::Board.find(external_id).members
12
- end
13
-
14
- def by_list_id
15
- []
16
- end
17
-
18
- def by_card_id
19
- []
20
- end
21
-
22
- def by_member_id
23
- [Trello::Member.find(external_id)]
24
- end
25
- end
26
- end
27
- end
@@ -1,42 +0,0 @@
1
- module Troo
2
- module External
3
- class Resource
4
- attr_reader :external_id
5
-
6
- class << self
7
- def fetch(external_id, options = {})
8
- new(external_id, options).persist
9
- end
10
- end
11
-
12
- def initialize(external_id, options = {})
13
- @external_id = external_id
14
- @options = options
15
- end
16
-
17
- def fetch
18
- case options.fetch(:mode)
19
- when :all then all_boards
20
- when :board then by_board_id
21
- when :list then by_list_id
22
- when :card then by_card_id
23
- when :member then by_member_id
24
- end
25
- rescue Trello::InvalidAccessToken
26
- raise Troo::InvalidAccessToken
27
- rescue Trello::Error
28
- []
29
- end
30
-
31
- private
32
-
33
- def options
34
- defaults.merge!(@options)
35
- end
36
-
37
- def defaults
38
- { mode: :board }
39
- end
40
- end
41
- end
42
- end
@@ -1,37 +0,0 @@
1
- module Troo
2
- module CommandHelpers
3
- module ClassMethods
4
- end
5
-
6
- def self.included(base)
7
- base.extend(ClassMethods)
8
- end
9
-
10
- def error_no_default
11
- @type = :card if type == :comments
12
- "Specify an <id> or use 'troo default #{type_str} <id>' " \
13
- "to set a default #{type_str} first."
14
- end
15
-
16
- def error_not_found
17
- @type = :card if type == :comments
18
- "#{type_capitalize} cannot be found. " + error_no_default
19
- end
20
-
21
- def type_str
22
- type.to_s
23
- end
24
-
25
- def type_capitalize
26
- type_str.capitalize
27
- end
28
-
29
- def type_pluralize
30
- type_str + 's'
31
- end
32
-
33
- def no_default?
34
- id.nil?
35
- end
36
- end
37
- end
@@ -1,19 +0,0 @@
1
- module Troo
2
- module Persistence
3
- class Board < Resource
4
- private
5
-
6
- def created
7
- Troo::Board.create(remote_data)
8
- end
9
-
10
- def local
11
- @local ||= Troo::Board.first(external_board_id: resource.id)
12
- end
13
-
14
- def remote_data
15
- @remote ||= Adaptors::Board.adapt(resource)
16
- end
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Troo
2
- module Persistence
3
- class Card < Resource
4
- private
5
-
6
- def created
7
- Troo::Card.create(remote_data)
8
- end
9
-
10
- def local
11
- @local ||= Troo::Card.first(external_card_id: resource.id)
12
- end
13
-
14
- def remote_data
15
- @remote ||= Adaptors::Card.adapt(resource)
16
- end
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Troo
2
- module Persistence
3
- class Comment < Resource
4
- private
5
-
6
- def created
7
- Troo::Comment.create(remote_data)
8
- end
9
-
10
- def local
11
- @local ||= Troo::Comment.first(external_comment_id: resource.id)
12
- end
13
-
14
- def remote_data
15
- @remote ||= Adaptors::Comment.adapt(resource)
16
- end
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Troo
2
- module Persistence
3
- class List < Resource
4
- private
5
-
6
- def created
7
- Troo::List.create(remote_data)
8
- end
9
-
10
- def local
11
- @local ||= Troo::List.first(external_list_id: resource.id)
12
- end
13
-
14
- def remote_data
15
- @remote ||= Adaptors::List.adapt(resource)
16
- end
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Troo
2
- module Persistence
3
- class Member < Resource
4
- private
5
-
6
- def created
7
- Troo::Member.create(remote_data)
8
- end
9
-
10
- def local
11
- @local ||= Troo::Member.first(external_member_id: resource.id)
12
- end
13
-
14
- def remote_data
15
- @remote ||= Adaptors::Member.adapt(resource)
16
- end
17
- end
18
- end
19
- end
@@ -1,50 +0,0 @@
1
- module Troo
2
- module Persistence
3
- class Resource
4
- attr_reader :resource, :options
5
-
6
- class << self
7
- def for(resource, options = {})
8
- new(resource, options).persist
9
- end
10
-
11
- def with_collection(resources, options = {})
12
- resources.map do |resource|
13
- new(resource, options).persist
14
- end
15
- end
16
- end
17
-
18
- def initialize(resource, options = {})
19
- @resource = resource
20
- @options = options
21
- end
22
-
23
- def persist
24
- return local if local_identical?
25
- return updated if local_exists?
26
- created
27
- end
28
-
29
- private
30
-
31
- def updated
32
- local.update(remote_data) && local
33
- end
34
-
35
- def local_identical?
36
- return false unless local_exists?
37
- return false if local_data != remote_data
38
- true
39
- end
40
-
41
- def local_data
42
- local.external_attributes
43
- end
44
-
45
- def local_exists?
46
- !!local
47
- end
48
- end
49
- end
50
- end