cocina-models 0.29.0 → 0.30.0

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -3
  3. data/README.md +11 -0
  4. data/cocina-models.gemspec +5 -0
  5. data/exe/generator +9 -0
  6. data/lib/cocina/generator.rb +18 -0
  7. data/lib/cocina/generator/generator.rb +80 -0
  8. data/lib/cocina/generator/schema.rb +84 -0
  9. data/lib/cocina/generator/schema_array.rb +20 -0
  10. data/lib/cocina/generator/schema_base.rb +49 -0
  11. data/lib/cocina/generator/schema_ref.rb +16 -0
  12. data/lib/cocina/generator/schema_value.rb +60 -0
  13. data/lib/cocina/generator/vocab.rb +63 -0
  14. data/lib/cocina/models.rb +51 -25
  15. data/lib/cocina/models/access.rb +10 -0
  16. data/lib/cocina/models/admin_policy.rb +13 -56
  17. data/lib/cocina/models/admin_policy_administrative.rb +11 -0
  18. data/lib/cocina/models/administrative.rb +14 -0
  19. data/lib/cocina/models/catalog_link.rb +4 -1
  20. data/lib/cocina/models/collection.rb +21 -31
  21. data/lib/cocina/models/collection_identification.rb +9 -0
  22. data/lib/cocina/models/description.rb +1 -8
  23. data/lib/cocina/models/dro.rb +34 -70
  24. data/lib/cocina/models/dro_access.rb +16 -0
  25. data/lib/cocina/models/dro_structural.rb +14 -0
  26. data/lib/cocina/models/embargo.rb +16 -0
  27. data/lib/cocina/models/file.rb +20 -36
  28. data/lib/cocina/models/file_administrative.rb +10 -0
  29. data/lib/cocina/models/file_set.rb +8 -15
  30. data/lib/cocina/models/file_set_structural.rb +9 -0
  31. data/lib/cocina/models/geographic.rb +10 -0
  32. data/lib/cocina/models/identification.rb +11 -0
  33. data/lib/cocina/models/message_digest.rb +17 -0
  34. data/lib/cocina/models/presentation.rb +12 -0
  35. data/lib/cocina/models/release_tag.rb +12 -7
  36. data/lib/cocina/models/request_admin_policy.rb +15 -3
  37. data/lib/cocina/models/request_collection.rb +21 -4
  38. data/lib/cocina/models/request_dro.rb +32 -11
  39. data/lib/cocina/models/request_dro_structural.rb +13 -0
  40. data/lib/cocina/models/request_file.rb +15 -6
  41. data/lib/cocina/models/request_file_set.rb +7 -9
  42. data/lib/cocina/models/request_file_set_structural.rb +9 -0
  43. data/lib/cocina/models/sequence.rb +2 -5
  44. data/lib/cocina/models/title.rb +12 -0
  45. data/lib/cocina/models/validator.rb +22 -0
  46. data/lib/cocina/models/version.rb +1 -1
  47. data/lib/cocina/models/vocab.rb +45 -60
  48. data/openapi.yml +695 -0
  49. metadata +101 -9
  50. data/lib/cocina/models/admin_policy_attributes.rb +0 -21
  51. data/lib/cocina/models/collection_attributes.rb +0 -22
  52. data/lib/cocina/models/dro_attributes.rb +0 -22
  53. data/lib/cocina/models/file_attributes.rb +0 -25
  54. data/lib/cocina/models/file_set_attributes.rb +0 -16
  55. data/lib/cocina/models/types.rb +0 -10
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.0
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-12 00:00:00.000000000 Z
11
+ date: 2020-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: dry-struct
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,48 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: openapi3_parser
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: openapi_parser
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
41
97
  - !ruby/object:Gem::Dependency
42
98
  name: zeitwerk
43
99
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +122,20 @@ dependencies:
66
122
  - - "~>"
67
123
  - !ruby/object:Gem::Version
68
124
  version: '2.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: committee
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
69
139
  - !ruby/object:Gem::Dependency
70
140
  name: rake
71
141
  requirement: !ruby/object:Gem::Requirement
@@ -139,7 +209,8 @@ dependencies:
139
209
  description: SDR data models that can be validated
140
210
  email:
141
211
  - jcoyne@justincoyne.com
142
- executables: []
212
+ executables:
213
+ - generator
143
214
  extensions: []
144
215
  extra_rdoc_files: []
145
216
  files:
@@ -175,30 +246,51 @@ files:
175
246
  - docs/sampleETD/xn109qc9773_taco.json
176
247
  - docs/schema.json
177
248
  - docs/schema.md
249
+ - exe/generator
250
+ - lib/cocina/generator.rb
251
+ - lib/cocina/generator/generator.rb
252
+ - lib/cocina/generator/schema.rb
253
+ - lib/cocina/generator/schema_array.rb
254
+ - lib/cocina/generator/schema_base.rb
255
+ - lib/cocina/generator/schema_ref.rb
256
+ - lib/cocina/generator/schema_value.rb
257
+ - lib/cocina/generator/vocab.rb
178
258
  - lib/cocina/models.rb
259
+ - lib/cocina/models/access.rb
179
260
  - lib/cocina/models/admin_policy.rb
180
- - lib/cocina/models/admin_policy_attributes.rb
261
+ - lib/cocina/models/admin_policy_administrative.rb
262
+ - lib/cocina/models/administrative.rb
181
263
  - lib/cocina/models/catalog_link.rb
182
264
  - lib/cocina/models/checkable.rb
183
265
  - lib/cocina/models/collection.rb
184
- - lib/cocina/models/collection_attributes.rb
266
+ - lib/cocina/models/collection_identification.rb
185
267
  - lib/cocina/models/description.rb
186
268
  - lib/cocina/models/dro.rb
187
- - lib/cocina/models/dro_attributes.rb
269
+ - lib/cocina/models/dro_access.rb
270
+ - lib/cocina/models/dro_structural.rb
271
+ - lib/cocina/models/embargo.rb
188
272
  - lib/cocina/models/file.rb
189
- - lib/cocina/models/file_attributes.rb
273
+ - lib/cocina/models/file_administrative.rb
190
274
  - lib/cocina/models/file_set.rb
191
- - lib/cocina/models/file_set_attributes.rb
275
+ - lib/cocina/models/file_set_structural.rb
276
+ - lib/cocina/models/geographic.rb
277
+ - lib/cocina/models/identification.rb
278
+ - lib/cocina/models/message_digest.rb
279
+ - lib/cocina/models/presentation.rb
192
280
  - lib/cocina/models/release_tag.rb
193
281
  - lib/cocina/models/request_admin_policy.rb
194
282
  - lib/cocina/models/request_collection.rb
195
283
  - lib/cocina/models/request_dro.rb
284
+ - lib/cocina/models/request_dro_structural.rb
196
285
  - lib/cocina/models/request_file.rb
197
286
  - lib/cocina/models/request_file_set.rb
287
+ - lib/cocina/models/request_file_set_structural.rb
198
288
  - lib/cocina/models/sequence.rb
199
- - lib/cocina/models/types.rb
289
+ - lib/cocina/models/title.rb
290
+ - lib/cocina/models/validator.rb
200
291
  - lib/cocina/models/version.rb
201
292
  - lib/cocina/models/vocab.rb
293
+ - openapi.yml
202
294
  homepage: https://github.com/sul-dlss/cocina-models
203
295
  licenses: []
204
296
  metadata: {}
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both AdminPolicy and RequestAdminPolicy
6
- module AdminPolicyAttributes
7
- def self.included(obj)
8
- obj.attribute(:access, AdminPolicy::Access.default { AdminPolicy::Access.new })
9
- obj.attribute(:administrative, AdminPolicy::Administrative.default { AdminPolicy::Administrative.new })
10
- # TODO: Allowing description to be omittable for now (until rolled out to consumers),
11
- # but I think it's actually required for every admin policy
12
- obj.attribute :description, Description.optional.meta(omittable: true)
13
- obj.attribute(:identification, AdminPolicy::Identification.default { AdminPolicy::Identification.new })
14
- obj.attribute :label, Types::Strict::String
15
- obj.attribute(:structural, AdminPolicy::Structural.default { AdminPolicy::Structural.new })
16
- obj.attribute :type, Types::String.enum(*AdminPolicy::TYPES)
17
- obj.attribute :version, Types::Strict::Integer
18
- end
19
- end
20
- end
21
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both Collection and RequestCollection
6
- # See http://sul-dlss.github.io/cocina-models/maps/Collection.json
7
- module CollectionAttributes
8
- def self.included(obj)
9
- obj.attribute(:access, Collection::Access.default { Collection::Access.new })
10
- obj.attribute(:administrative, Collection::Administrative.default { Collection::Administrative.new })
11
- # TODO: Allowing description to be omittable for now (until rolled out to consumers),
12
- # but I think it's actually required for every Collection
13
- obj.attribute :description, Description.optional.meta(omittable: true)
14
- obj.attribute(:identification, Collection::Identification.default { Collection::Identification.new })
15
- obj.attribute :label, Types::Strict::String
16
- obj.attribute(:structural, Collection::Structural.default { Collection::Structural.new })
17
- obj.attribute :type, Types::String.enum(*Collection::TYPES)
18
- obj.attribute :version, Types::Strict::Integer
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both DRO and RequestDRO
6
- # See http://sul-dlss.github.io/cocina-models/maps/DRO.json
7
- module DroAttributes
8
- def self.included(obj)
9
- obj.attribute(:access, DRO::Access.default { DRO::Access.new })
10
- obj.attribute(:administrative, DRO::Administrative.default { DRO::Administrative.new })
11
- # TODO: Allowing description to be omittable for now (until rolled out to consumers),
12
- # but I think it's actually required for every DRO
13
- obj.attribute :description, Description.optional.meta(omittable: true)
14
- obj.attribute :geographic, DRO::Geographic.optional.meta(omittable: true)
15
- obj.attribute(:identification, DRO::Identification.default { DRO::Identification.new })
16
- obj.attribute :label, Types::Strict::String
17
- obj.attribute :type, Types::String.enum(*DRO::TYPES)
18
- obj.attribute :version, Types::Strict::Integer
19
- end
20
- end
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both File and RequestFile
6
- # See http://sul-dlss.github.io/cocina-models/maps/File.json
7
- module FileAttributes
8
- def self.included(obj)
9
- obj.attribute(:access, File::Access.optional.default { File::Access.new })
10
- obj.attribute(:administrative, File::Administrative.default { File::Administrative.new })
11
- obj.attribute :label, Types::Strict::String
12
- obj.attribute :filename, Types::String.optional.default(nil)
13
- obj.attribute :identification, File::Identification.optional.meta(omittable: true)
14
- obj.attribute :hasMessageDigests, Types::Strict::Array.of(File::Fixity).default([].freeze)
15
- obj.attribute :hasMimeType, Types::String.optional.meta(omittable: true)
16
- obj.attribute :presentation, File::Presentation.optional.meta(omittable: true)
17
- obj.attribute :size, Types::Strict::Integer.optional.default(nil)
18
- obj.attribute :structural, File::Structural.optional.meta(omittable: true)
19
- obj.attribute :type, Types::String.enum(*File::TYPES)
20
- obj.attribute :use, Types::String.enum('transcription').optional.meta(omittable: true)
21
- obj.attribute :version, Types::Strict::Integer
22
- end
23
- end
24
- end
25
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # attributes common to both FileSet and RequestFileSet
6
- # See http://sul-dlss.github.io/cocina-models/maps/Fileset.json
7
- module FileSetAttributes
8
- def self.included(obj)
9
- obj.attribute(:identification, FileSet::Identification.default { FileSet::Identification.new })
10
- obj.attribute :label, Types::Strict::String
11
- obj.attribute :type, Types::String.enum(*FileSet::TYPES)
12
- obj.attribute :version, Types::Strict::Integer
13
- end
14
- end
15
- end
16
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # This defines the data types supported by the model
6
- module Types
7
- include Dry.Types()
8
- end
9
- end
10
- end