@@ -5,6 +5,7 @@ module Srclib.Types (
5
5
SourceUnit (.. ),
6
6
SourceUnitBuild (.. ),
7
7
SourceUnitDependency (.. ),
8
+ SourceUnitNoticeFile (.. ),
8
9
AdditionalDepData (.. ),
9
10
SourceUserDefDep (.. ),
10
11
SourceRemoteDep (.. ),
@@ -112,13 +113,36 @@ textToOriginPath = OriginPath . toString
112
113
-- Manifest?: string;
113
114
-- }
114
115
116
+ data SourceUnitNoticeFile = SourceUnitNoticeFile
117
+ { sourceUnitNoticeFilePath :: Text
118
+ , sourceUnitNoticeFileContents :: Text
119
+ , sourceUnitNoticeFileCopyrights :: [Text ]
120
+ }
121
+ deriving (Eq , Ord , Show )
122
+
123
+ instance ToJSON SourceUnitNoticeFile where
124
+ toJSON SourceUnitNoticeFile {.. } =
125
+ object
126
+ [ " path" .= sourceUnitNoticeFilePath
127
+ , " contents" .= sourceUnitNoticeFileContents
128
+ , " copyrights" .= sourceUnitNoticeFileCopyrights
129
+ ]
130
+
131
+ instance FromJSON SourceUnitNoticeFile where
132
+ parseJSON = withObject " SourceUnitNoticeFile" $ \ obj ->
133
+ SourceUnitNoticeFile
134
+ <$> obj .: " path"
135
+ <*> obj .: " contents"
136
+ <*> obj .:? " copyrights" .!= []
137
+
115
138
data FullSourceUnit = FullSourceUnit
116
139
{ fullSourceUnitName :: Text
117
140
, fullSourceUnitType :: Text
118
141
, fullSourceUnitTitle :: Maybe Text
119
142
, fullSourceUnitManifest :: Maybe Text
120
143
, fullSourceUnitBuild :: Maybe SourceUnitBuild
121
144
, fullSourceUnitGraphBreadth :: GraphBreadth
145
+ , fullSourceUnitNoticeFiles :: [SourceUnitNoticeFile ]
122
146
, fullSourceUnitOriginPaths :: [OriginPath ]
123
147
, fullSourceUnitAdditionalData :: Maybe AdditionalDepData
124
148
, fullSourceUnitFiles :: Maybe (NonEmpty Text )
@@ -136,6 +160,7 @@ licenseUnitToFullSourceUnit LicenseUnit{..} =
136
160
, fullSourceUnitManifest = Nothing
137
161
, fullSourceUnitBuild = Nothing
138
162
, fullSourceUnitGraphBreadth = Complete
163
+ , fullSourceUnitNoticeFiles = licenseUnitNoticeFiles
139
164
, fullSourceUnitOriginPaths = []
140
165
, fullSourceUnitAdditionalData = Nothing
141
166
, fullSourceUnitFiles = Just licenseUnitFiles
@@ -153,6 +178,7 @@ sourceUnitToFullSourceUnit SourceUnit{..} =
153
178
, fullSourceUnitBuild = sourceUnitBuild
154
179
, fullSourceUnitGraphBreadth = sourceUnitGraphBreadth
155
180
, fullSourceUnitOriginPaths = sourceUnitOriginPaths
181
+ , fullSourceUnitNoticeFiles = sourceUnitNoticeFiles
156
182
, fullSourceUnitAdditionalData = additionalData
157
183
, fullSourceUnitFiles = Nothing
158
184
, fullSourceUnitData = Nothing
@@ -169,6 +195,7 @@ instance ToJSON FullSourceUnit where
169
195
, " Build" .= fullSourceUnitBuild
170
196
, " GraphBreadth" .= fullSourceUnitGraphBreadth
171
197
, " OriginPaths" .= fullSourceUnitOriginPaths
198
+ , " NoticeFiles" .= fullSourceUnitNoticeFiles
172
199
, " AdditionalDependencyData" .= fullSourceUnitAdditionalData
173
200
, " Files" .= fullSourceUnitFiles
174
201
, " Data" .= fullSourceUnitData
@@ -204,6 +231,7 @@ data LicenseUnit = LicenseUnit
204
231
, licenseUnitDir :: Text
205
232
, licenseUnitFiles :: (NonEmpty Text )
206
233
, licenseUnitData :: (NonEmpty LicenseUnitData )
234
+ , licenseUnitNoticeFiles :: [SourceUnitNoticeFile ]
207
235
, licenseUnitInfo :: LicenseUnitInfo
208
236
}
209
237
deriving (Eq , Ord , Show )
@@ -217,6 +245,7 @@ emptyLicenseUnit =
217
245
, licenseUnitDir = " "
218
246
, licenseUnitFiles = " " :| []
219
247
, licenseUnitData = emptyLicenseUnitData :| []
248
+ , licenseUnitNoticeFiles = []
220
249
, licenseUnitInfo = LicenseUnitInfo {licenseUnitInfoDescription = Nothing }
221
250
}
222
251
@@ -235,6 +264,7 @@ instance ToJSON LicenseUnit where
235
264
, " Dir" .= licenseUnitDir
236
265
, " Files" .= licenseUnitFiles
237
266
, " Data" .= licenseUnitData
267
+ , " NoticeFiles" .= licenseUnitNoticeFiles
238
268
, " Info" .= licenseUnitInfo
239
269
]
240
270
@@ -247,6 +277,7 @@ instance FromJSON LicenseUnit where
247
277
<*> obj .: " Dir"
248
278
<*> obj .: " Files"
249
279
<*> obj .: " Data"
280
+ <*> obj .:? " NoticeFiles" .!= []
250
281
<*> obj .: " Info"
251
282
252
283
newtype LicenseUnitInfo = LicenseUnitInfo
@@ -350,6 +381,7 @@ data SourceUnit = SourceUnit
350
381
-- ^ path to manifest file
351
382
, sourceUnitBuild :: Maybe SourceUnitBuild
352
383
, sourceUnitGraphBreadth :: GraphBreadth
384
+ , sourceUnitNoticeFiles :: [SourceUnitNoticeFile ]
353
385
, sourceUnitOriginPaths :: [OriginPath ]
354
386
, additionalData :: Maybe AdditionalDepData
355
387
}
@@ -431,6 +463,7 @@ instance ToJSON SourceUnit where
431
463
, " Manifest" .= sourceUnitManifest
432
464
, " Build" .= sourceUnitBuild
433
465
, " GraphBreadth" .= sourceUnitGraphBreadth
466
+ , " NoticeFiles" .= sourceUnitNoticeFiles
434
467
, " OriginPaths" .= sourceUnitOriginPaths
435
468
, " AdditionalDependencyData" .= additionalData
436
469
]
@@ -443,6 +476,7 @@ instance FromJSON SourceUnit where
443
476
<*> obj .: " Manifest"
444
477
<*> obj .:? " Build"
445
478
<*> obj .: " GraphBreadth"
479
+ <*> obj .:? " NoticeFiles" .!= []
446
480
<*> obj .: " OriginPaths"
447
481
<*> obj .:? " AdditionalDependencyData"
448
482
0 commit comments