longleaf 0.2.0.pre.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +84 -0
  3. data/.gitignore +4 -2
  4. data/.rubocop.yml +42 -2
  5. data/.rubocop_todo.yml +390 -311
  6. data/.yardopts +1 -0
  7. data/Gemfile +16 -1
  8. data/README.md +67 -13
  9. data/Rakefile +6 -0
  10. data/bin/setup +16 -1
  11. data/docs/aboutlongleaf.md +28 -0
  12. data/docs/extra.css +32 -0
  13. data/docs/img/change-file.png +0 -0
  14. data/docs/img/ll-example-preserved.png +0 -0
  15. data/docs/index.md +19 -0
  16. data/docs/install.md +66 -0
  17. data/docs/ll-example/config-example-relative.yml +33 -0
  18. data/docs/ll-example/files-dir/LLexample-PDF.pdf +0 -0
  19. data/docs/ll-example/files-dir/LLexample-TOCHANGE.txt +15 -0
  20. data/docs/ll-example/files-dir/LLexample-tokeep.txt +10 -0
  21. data/docs/ll-example/metadata-dir/.gitkeep +0 -0
  22. data/docs/ll-example/replica-files/.gitkeep +0 -0
  23. data/docs/ll-example/replica-metadata/.gitkeep +0 -0
  24. data/docs/quickstart.md +270 -0
  25. data/docs/rdocs/Longleaf.html +135 -0
  26. data/docs/rdocs/Longleaf/AppFields.html +178 -0
  27. data/docs/rdocs/Longleaf/ApplicationConfigDeserializer.html +631 -0
  28. data/docs/rdocs/Longleaf/ApplicationConfigManager.html +610 -0
  29. data/docs/rdocs/Longleaf/ApplicationConfigValidator.html +238 -0
  30. data/docs/rdocs/Longleaf/CLI.html +909 -0
  31. data/docs/rdocs/Longleaf/ChecksumMismatchError.html +151 -0
  32. data/docs/rdocs/Longleaf/ConfigBuilder.html +1339 -0
  33. data/docs/rdocs/Longleaf/ConfigurationError.html +143 -0
  34. data/docs/rdocs/Longleaf/ConfigurationValidator.html +227 -0
  35. data/docs/rdocs/Longleaf/DeregisterCommand.html +420 -0
  36. data/docs/rdocs/Longleaf/DeregisterEvent.html +453 -0
  37. data/docs/rdocs/Longleaf/DeregistrationError.html +151 -0
  38. data/docs/rdocs/Longleaf/DigestHelper.html +419 -0
  39. data/docs/rdocs/Longleaf/EventError.html +147 -0
  40. data/docs/rdocs/Longleaf/EventNames.html +163 -0
  41. data/docs/rdocs/Longleaf/EventStatusTracking.html +656 -0
  42. data/docs/rdocs/Longleaf/FileCheckService.html +540 -0
  43. data/docs/rdocs/Longleaf/FileHelpers.html +520 -0
  44. data/docs/rdocs/Longleaf/FileRecord.html +716 -0
  45. data/docs/rdocs/Longleaf/FileSelector.html +901 -0
  46. data/docs/rdocs/Longleaf/FixityCheckService.html +691 -0
  47. data/docs/rdocs/Longleaf/IndexManager.html +1155 -0
  48. data/docs/rdocs/Longleaf/InvalidDigestAlgorithmError.html +143 -0
  49. data/docs/rdocs/Longleaf/InvalidStoragePathError.html +143 -0
  50. data/docs/rdocs/Longleaf/Logging.html +405 -0
  51. data/docs/rdocs/Longleaf/Logging/RedirectingLogger.html +1213 -0
  52. data/docs/rdocs/Longleaf/LongleafError.html +139 -0
  53. data/docs/rdocs/Longleaf/MDFields.html +193 -0
  54. data/docs/rdocs/Longleaf/MetadataBuilder.html +787 -0
  55. data/docs/rdocs/Longleaf/MetadataDeserializer.html +537 -0
  56. data/docs/rdocs/Longleaf/MetadataError.html +143 -0
  57. data/docs/rdocs/Longleaf/MetadataPersistenceManager.html +539 -0
  58. data/docs/rdocs/Longleaf/MetadataRecord.html +1411 -0
  59. data/docs/rdocs/Longleaf/MetadataSerializer.html +786 -0
  60. data/docs/rdocs/Longleaf/PreservationServiceError.html +147 -0
  61. data/docs/rdocs/Longleaf/PreserveCommand.html +410 -0
  62. data/docs/rdocs/Longleaf/PreserveEvent.html +491 -0
  63. data/docs/rdocs/Longleaf/RegisterCommand.html +428 -0
  64. data/docs/rdocs/Longleaf/RegisterEvent.html +628 -0
  65. data/docs/rdocs/Longleaf/RegisteredFileSelector.html +446 -0
  66. data/docs/rdocs/Longleaf/RegistrationError.html +151 -0
  67. data/docs/rdocs/Longleaf/ReindexCommand.html +576 -0
  68. data/docs/rdocs/Longleaf/RsyncReplicationService.html +1180 -0
  69. data/docs/rdocs/Longleaf/SequelIndexDriver.html +1978 -0
  70. data/docs/rdocs/Longleaf/ServiceCandidateFilesystemIterator.html +572 -0
  71. data/docs/rdocs/Longleaf/ServiceCandidateIndexIterator.html +532 -0
  72. data/docs/rdocs/Longleaf/ServiceCandidateLocator.html +333 -0
  73. data/docs/rdocs/Longleaf/ServiceClassCache.html +725 -0
  74. data/docs/rdocs/Longleaf/ServiceDateHelper.html +425 -0
  75. data/docs/rdocs/Longleaf/ServiceDefinition.html +683 -0
  76. data/docs/rdocs/Longleaf/ServiceDefinitionManager.html +371 -0
  77. data/docs/rdocs/Longleaf/ServiceDefinitionValidator.html +269 -0
  78. data/docs/rdocs/Longleaf/ServiceFields.html +173 -0
  79. data/docs/rdocs/Longleaf/ServiceManager.html +1229 -0
  80. data/docs/rdocs/Longleaf/ServiceMappingManager.html +410 -0
  81. data/docs/rdocs/Longleaf/ServiceMappingValidator.html +347 -0
  82. data/docs/rdocs/Longleaf/ServiceRecord.html +821 -0
  83. data/docs/rdocs/Longleaf/StorageLocation.html +985 -0
  84. data/docs/rdocs/Longleaf/StorageLocationManager.html +729 -0
  85. data/docs/rdocs/Longleaf/StorageLocationUnavailableError.html +143 -0
  86. data/docs/rdocs/Longleaf/StorageLocationValidator.html +373 -0
  87. data/docs/rdocs/Longleaf/StoragePathValidator.html +253 -0
  88. data/docs/rdocs/Longleaf/SystemConfigBuilder.html +441 -0
  89. data/docs/rdocs/Longleaf/SystemConfigFields.html +163 -0
  90. data/docs/rdocs/Longleaf/ValidateConfigCommand.html +451 -0
  91. data/docs/rdocs/Longleaf/ValidateMetadataCommand.html +408 -0
  92. data/docs/rdocs/_index.html +660 -0
  93. data/docs/rdocs/class_list.html +51 -0
  94. data/docs/rdocs/css/common.css +1 -0
  95. data/docs/rdocs/css/full_list.css +58 -0
  96. data/docs/rdocs/css/style.css +496 -0
  97. data/docs/rdocs/file.README.html +165 -0
  98. data/docs/rdocs/file_list.html +56 -0
  99. data/docs/rdocs/frames.html +17 -0
  100. data/docs/rdocs/index.html +165 -0
  101. data/docs/rdocs/js/app.js +303 -0
  102. data/docs/rdocs/js/full_list.js +216 -0
  103. data/docs/rdocs/js/jquery.js +4 -0
  104. data/docs/rdocs/method_list.html +2051 -0
  105. data/docs/rdocs/top-level-namespace.html +110 -0
  106. data/lib/longleaf/candidates/file_selector.rb +47 -15
  107. data/lib/longleaf/candidates/registered_file_selector.rb +67 -0
  108. data/lib/longleaf/candidates/service_candidate_filesystem_iterator.rb +29 -35
  109. data/lib/longleaf/candidates/service_candidate_index_iterator.rb +84 -0
  110. data/lib/longleaf/candidates/service_candidate_locator.rb +9 -4
  111. data/lib/longleaf/cli.rb +162 -80
  112. data/lib/longleaf/commands/deregister_command.rb +12 -11
  113. data/lib/longleaf/commands/preserve_command.rb +13 -8
  114. data/lib/longleaf/commands/register_command.rb +9 -6
  115. data/lib/longleaf/commands/reindex_command.rb +92 -0
  116. data/lib/longleaf/commands/validate_config_command.rb +27 -6
  117. data/lib/longleaf/commands/validate_metadata_command.rb +11 -9
  118. data/lib/longleaf/errors.rb +12 -12
  119. data/lib/longleaf/events/deregister_event.rb +13 -15
  120. data/lib/longleaf/events/event_status_tracking.rb +7 -7
  121. data/lib/longleaf/events/preserve_event.rb +24 -14
  122. data/lib/longleaf/events/register_event.rb +21 -35
  123. data/lib/longleaf/helpers/digest_helper.rb +4 -4
  124. data/lib/longleaf/helpers/service_date_helper.rb +5 -6
  125. data/lib/longleaf/indexing/index_manager.rb +101 -0
  126. data/lib/longleaf/indexing/sequel_index_driver.rb +324 -0
  127. data/lib/longleaf/logging.rb +4 -4
  128. data/lib/longleaf/logging/redirecting_logger.rb +20 -20
  129. data/lib/longleaf/models/app_fields.rb +2 -1
  130. data/lib/longleaf/models/file_record.rb +10 -6
  131. data/lib/longleaf/models/md_fields.rb +1 -1
  132. data/lib/longleaf/models/metadata_record.rb +22 -12
  133. data/lib/longleaf/models/service_definition.rb +3 -3
  134. data/lib/longleaf/models/service_fields.rb +1 -1
  135. data/lib/longleaf/models/service_record.rb +6 -5
  136. data/lib/longleaf/models/storage_location.rb +26 -7
  137. data/lib/longleaf/models/system_config_fields.rb +9 -0
  138. data/lib/longleaf/preservation_services/file_check_service.rb +58 -0
  139. data/lib/longleaf/preservation_services/fixity_check_service.rb +16 -14
  140. data/lib/longleaf/preservation_services/rsync_replication_service.rb +32 -31
  141. data/lib/longleaf/services/application_config_deserializer.rb +55 -18
  142. data/lib/longleaf/services/application_config_manager.rb +16 -4
  143. data/lib/longleaf/services/application_config_validator.rb +1 -2
  144. data/lib/longleaf/services/configuration_validator.rb +6 -4
  145. data/lib/longleaf/services/metadata_deserializer.rb +40 -38
  146. data/lib/longleaf/services/metadata_persistence_manager.rb +46 -0
  147. data/lib/longleaf/services/metadata_serializer.rb +23 -22
  148. data/lib/longleaf/services/service_class_cache.rb +15 -15
  149. data/lib/longleaf/services/service_definition_manager.rb +5 -6
  150. data/lib/longleaf/services/service_definition_validator.rb +5 -6
  151. data/lib/longleaf/services/service_manager.rb +37 -17
  152. data/lib/longleaf/services/service_mapping_manager.rb +9 -9
  153. data/lib/longleaf/services/service_mapping_validator.rb +9 -10
  154. data/lib/longleaf/services/storage_location_manager.rb +22 -8
  155. data/lib/longleaf/services/storage_location_validator.rb +11 -8
  156. data/lib/longleaf/services/storage_path_validator.rb +1 -1
  157. data/lib/longleaf/specs/config_builder.rb +30 -17
  158. data/lib/longleaf/specs/custom_matchers.rb +1 -1
  159. data/lib/longleaf/specs/file_helpers.rb +15 -14
  160. data/lib/longleaf/specs/metadata_builder.rb +91 -0
  161. data/lib/longleaf/specs/system_config_builder.rb +27 -0
  162. data/lib/longleaf/version.rb +1 -1
  163. data/longleaf.gemspec +17 -7
  164. data/mkdocs.yml +20 -0
  165. metadata +233 -22
@@ -0,0 +1,27 @@
1
+ require 'longleaf/models/system_config_fields'
2
+ require 'yaml'
3
+
4
+ module Longleaf
5
+ # Test helper for constructing system configuration hashes
6
+ class SystemConfigBuilder
7
+ SCF ||= Longleaf::SystemConfigFields
8
+
9
+ attr_accessor :config
10
+
11
+ def initialize
12
+ @config = Hash.new
13
+ end
14
+
15
+ def with_index(adapter, connection)
16
+ @config[SCF::MD_INDEX] = Hash.new
17
+ @config[SCF::MD_INDEX][SCF::MD_INDEX_ADAPTER] = adapter
18
+ @config[SCF::MD_INDEX][SCF::MD_INDEX_CONNECTION] = connection
19
+ self
20
+ end
21
+
22
+ # @return the constructed configuration
23
+ def get
24
+ @config
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Longleaf
2
- VERSION = "0.2.0.pre.1"
2
+ VERSION = "0.3.0"
3
3
  end
data/longleaf.gemspec CHANGED
@@ -6,14 +6,17 @@ require 'longleaf/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "longleaf"
8
8
  spec.version = Longleaf::VERSION
9
- spec.authors = ["bbpennel"]
9
+ spec.authors = ["Ben Pennell"]
10
10
  spec.email = ["bbpennel@email.unc.edu"]
11
11
 
12
12
  spec.summary = %q{Longleaf preservation services tool}
13
- spec.description = %q{Provides a framework for performing preservation services over sets of files.}
14
- spec.homepage = "https://github.com/UNC-Libraries/"
13
+ spec.description = %q{Longleaf is a command-line tool which allows users to configure a set of storage locations and define custom sets of preservation services to run on their contents. These services are executed in response to applicable preservation events issued by clients. Its primary goal is to provide tools to create a simple and customizable preservation environment.}
14
+ spec.homepage = "https://unc-libraries.github.io/longleaf-preservation"
15
+ spec.metadata = { "source_code_uri" => "https://github.com/UNC-Libraries/longleaf-preservation" }
15
16
  spec.license = "Apache-2.0"
16
17
 
18
+ spec.required_ruby_version = '>= 2.3'
19
+
17
20
  # Specify which files should be added to the gem when it is released.
18
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
22
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
@@ -25,11 +28,18 @@ Gem::Specification.new do |spec|
25
28
 
26
29
  spec.add_dependency "thor", "~> 0.20.0"
27
30
  spec.add_dependency "yard", "~> 0.9.16"
31
+ spec.add_dependency "sequel", "~> 5.20"
28
32
 
29
33
  spec.add_development_dependency "bundler", "~> 1.16"
30
34
  spec.add_development_dependency "rake", "~> 12.0"
31
- spec.add_development_dependency "rspec", "~> 3.6.0"
32
- spec.add_development_dependency "factory_bot", "~> 4.0"
33
- spec.add_development_dependency "aruba", "~> 0.14.0"
34
- spec.add_development_dependency "bixby", ">= 2.0.0.pre.beta1"
35
+ spec.add_development_dependency "rspec", "~> 3.8"
36
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.4"
37
+ spec.add_development_dependency "factory_bot", "~> 5.0"
38
+ spec.add_development_dependency "aruba", "~> 0.14.9"
39
+ spec.add_development_dependency "rubocop", '~> 0.70.0'
40
+ spec.add_development_dependency "rubocop-rspec", '~> 1.33'
41
+ spec.add_development_dependency "rubocop-performance", '~> 1.3'
42
+ spec.add_development_dependency "rubocop-sequel", '~> 0.0.5'
43
+ spec.add_development_dependency "amalgalite", "~> 1.6"
44
+ spec.add_development_dependency "simplecov", "~> 0.16"
35
45
  end
data/mkdocs.yml ADDED
@@ -0,0 +1,20 @@
1
+ site_name: Longleaf Documentation
2
+ site_url: https://unc-libraries.github.io/longleaf-preservation
3
+ theme: readthedocs
4
+ #repo_name: 'UNC-Libraries/Longleaf-preservation'
5
+ #setting edit_uri to empty string removes the "Edit in" link in upper right hand corner of pages, but keeps the Github link to repo in the bottom of sidepane
6
+ repo_url: https://github.com/UNC-Libraries/longleaf-preservation/
7
+ edit_uri: ''
8
+
9
+ # include extra css file, in docs/
10
+ extra_css: [extra.css]
11
+
12
+ # docs markdown pages to include in sidepane navigation
13
+ nav:
14
+ - Welcome: index.md
15
+ - About Longleaf: aboutlongleaf.md
16
+ - Installation: install.md
17
+ - Basic Usage: quickstart.md
18
+ # pages to add and include later
19
+ # - Troubleshooting: trouble.md
20
+ # - FAQs: faq.md
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: longleaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - bbpennel
7
+ - Ben Pennell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-13 00:00:00.000000000 Z
11
+ date: 2019-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.9.16
41
+ - !ruby/object:Gem::Dependency
42
+ name: sequel
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.20'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.20'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,58 +86,145 @@ dependencies:
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: 3.6.0
89
+ version: '3.8'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: 3.6.0
96
+ version: '3.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec_junit_formatter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.4'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: factory_bot
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '4.0'
117
+ version: '5.0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: '4.0'
124
+ version: '5.0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: aruba
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - "~>"
102
130
  - !ruby/object:Gem::Version
103
- version: 0.14.0
131
+ version: 0.14.9
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.14.9
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.70.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.70.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.33'
104
160
  type: :development
105
161
  prerelease: false
106
162
  version_requirements: !ruby/object:Gem::Requirement
107
163
  requirements:
108
164
  - - "~>"
109
165
  - !ruby/object:Gem::Version
110
- version: 0.14.0
166
+ version: '1.33'
111
167
  - !ruby/object:Gem::Dependency
112
- name: bixby
168
+ name: rubocop-performance
113
169
  requirement: !ruby/object:Gem::Requirement
114
170
  requirements:
115
- - - ">="
171
+ - - "~>"
116
172
  - !ruby/object:Gem::Version
117
- version: 2.0.0.pre.beta1
173
+ version: '1.3'
118
174
  type: :development
119
175
  prerelease: false
120
176
  version_requirements: !ruby/object:Gem::Requirement
121
177
  requirements:
122
- - - ">="
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.3'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop-sequel
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.0.5
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.0.5
195
+ - !ruby/object:Gem::Dependency
196
+ name: amalgalite
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
123
200
  - !ruby/object:Gem::Version
124
- version: 2.0.0.pre.beta1
125
- description: Provides a framework for performing preservation services over sets of
126
- files.
201
+ version: '1.6'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.6'
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.16'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.16'
223
+ description: Longleaf is a command-line tool which allows users to configure a set
224
+ of storage locations and define custom sets of preservation services to run on their
225
+ contents. These services are executed in response to applicable preservation events
226
+ issued by clients. Its primary goal is to provide tools to create a simple and customizable
227
+ preservation environment.
127
228
  email:
128
229
  - bbpennel@email.unc.edu
129
230
  executables:
@@ -131,27 +232,127 @@ executables:
131
232
  extensions: []
132
233
  extra_rdoc_files: []
133
234
  files:
235
+ - ".circleci/config.yml"
134
236
  - ".editorconfig"
135
237
  - ".gitignore"
136
238
  - ".rspec"
137
239
  - ".rubocop.yml"
138
240
  - ".rubocop_todo.yml"
139
241
  - ".travis.yml"
242
+ - ".yardopts"
140
243
  - Gemfile
141
244
  - LICENSE.txt
142
245
  - README.md
143
246
  - Rakefile
144
247
  - bin/console
145
248
  - bin/setup
249
+ - docs/aboutlongleaf.md
250
+ - docs/extra.css
251
+ - docs/img/change-file.png
252
+ - docs/img/ll-example-preserved.png
253
+ - docs/index.md
254
+ - docs/install.md
255
+ - docs/ll-example/config-example-relative.yml
256
+ - docs/ll-example/files-dir/LLexample-PDF.pdf
257
+ - docs/ll-example/files-dir/LLexample-TOCHANGE.txt
258
+ - docs/ll-example/files-dir/LLexample-tokeep.txt
259
+ - docs/ll-example/metadata-dir/.gitkeep
260
+ - docs/ll-example/replica-files/.gitkeep
261
+ - docs/ll-example/replica-metadata/.gitkeep
262
+ - docs/quickstart.md
263
+ - docs/rdocs/Longleaf.html
264
+ - docs/rdocs/Longleaf/AppFields.html
265
+ - docs/rdocs/Longleaf/ApplicationConfigDeserializer.html
266
+ - docs/rdocs/Longleaf/ApplicationConfigManager.html
267
+ - docs/rdocs/Longleaf/ApplicationConfigValidator.html
268
+ - docs/rdocs/Longleaf/CLI.html
269
+ - docs/rdocs/Longleaf/ChecksumMismatchError.html
270
+ - docs/rdocs/Longleaf/ConfigBuilder.html
271
+ - docs/rdocs/Longleaf/ConfigurationError.html
272
+ - docs/rdocs/Longleaf/ConfigurationValidator.html
273
+ - docs/rdocs/Longleaf/DeregisterCommand.html
274
+ - docs/rdocs/Longleaf/DeregisterEvent.html
275
+ - docs/rdocs/Longleaf/DeregistrationError.html
276
+ - docs/rdocs/Longleaf/DigestHelper.html
277
+ - docs/rdocs/Longleaf/EventError.html
278
+ - docs/rdocs/Longleaf/EventNames.html
279
+ - docs/rdocs/Longleaf/EventStatusTracking.html
280
+ - docs/rdocs/Longleaf/FileCheckService.html
281
+ - docs/rdocs/Longleaf/FileHelpers.html
282
+ - docs/rdocs/Longleaf/FileRecord.html
283
+ - docs/rdocs/Longleaf/FileSelector.html
284
+ - docs/rdocs/Longleaf/FixityCheckService.html
285
+ - docs/rdocs/Longleaf/IndexManager.html
286
+ - docs/rdocs/Longleaf/InvalidDigestAlgorithmError.html
287
+ - docs/rdocs/Longleaf/InvalidStoragePathError.html
288
+ - docs/rdocs/Longleaf/Logging.html
289
+ - docs/rdocs/Longleaf/Logging/RedirectingLogger.html
290
+ - docs/rdocs/Longleaf/LongleafError.html
291
+ - docs/rdocs/Longleaf/MDFields.html
292
+ - docs/rdocs/Longleaf/MetadataBuilder.html
293
+ - docs/rdocs/Longleaf/MetadataDeserializer.html
294
+ - docs/rdocs/Longleaf/MetadataError.html
295
+ - docs/rdocs/Longleaf/MetadataPersistenceManager.html
296
+ - docs/rdocs/Longleaf/MetadataRecord.html
297
+ - docs/rdocs/Longleaf/MetadataSerializer.html
298
+ - docs/rdocs/Longleaf/PreservationServiceError.html
299
+ - docs/rdocs/Longleaf/PreserveCommand.html
300
+ - docs/rdocs/Longleaf/PreserveEvent.html
301
+ - docs/rdocs/Longleaf/RegisterCommand.html
302
+ - docs/rdocs/Longleaf/RegisterEvent.html
303
+ - docs/rdocs/Longleaf/RegisteredFileSelector.html
304
+ - docs/rdocs/Longleaf/RegistrationError.html
305
+ - docs/rdocs/Longleaf/ReindexCommand.html
306
+ - docs/rdocs/Longleaf/RsyncReplicationService.html
307
+ - docs/rdocs/Longleaf/SequelIndexDriver.html
308
+ - docs/rdocs/Longleaf/ServiceCandidateFilesystemIterator.html
309
+ - docs/rdocs/Longleaf/ServiceCandidateIndexIterator.html
310
+ - docs/rdocs/Longleaf/ServiceCandidateLocator.html
311
+ - docs/rdocs/Longleaf/ServiceClassCache.html
312
+ - docs/rdocs/Longleaf/ServiceDateHelper.html
313
+ - docs/rdocs/Longleaf/ServiceDefinition.html
314
+ - docs/rdocs/Longleaf/ServiceDefinitionManager.html
315
+ - docs/rdocs/Longleaf/ServiceDefinitionValidator.html
316
+ - docs/rdocs/Longleaf/ServiceFields.html
317
+ - docs/rdocs/Longleaf/ServiceManager.html
318
+ - docs/rdocs/Longleaf/ServiceMappingManager.html
319
+ - docs/rdocs/Longleaf/ServiceMappingValidator.html
320
+ - docs/rdocs/Longleaf/ServiceRecord.html
321
+ - docs/rdocs/Longleaf/StorageLocation.html
322
+ - docs/rdocs/Longleaf/StorageLocationManager.html
323
+ - docs/rdocs/Longleaf/StorageLocationUnavailableError.html
324
+ - docs/rdocs/Longleaf/StorageLocationValidator.html
325
+ - docs/rdocs/Longleaf/StoragePathValidator.html
326
+ - docs/rdocs/Longleaf/SystemConfigBuilder.html
327
+ - docs/rdocs/Longleaf/SystemConfigFields.html
328
+ - docs/rdocs/Longleaf/ValidateConfigCommand.html
329
+ - docs/rdocs/Longleaf/ValidateMetadataCommand.html
330
+ - docs/rdocs/_index.html
331
+ - docs/rdocs/class_list.html
332
+ - docs/rdocs/css/common.css
333
+ - docs/rdocs/css/full_list.css
334
+ - docs/rdocs/css/style.css
335
+ - docs/rdocs/file.README.html
336
+ - docs/rdocs/file_list.html
337
+ - docs/rdocs/frames.html
338
+ - docs/rdocs/index.html
339
+ - docs/rdocs/js/app.js
340
+ - docs/rdocs/js/full_list.js
341
+ - docs/rdocs/js/jquery.js
342
+ - docs/rdocs/method_list.html
343
+ - docs/rdocs/top-level-namespace.html
146
344
  - exe/longleaf
147
345
  - lib/longleaf.rb
148
346
  - lib/longleaf/candidates/file_selector.rb
347
+ - lib/longleaf/candidates/registered_file_selector.rb
149
348
  - lib/longleaf/candidates/service_candidate_filesystem_iterator.rb
349
+ - lib/longleaf/candidates/service_candidate_index_iterator.rb
150
350
  - lib/longleaf/candidates/service_candidate_locator.rb
151
351
  - lib/longleaf/cli.rb
152
352
  - lib/longleaf/commands/deregister_command.rb
153
353
  - lib/longleaf/commands/preserve_command.rb
154
354
  - lib/longleaf/commands/register_command.rb
355
+ - lib/longleaf/commands/reindex_command.rb
155
356
  - lib/longleaf/commands/validate_config_command.rb
156
357
  - lib/longleaf/commands/validate_metadata_command.rb
157
358
  - lib/longleaf/errors.rb
@@ -162,6 +363,8 @@ files:
162
363
  - lib/longleaf/events/register_event.rb
163
364
  - lib/longleaf/helpers/digest_helper.rb
164
365
  - lib/longleaf/helpers/service_date_helper.rb
366
+ - lib/longleaf/indexing/index_manager.rb
367
+ - lib/longleaf/indexing/sequel_index_driver.rb
165
368
  - lib/longleaf/logging.rb
166
369
  - lib/longleaf/logging/redirecting_logger.rb
167
370
  - lib/longleaf/models/app_fields.rb
@@ -172,6 +375,8 @@ files:
172
375
  - lib/longleaf/models/service_fields.rb
173
376
  - lib/longleaf/models/service_record.rb
174
377
  - lib/longleaf/models/storage_location.rb
378
+ - lib/longleaf/models/system_config_fields.rb
379
+ - lib/longleaf/preservation_services/file_check_service.rb
175
380
  - lib/longleaf/preservation_services/fixity_check_service.rb
176
381
  - lib/longleaf/preservation_services/rsync_replication_service.rb
177
382
  - lib/longleaf/services/application_config_deserializer.rb
@@ -179,6 +384,7 @@ files:
179
384
  - lib/longleaf/services/application_config_validator.rb
180
385
  - lib/longleaf/services/configuration_validator.rb
181
386
  - lib/longleaf/services/metadata_deserializer.rb
387
+ - lib/longleaf/services/metadata_persistence_manager.rb
182
388
  - lib/longleaf/services/metadata_serializer.rb
183
389
  - lib/longleaf/services/service_class_cache.rb
184
390
  - lib/longleaf/services/service_definition_manager.rb
@@ -192,12 +398,16 @@ files:
192
398
  - lib/longleaf/specs/config_builder.rb
193
399
  - lib/longleaf/specs/custom_matchers.rb
194
400
  - lib/longleaf/specs/file_helpers.rb
401
+ - lib/longleaf/specs/metadata_builder.rb
402
+ - lib/longleaf/specs/system_config_builder.rb
195
403
  - lib/longleaf/version.rb
196
404
  - longleaf.gemspec
197
- homepage: https://github.com/UNC-Libraries/
405
+ - mkdocs.yml
406
+ homepage: https://unc-libraries.github.io/longleaf-preservation
198
407
  licenses:
199
408
  - Apache-2.0
200
- metadata: {}
409
+ metadata:
410
+ source_code_uri: https://github.com/UNC-Libraries/longleaf-preservation
201
411
  post_install_message:
202
412
  rdoc_options: []
203
413
  require_paths:
@@ -206,14 +416,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
416
  requirements:
207
417
  - - ">="
208
418
  - !ruby/object:Gem::Version
209
- version: '0'
419
+ version: '2.3'
210
420
  required_rubygems_version: !ruby/object:Gem::Requirement
211
421
  requirements:
212
- - - ">"
422
+ - - ">="
213
423
  - !ruby/object:Gem::Version
214
- version: 1.3.1
424
+ version: '0'
215
425
  requirements: []
216
- rubygems_version: 3.0.2
426
+ rubyforge_project:
427
+ rubygems_version: 2.7.7
217
428
  signing_key:
218
429
  specification_version: 4
219
430
  summary: Longleaf preservation services tool