trello-fs 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +35 -0
  3. data/Gemfile +3 -0
  4. data/README.md +52 -0
  5. data/examples/demo_board/A_List_of_Cards/README.md +6 -0
  6. data/examples/demo_board/A_List_of_Cards/TrelloFs_Features.md +14 -0
  7. data/examples/demo_board/A_List_of_Cards/TrelloFs_Installation.md +37 -0
  8. data/examples/demo_board/A_Second_List_of_Cards/A_card_with_an_image.md +13 -0
  9. data/examples/demo_board/A_Second_List_of_Cards/README.md +6 -0
  10. data/examples/demo_board/A_Second_List_of_Cards/This_one_has_a_puppy.md +13 -0
  11. data/examples/demo_board/Attachments/A_card_with_an_image/cats-cute-cat-animal-cute-grass-photo.jpg +0 -0
  12. data/examples/demo_board/Attachments/This_one_has_a_puppy/Puppy_2.jpg +0 -0
  13. data/examples/demo_board/Home +13 -0
  14. data/examples/demo_board/Labels/cats.md +5 -0
  15. data/examples/demo_board/Labels/images.md +6 -0
  16. data/examples/demo_board/Labels/no_name.md +4 -0
  17. data/examples/demo_board/Labels/puppies.md +5 -0
  18. data/examples/demo_board/Labels/readme.md +6 -0
  19. data/examples/demo_board/README.md +13 -0
  20. data/examples/demo_board.rb +8 -0
  21. data/examples/welcome_board/Advanced/Get_the_apps_for_iOS_Android_and_Windows_8.md +12 -0
  22. data/examples/welcome_board/Advanced/Need_help.md +10 -0
  23. data/examples/welcome_board/Advanced/README.md +10 -0
  24. data/examples/welcome_board/Advanced/Use_as_many_boards_as_you_want.md +8 -0
  25. data/examples/welcome_board/Advanced/Want_tips_usage_examples_or_API_info.md +8 -0
  26. data/examples/welcome_board/Advanced/Want_to_use_keyboard_shortcuts_We_have_them.md +10 -0
  27. data/examples/welcome_board/Advanced/Want_updates_on_new_features.md +14 -0
  28. data/examples/welcome_board/Attachments/You_can_attach_pictures_and_files/taco.png +0 -0
  29. data/examples/welcome_board/Basics/Click_on_a_card_to_see_whats_behind_it.md +8 -0
  30. data/examples/welcome_board/Basics/README.md +10 -0
  31. data/examples/welcome_board/Basics/This_is_a_card.md +8 -0
  32. data/examples/welcome_board/Basics/Welcome_to_Trello.md +8 -0
  33. data/examples/welcome_board/Basics/You_can_attach_pictures_and_files.md +13 -0
  34. data/examples/welcome_board/Basics/any_kind_of_hyperlink_.md +8 -0
  35. data/examples/welcome_board/Basics/or_checklists.md +8 -0
  36. data/examples/welcome_board/Home +31 -0
  37. data/examples/welcome_board/Intermediate/Drag_people_onto_a_card_to_indicate_that_theyre_responsible_for_it.md +8 -0
  38. data/examples/welcome_board/Intermediate/Finished_with_a_card_Archive_it.md +12 -0
  39. data/examples/welcome_board/Intermediate/Invite_your_team_to_this_board_using_the_Add_Members_button.md +8 -0
  40. data/examples/welcome_board/Intermediate/Make_as_many_lists_as_you_need.md +8 -0
  41. data/examples/welcome_board/Intermediate/README.md +11 -0
  42. data/examples/welcome_board/Intermediate/Try_dragging_cards_anywhere.md +8 -0
  43. data/examples/welcome_board/Intermediate/Use_color-coded_labels_for_organization.md +8 -0
  44. data/examples/welcome_board/Intermediate/You_can_change_the_board_background.md +8 -0
  45. data/examples/welcome_board/Labels/no_name.md +4 -0
  46. data/examples/welcome_board/Labels/red_one.md +6 -0
  47. data/examples/welcome_board/README.md +31 -0
  48. data/examples/welcome_board.rb +8 -0
  49. data/lib/trello-fs/attachment_builder.rb +60 -0
  50. data/lib/trello-fs/attachment_cleaner.rb +39 -0
  51. data/lib/trello-fs/board_builder.rb +61 -0
  52. data/lib/trello-fs/builder.rb +31 -0
  53. data/lib/trello-fs/card_builder.rb +87 -0
  54. data/lib/trello-fs/label_builder.rb +60 -0
  55. data/lib/trello-fs/labels_builder.rb +16 -0
  56. data/lib/trello-fs/list_builder.rb +68 -0
  57. data/lib/trello-fs/repository.rb +36 -0
  58. data/lib/trello-fs/repository_cleaner.rb +18 -0
  59. data/lib/trello-fs/string_to_file_name.rb +9 -0
  60. data/lib/trello-fs/trello_api.rb +83 -0
  61. data/lib/trello-fs/version.rb +3 -0
  62. data/lib/trello-fs.rb +8 -0
  63. data/spec/helpers/test_repository.rb +21 -0
  64. data/spec/spec_helper.rb +9 -0
  65. data/spec/trello-fs/attachment_builder_spec.rb +37 -0
  66. data/spec/trello-fs/attachment_cleaner_spec.rb +44 -0
  67. data/spec/trello-fs/board_builder_spec.rb +28 -0
  68. data/spec/trello-fs/card_builder_spec.rb +60 -0
  69. data/spec/trello-fs/label_builder_spec.rb +36 -0
  70. data/spec/trello-fs/list_builder_spec.rb +32 -0
  71. data/spec/trello-fs/repository_spec.rb +9 -0
  72. data/spec/trello-fs/string_to_file_name_spec.rb +19 -0
  73. data/spec/trello-fs/trello_api_spec.rb +144 -0
  74. data/trello-fs.gemspec +24 -0
  75. metadata +170 -0
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::AttachmentCleaner do
4
+ describe '#remove_old_attachments' do
5
+ let(:repository) { TestRepository.new }
6
+
7
+ let(:old_attachment) { File.join(repository.path, 'Attachments/old/old_attachment.jpg') }
8
+ let(:new_attachment) { File.join(repository.path, 'Attachments/new/new_attachment.jpg') }
9
+
10
+ let(:board) do
11
+ OpenStruct.new(attachments: [
12
+ OpenStruct.new(
13
+ name: 'new_attachment.jpg',
14
+ card: OpenStruct.new(
15
+ name: 'new',
16
+ list: OpenStruct.new(name: 'l')
17
+ )
18
+ )
19
+ ])
20
+ end
21
+
22
+ subject { TrelloFs::AttachmentCleaner.new(repository, board) }
23
+
24
+ before :each do
25
+ [new_attachment, old_attachment].each do |attachment|
26
+ FileUtils.mkpath(File.dirname(attachment))
27
+ File.open(attachment, 'w') {|f| f.write('a') }
28
+ end
29
+ subject.remove_old_attachments
30
+ end
31
+
32
+ it 'should remove the old file' do
33
+ expect(File.exist?(old_attachment)).to eq false
34
+ end
35
+
36
+ it 'should keep the new file' do
37
+ expect(File.exist?(new_attachment)).to eq true
38
+ end
39
+
40
+ it 'should remove the old folder' do
41
+ expect(File.exist?(File.dirname(old_attachment))).to eq false
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::BoardBuilder do
4
+ let(:list) do
5
+ list = OpenStruct.new
6
+ list.name = 'List Name'
7
+ card1 = OpenStruct.new
8
+ card1.name = 'Card 1'
9
+ list.cards = [card1]
10
+ list
11
+ end
12
+
13
+ let(:board) do
14
+ board = OpenStruct.new
15
+ board.name = 'Board'
16
+ board.lists = [list]
17
+ board
18
+ end
19
+
20
+ let(:board_builder) { TrelloFs::BoardBuilder.new(TestRepository.new, board) }
21
+
22
+ context '#readme_content' do
23
+ subject { board_builder.readme_content }
24
+
25
+ it { should include '(List_Name/README.md' }
26
+ it { should include '(List_Name/Card_1.md' }
27
+ end
28
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::CardBuilder do
4
+
5
+ let(:card) do
6
+ card = OpenStruct.new(name: 'Card Name', desc: 'Card Description',
7
+ labels: [], attachments: [])
8
+
9
+ 3.times do |i|
10
+ card.labels << OpenStruct.new(name: "Label #{i}")
11
+ end
12
+ card
13
+ end
14
+
15
+ let(:list) do
16
+ list = OpenStruct.new
17
+ list.name = 'List Name'
18
+ list
19
+ end
20
+
21
+ let(:board) do
22
+ board = OpenStruct.new
23
+ board.name = 'Board'
24
+ board
25
+ end
26
+
27
+ let(:board_builder) { TrelloFs::BoardBuilder.new(TestRepository.new, board) }
28
+ let(:list_builder) { TrelloFs::ListBuilder.new(board_builder, list) }
29
+ let(:card_builder) { TrelloFs::CardBuilder.new(list_builder, card) }
30
+
31
+ subject { card_builder }
32
+
33
+ describe '#content' do
34
+ subject { card_builder.content(['Attachments/file.pdf', 'Attachments/picture.png']) }
35
+
36
+ it { should include 'Card Name' }
37
+ it { should include 'Card Description' }
38
+ it { should include 'Label 1' }
39
+ it { should include 'Label 2' }
40
+ it { should include 'List Name' }
41
+ it { should include '[file.pdf' }
42
+ it { should include '![picture.png]' }
43
+ end
44
+
45
+ describe '#path' do
46
+ it 'returns the correct path' do
47
+ expected_path = File.join(TestRepository.path, 'List_Name/Card_Name.md')
48
+ expect(subject.path).to eq expected_path
49
+ end
50
+ end
51
+
52
+ describe '#build' do
53
+ it 'creates a file with the content' do
54
+ subject.build
55
+
56
+ expect(File).to exist subject.path
57
+ expect(File.read(subject.path)).to eq subject.content
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::LabelBuilder do
4
+
5
+ let(:board) { OpenStruct.new(name: 'Board Name') }
6
+ let(:label) do
7
+ cards = [
8
+ OpenStruct.new(
9
+ name: 'Card 1',
10
+ list: OpenStruct.new(
11
+ name: 'List Name',
12
+ board: board
13
+ )
14
+ )
15
+ ]
16
+ OpenStruct.new name: 'Label Name', cards: cards
17
+ end
18
+
19
+ let(:builder) { TrelloFs::LabelBuilder.new(
20
+ TrelloFs::LabelsBuilder.new(TestRepository.new, board),
21
+ label) }
22
+
23
+ describe '#path' do
24
+ subject { builder.path }
25
+
26
+ it { should include 'Labels' }
27
+ it { should include 'Label_Name.md' }
28
+ end
29
+
30
+ describe '#content' do
31
+ subject { builder.content }
32
+
33
+ it { should include 'Label Name' }
34
+ it { should include 'Card 1' }
35
+ end
36
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::ListBuilder do
4
+
5
+ let(:list) do
6
+ list = OpenStruct.new
7
+ list.name = 'List Name'
8
+ card1, card2 = OpenStruct.new, OpenStruct.new
9
+ card1.name, card2.name = 'Card 1', 'Card 2'
10
+ list.cards = [card1, card2]
11
+ list
12
+ end
13
+
14
+ let(:board) do
15
+ board = OpenStruct.new
16
+ board.name = 'Board'
17
+ board
18
+ end
19
+
20
+ let(:board_builder) { TrelloFs::BoardBuilder.new(TestRepository.new, board) }
21
+ let(:list_builder) { TrelloFs::ListBuilder.new(board_builder, list) }
22
+
23
+ subject { list_builder }
24
+
25
+ describe '#readme_content' do
26
+ subject { list_builder.readme_content }
27
+
28
+ it { should include 'List Name' }
29
+ it { should include '(Card_1.md' }
30
+ it { should include '(Card_2.md' }
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::Repository do
4
+ describe '#initialize' do
5
+ it 'raises an error if there are wrong arguments' do
6
+ expect { subject.new({}) }.to raise_error
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::StringToFileName do
4
+ subject { TrelloFs::StringToFileName }
5
+
6
+ describe '.convert' do
7
+ it 'is unique for different strings' do
8
+ expect(subject.convert('one')).not_to eq subject.convert('two')
9
+ end
10
+
11
+ it 'is the same for the same strings' do
12
+ expect(subject.convert('one')).to eq subject.convert('one')
13
+ end
14
+
15
+ it 'replaces slashes with dashes' do
16
+ expect(subject.convert('a file/path')).to eq 'a_filepath'
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,144 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrelloFs::TrelloApi do
4
+
5
+ let(:trello_api) { TrelloFs::TrelloApi.new(TestRepository.new) }
6
+
7
+ before :each do
8
+ allow(trello_api).to receive(:download_board_json) { response_body }
9
+ end
10
+
11
+ describe '#board' do
12
+ let(:board) { trello_api.board }
13
+ it { expect(board.name).to eq 'Board Name' }
14
+ it { expect(board.desc).to eq 'Board Description' }
15
+ it { expect(board.organization_name).to eq 'Matus PhD' }
16
+ it { expect(board.lists.size).to eq 1 }
17
+ it { expect(board.attachments.size).to eq 1 }
18
+
19
+ let(:list) { board.lists.first }
20
+ it { expect(list.name).to eq 'List Name' }
21
+ it { expect(list.cards.size).to eq 1 }
22
+
23
+ let(:card) { list.cards.first }
24
+ it { expect(card.name).to eq 'Card Name' }
25
+ it { expect(card.desc).to eq 'Card Description' }
26
+ it { expect(card.checklists.size).to eq 1 }
27
+
28
+ let(:checklist) { card.checklists.first }
29
+ it { expect(checklist.name).to eq 'Checklist' }
30
+ it { expect(checklist.items.size).to eq 1 }
31
+
32
+ let(:checklist_item) { checklist.items.first }
33
+ it { expect(checklist_item.name).to eq 'Checklist Item 1' }
34
+ it { expect(checklist_item.state).to eq 'incomplete' }
35
+ end
36
+
37
+ def response_body
38
+ {
39
+ "id" => "2174981360244",
40
+ "name" => "Board Name",
41
+ "desc" => "Board Description",
42
+ "descData" => nil,
43
+ "closed" => false,
44
+ "idOrganization" => nil,
45
+ "pinned" => false,
46
+ "url" => "https://trello.com/b/Wccvd/board",
47
+ "shortUrl" => "https://trello.com/b/Wccvd",
48
+ "organization" => {
49
+ "id" => "264631916292bb8",
50
+ "name" => "matusphd",
51
+ "displayName" => "Matus PhD"
52
+ },
53
+ "prefs" => {
54
+ },
55
+ "labelNames" => {
56
+ "green" => "", "yellow" => "", "orange" => "", "red" => "", "purple" => "", "blue" => "", "sky" => "", "lime" => "", "pink" => "", "black" => ""
57
+ },
58
+ "labels" => [
59
+ {
60
+ "id" => "546da5df74d650d56751d2f7",
61
+ "idBoard" => "546da5dfc9c189f852060244",
62
+ "name" => "Label 1",
63
+ "color" => "green",
64
+ "uses" => 1
65
+ }
66
+ ],
67
+ "cards" => [
68
+ {
69
+ "id" => "546da5f05906d2a063bbea85",
70
+ "checkItemStates" => [],
71
+ "closed" => false,
72
+ "dateLastActivity" => "2014-11-20T08:28:18.936Z",
73
+ "desc" => "Card Description",
74
+ "descData" => nil,
75
+ "email" => nil,
76
+ "idBoard" => "546da5dfc9c189f852060244",
77
+ "idList" => "546da5e83fa3907212a5eed1",
78
+ "idMembersVoted" => [],
79
+ "idShort" => 1,
80
+ "idAttachmentCover" => nil,
81
+ "manualCoverAttachment" => false,
82
+ "idLabels" => [
83
+ "546da5df74d650d56751d2f7"
84
+ ],
85
+ "name" => "Card Name",
86
+ "labels" => [
87
+ {
88
+ "id" => "546da5df74d650d56751d2f7",
89
+ "idBoard" => "546da5dfc9c189f852060244",
90
+ "name" => "Label 1",
91
+ "color" => "green",
92
+ "uses" => 1
93
+ }
94
+ ],
95
+ "shortUrl" => "https://trello.com/c/il3oSldG",
96
+ "subscribed" => false,
97
+ "url" => "https://trello.com/c/il3oSldG/1-20-11-2014",
98
+ "checklists" => [
99
+ {
100
+ "id" => "546da60b9446036c5a6241bd",
101
+ "name" => "Checklist",
102
+ "idBoard" => "546da5dfc9c189f852060244",
103
+ "idCard" => "546da5f05906d2a063bbea85",
104
+ "pos" => 16384,
105
+ "checkItems" => [
106
+ {
107
+ "id" => "546da6182183e3d2a1a0e4ab",
108
+ "name" => "Checklist Item 1",
109
+ "nameData" => nil,
110
+ "pos" => 17229,
111
+ "state" => "incomplete"
112
+ }
113
+ ]
114
+ }
115
+ ],
116
+ "attachments" => [
117
+ {
118
+ "bytes" => 262233,
119
+ "date" => "2015-02-21T17:00:54.423Z",
120
+ "edgeColor" => nil,
121
+ "idMember" => "ead2c755d8a670dac6d",
122
+ "isUpload" => true,
123
+ "mimeType" => nil,
124
+ "name" => "main.pdf",
125
+ "previews" => [],
126
+ "url" => "https://trello-attachments.s3.amazonaws.com/546da9f852060244/54a85/19/main.pdf",
127
+ "id" => "70816dbd5085cee"
128
+ }
129
+ ]
130
+ }
131
+ ],
132
+ "lists" => [
133
+ {
134
+ "id" => "546da5e83fa3907212a5eed1",
135
+ "name" => "List Name",
136
+ "closed" => false,
137
+ "idBoard" => "546da5dfc9c189f852060244",
138
+ "pos" => 65535,
139
+ "subscribed" => false
140
+ }
141
+ ]
142
+ }
143
+ end
144
+ end
data/trello-fs.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'trello-fs/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "trello-fs"
8
+ spec.version = TrelloFs::VERSION
9
+ spec.authors = ["Matúš Tomlein"]
10
+ spec.email = ["matus@tomlein.org"]
11
+ spec.summary = %q{A utility for archiving Trello boards into Git repositories.}
12
+ spec.description = %q{}
13
+ spec.homepage = "https://github.com/matus_tomlein/trello-fs"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 3.0"
24
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: trello-fs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Matúš Tomlein
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: ''
56
+ email:
57
+ - matus@tomlein.org
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - README.md
65
+ - examples/demo_board.rb
66
+ - examples/demo_board/A_List_of_Cards/README.md
67
+ - examples/demo_board/A_List_of_Cards/TrelloFs_Features.md
68
+ - examples/demo_board/A_List_of_Cards/TrelloFs_Installation.md
69
+ - examples/demo_board/A_Second_List_of_Cards/A_card_with_an_image.md
70
+ - examples/demo_board/A_Second_List_of_Cards/README.md
71
+ - examples/demo_board/A_Second_List_of_Cards/This_one_has_a_puppy.md
72
+ - examples/demo_board/Attachments/A_card_with_an_image/cats-cute-cat-animal-cute-grass-photo.jpg
73
+ - examples/demo_board/Attachments/This_one_has_a_puppy/Puppy_2.jpg
74
+ - examples/demo_board/Home
75
+ - examples/demo_board/Labels/cats.md
76
+ - examples/demo_board/Labels/images.md
77
+ - examples/demo_board/Labels/no_name.md
78
+ - examples/demo_board/Labels/puppies.md
79
+ - examples/demo_board/Labels/readme.md
80
+ - examples/demo_board/README.md
81
+ - examples/welcome_board.rb
82
+ - examples/welcome_board/Advanced/Get_the_apps_for_iOS_Android_and_Windows_8.md
83
+ - examples/welcome_board/Advanced/Need_help.md
84
+ - examples/welcome_board/Advanced/README.md
85
+ - examples/welcome_board/Advanced/Use_as_many_boards_as_you_want.md
86
+ - examples/welcome_board/Advanced/Want_tips_usage_examples_or_API_info.md
87
+ - examples/welcome_board/Advanced/Want_to_use_keyboard_shortcuts_We_have_them.md
88
+ - examples/welcome_board/Advanced/Want_updates_on_new_features.md
89
+ - examples/welcome_board/Attachments/You_can_attach_pictures_and_files/taco.png
90
+ - examples/welcome_board/Basics/Click_on_a_card_to_see_whats_behind_it.md
91
+ - examples/welcome_board/Basics/README.md
92
+ - examples/welcome_board/Basics/This_is_a_card.md
93
+ - examples/welcome_board/Basics/Welcome_to_Trello.md
94
+ - examples/welcome_board/Basics/You_can_attach_pictures_and_files.md
95
+ - examples/welcome_board/Basics/any_kind_of_hyperlink_.md
96
+ - examples/welcome_board/Basics/or_checklists.md
97
+ - examples/welcome_board/Home
98
+ - examples/welcome_board/Intermediate/Drag_people_onto_a_card_to_indicate_that_theyre_responsible_for_it.md
99
+ - examples/welcome_board/Intermediate/Finished_with_a_card_Archive_it.md
100
+ - examples/welcome_board/Intermediate/Invite_your_team_to_this_board_using_the_Add_Members_button.md
101
+ - examples/welcome_board/Intermediate/Make_as_many_lists_as_you_need.md
102
+ - examples/welcome_board/Intermediate/README.md
103
+ - examples/welcome_board/Intermediate/Try_dragging_cards_anywhere.md
104
+ - examples/welcome_board/Intermediate/Use_color-coded_labels_for_organization.md
105
+ - examples/welcome_board/Intermediate/You_can_change_the_board_background.md
106
+ - examples/welcome_board/Labels/no_name.md
107
+ - examples/welcome_board/Labels/red_one.md
108
+ - examples/welcome_board/README.md
109
+ - lib/trello-fs.rb
110
+ - lib/trello-fs/attachment_builder.rb
111
+ - lib/trello-fs/attachment_cleaner.rb
112
+ - lib/trello-fs/board_builder.rb
113
+ - lib/trello-fs/builder.rb
114
+ - lib/trello-fs/card_builder.rb
115
+ - lib/trello-fs/label_builder.rb
116
+ - lib/trello-fs/labels_builder.rb
117
+ - lib/trello-fs/list_builder.rb
118
+ - lib/trello-fs/repository.rb
119
+ - lib/trello-fs/repository_cleaner.rb
120
+ - lib/trello-fs/string_to_file_name.rb
121
+ - lib/trello-fs/trello_api.rb
122
+ - lib/trello-fs/version.rb
123
+ - spec/helpers/test_repository.rb
124
+ - spec/spec_helper.rb
125
+ - spec/trello-fs/attachment_builder_spec.rb
126
+ - spec/trello-fs/attachment_cleaner_spec.rb
127
+ - spec/trello-fs/board_builder_spec.rb
128
+ - spec/trello-fs/card_builder_spec.rb
129
+ - spec/trello-fs/label_builder_spec.rb
130
+ - spec/trello-fs/list_builder_spec.rb
131
+ - spec/trello-fs/repository_spec.rb
132
+ - spec/trello-fs/string_to_file_name_spec.rb
133
+ - spec/trello-fs/trello_api_spec.rb
134
+ - trello-fs.gemspec
135
+ homepage: https://github.com/matus_tomlein/trello-fs
136
+ licenses:
137
+ - MIT
138
+ metadata: {}
139
+ post_install_message:
140
+ rdoc_options: []
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ requirements: []
154
+ rubyforge_project:
155
+ rubygems_version: 2.2.2
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: A utility for archiving Trello boards into Git repositories.
159
+ test_files:
160
+ - spec/helpers/test_repository.rb
161
+ - spec/spec_helper.rb
162
+ - spec/trello-fs/attachment_builder_spec.rb
163
+ - spec/trello-fs/attachment_cleaner_spec.rb
164
+ - spec/trello-fs/board_builder_spec.rb
165
+ - spec/trello-fs/card_builder_spec.rb
166
+ - spec/trello-fs/label_builder_spec.rb
167
+ - spec/trello-fs/list_builder_spec.rb
168
+ - spec/trello-fs/repository_spec.rb
169
+ - spec/trello-fs/string_to_file_name_spec.rb
170
+ - spec/trello-fs/trello_api_spec.rb