From 03d39102ba55cda7cbe80fcdeb9b250caaa70bd0 Mon Sep 17 00:00:00 2001 From: pacien Date: Mon, 6 Jan 2020 10:28:27 +0100 Subject: compiler: properly reject invalid dates in sidecar files GitHub: closes #31 --- compiler/package.yaml | 2 +- compiler/src/Input.hs | 3 ++- compiler/src/Resource.hs | 6 +----- compiler/stack.yaml | 6 ------ compiler/stack.yaml.lock | 30 +----------------------------- ldgallery.1.md | 2 +- 6 files changed, 6 insertions(+), 43 deletions(-) diff --git a/compiler/package.yaml b/compiler/package.yaml index fd44ccc..043985d 100644 --- a/compiler/package.yaml +++ b/compiler/package.yaml @@ -28,7 +28,7 @@ dependencies: - parallel-io - Glob - safe -- time >= 1.9.3 && < 1.10 +- time default-extensions: - DuplicateRecordFields diff --git a/compiler/src/Input.hs b/compiler/src/Input.hs index 86d3ec8..85c802e 100644 --- a/compiler/src/Input.hs +++ b/compiler/src/Input.hs @@ -30,6 +30,7 @@ import Data.Function ((&)) import Data.Maybe (catMaybes) import Data.Bool (bool) import Data.List (find) +import Data.Time.LocalTime (ZonedTime) import Data.Yaml (ParseException, decodeFileEither) import Data.Aeson (FromJSON) import System.FilePath (isExtensionOf, dropExtension) @@ -60,7 +61,7 @@ data InputTree = data Sidecar = Sidecar { title :: Maybe String - , date :: Maybe String + , date :: Maybe ZonedTime , description :: Maybe String , tags :: Maybe [String] } deriving (Generic, FromJSON, Show) diff --git a/compiler/src/Resource.hs b/compiler/src/Resource.hs index 207239f..53d61ac 100644 --- a/compiler/src/Resource.hs +++ b/compiler/src/Resource.hs @@ -31,7 +31,6 @@ import Data.Maybe (mapMaybe, fromMaybe) import Data.Function ((&)) import qualified Data.Set as Set import Data.Time.LocalTime (ZonedTime, utc, utcToZonedTime, zonedTimeToUTC) -import Data.Time.Format.ISO8601 (iso8601ParseM) import System.Directory (getModificationTime) import Safe.Foldable (maximumByMay) @@ -110,7 +109,7 @@ buildGalleryTree processItem processThumbnail tagsFromDirectories galleryName in fileModTime <- lastModTime path return GalleryItem { title = itemTitle - , date = fromMaybe fileModTime itemDate + , date = fromMaybe fileModTime $ Input.date sidecar , description = optMeta description "" , tags = (optMeta tags []) ++ implicitParentTags parents , path = parents >= iso8601ParseM - optMeta :: (Sidecar -> Maybe a) -> a -> a optMeta get fallback = fromMaybe fallback $ get sidecar diff --git a/compiler/stack.yaml b/compiler/stack.yaml index 146f46b..29f8539 100644 --- a/compiler/stack.yaml +++ b/compiler/stack.yaml @@ -41,12 +41,6 @@ packages: # # extra-deps: [] -extra-deps: -- time-1.9.3@sha256:8f1b5448722a12a952248b356c9eb366e351226543d9086a2da71270522d5f45,5679 -- directory-1.3.4.0@sha256:500019f04494324d1df16cf83eefeb3f809b2b20b32a32ccd755ee0439c18bfd,2829 -- process-1.6.7.0@sha256:305bcf44c42a96425e77af1748183f505a701648f68cc299d5ad8ac1b866a6a1,2468 -- unix-2.7.2.2@sha256:e69269a17b9fa26cb77f3f55e86c39d0a4940ccfa0c4bc20826919d2572076ad,3496 - # Override default flag values for local packages and extra-deps # flags: {} diff --git a/compiler/stack.yaml.lock b/compiler/stack.yaml.lock index 8e833c5..fc538c1 100644 --- a/compiler/stack.yaml.lock +++ b/compiler/stack.yaml.lock @@ -3,35 +3,7 @@ # For more information, please see the documentation at: # https://docs.haskellstack.org/en/stable/lock_files -packages: -- completed: - hackage: time-1.9.3@sha256:8f1b5448722a12a952248b356c9eb366e351226543d9086a2da71270522d5f45,5679 - pantry-tree: - size: 6558 - sha256: a1043c1719491764f0fa37a1fd70d9451080548a41632fee88d8e1b8db4942d6 - original: - hackage: time-1.9.3@sha256:8f1b5448722a12a952248b356c9eb366e351226543d9086a2da71270522d5f45,5679 -- completed: - hackage: directory-1.3.4.0@sha256:500019f04494324d1df16cf83eefeb3f809b2b20b32a32ccd755ee0439c18bfd,2829 - pantry-tree: - size: 3365 - sha256: 00c09e0c014d29ebfb921b64c1459e61a0ad6f10e70128d795246a47c06394b0 - original: - hackage: directory-1.3.4.0@sha256:500019f04494324d1df16cf83eefeb3f809b2b20b32a32ccd755ee0439c18bfd,2829 -- completed: - hackage: process-1.6.7.0@sha256:305bcf44c42a96425e77af1748183f505a701648f68cc299d5ad8ac1b866a6a1,2468 - pantry-tree: - size: 1211 - sha256: 49c3e531d2473fe455c1cde655f074a320fa4ec8569d650262bf382f9c5796fb - original: - hackage: process-1.6.7.0@sha256:305bcf44c42a96425e77af1748183f505a701648f68cc299d5ad8ac1b866a6a1,2468 -- completed: - hackage: unix-2.7.2.2@sha256:e69269a17b9fa26cb77f3f55e86c39d0a4940ccfa0c4bc20826919d2572076ad,3496 - pantry-tree: - size: 3536 - sha256: c355f7924ce67e5bf8f20767462af18f09b8c0d1f7161117221cbb94c15deee3 - original: - hackage: unix-2.7.2.2@sha256:e69269a17b9fa26cb77f3f55e86c39d0a4940ccfa0c4bc20826919d2572076ad,3496 +packages: [] snapshots: - completed: size: 524799 diff --git a/ldgallery.1.md b/ldgallery.1.md index cfe24d7..7163c8e 100644 --- a/ldgallery.1.md +++ b/ldgallery.1.md @@ -74,7 +74,7 @@ title : Title of the item. Defaults to the name of the file. date -: ISO 8601-formatted date and time. Defaults to the last modification time of the file. +: ISO 8601 zoned date and time. Defaults to the last modification time of the file. description : Description for the item. -- cgit v1.2.3