[#107] Replace file-embed library with inline config

Problem: At new resolver version we recieved obscure error when tried to cross-compile project to Windows on CI. Changing file-embed version to the old one doesn't help us.

Solution: inline content of this file into haskell source, using raw-string-qq library, that helps us to avoid escaping and typing newline characters.
This commit is contained in:
Andrei Borzenkov 2022-07-07 16:09:34 +04:00
parent b255445a55
commit e460301275
8 changed files with 32 additions and 39 deletions

View File

@ -7,3 +7,7 @@ License: Unlicense
Files: links-tests/ftp_root/**/* Files: links-tests/ftp_root/**/*
Copyright: 2021 Serokell <https://serokell.io> Copyright: 2021 Serokell <https://serokell.io>
License: Unlicense License: Unlicense
Files: tests/configs/github-config.yaml
Copyright: 2019-2021 Serokell <https://serokell.io>
License: Unlicense

View File

@ -17,7 +17,6 @@ description: Please see the README on GitHub at <https://github.com/sero
extra-source-files: extra-source-files:
- README.md - README.md
- CHANGES.md - CHANGES.md
- src-files/*
default-extensions: default-extensions:
- AllowAmbiguousTypes - AllowAmbiguousTypes
@ -71,7 +70,7 @@ dependencies:
- directory - directory
- dlist - dlist
- filepath - filepath
- file-embed < 0.14 - raw-strings-qq
- fmt - fmt
- ftp-client - ftp-client
- Glob - Glob
@ -126,6 +125,7 @@ tests:
dependencies: dependencies:
- firefly - firefly
- hspec - hspec
- hspec-expectations
- QuickCheck - QuickCheck
- xrefcheck - xrefcheck
build-tools: build-tools:

View File

@ -23,8 +23,6 @@ import Text.Regex.TDFA qualified as R
import Text.Regex.TDFA.ByteString () import Text.Regex.TDFA.ByteString ()
import Text.Regex.TDFA.Text qualified as R import Text.Regex.TDFA.Text qualified as R
import Data.FileEmbed (embedFile)
import System.FilePath ((</>))
import Time (KnownRatName, Second, Time, unitsP) import Time (KnownRatName, Second, Time, unitsP)
import Xrefcheck.Core import Xrefcheck.Core
@ -32,6 +30,7 @@ import Xrefcheck.Scan
import Xrefcheck.Scanners.Markdown import Xrefcheck.Scanners.Markdown
import Xrefcheck.System (RelGlobPattern) import Xrefcheck.System (RelGlobPattern)
import Xrefcheck.Util (aesonConfigOption, postfixFields, (-:)) import Xrefcheck.Util (aesonConfigOption, postfixFields, (-:))
import Xrefcheck.Config.Default
-- | Overall config. -- | Overall config.
data Config = Config data Config = Config
@ -65,14 +64,6 @@ data ScannersConfig = ScannersConfig
makeLensesWith postfixFields ''Config makeLensesWith postfixFields ''Config
makeLensesWith postfixFields ''VerifyConfig makeLensesWith postfixFields ''VerifyConfig
-----------------------------------------------------------
-- Default config
-----------------------------------------------------------
defConfigUnfilled :: ByteString
defConfigUnfilled =
$(embedFile ("src-files" </> "def-config.yaml"))
-- | Picks raw config with @:PLACEHOLDER:<key>:@ and fills the specified fields -- | Picks raw config with @:PLACEHOLDER:<key>:@ and fills the specified fields
-- in it, picking a replacement suitable for the given key. Only strings and lists -- in it, picking a replacement suitable for the given key. Only strings and lists
-- of strings can be filled this way. -- of strings can be filled this way.

View File

@ -1,8 +1,19 @@
# SPDX-FileCopyrightText: 2019-2021 Serokell <https://serokell.io> {- SPDX-FileCopyrightText: 2022 Serokell <https://serokell.io>
# -
# SPDX-License-Identifier: Unlicense - SPDX-License-Identifier: MPL-2.0
-}
# Parameters of repository traversal. {-# LANGUAGE QuasiQuotes #-}
module Xrefcheck.Config.Default where
import Universum
import Text.RawString.QQ
defConfigUnfilled :: ByteString
defConfigUnfilled =
[r|# Parameters of repository traversal.
traversal: traversal:
# Files and folders which we pretend do not exist # Files and folders which we pretend do not exist
# (so they are neither analyzed nor can be referenced). # (so they are neither analyzed nor can be referenced).
@ -50,3 +61,4 @@ scanners:
# #
# This affects which anchors are generated for headers. # This affects which anchors are generated for headers.
flavor: :PLACEHOLDER:flavor: flavor: :PLACEHOLDER:flavor:
|]

View File

@ -13,6 +13,5 @@ extra-deps:
- pretty-terminal-0.1.0.0 - pretty-terminal-0.1.0.0
- roman-numerals-0.5.1.5 - roman-numerals-0.5.1.5
- with-utf8-1.0.2.3 - with-utf8-1.0.2.3
- file-embed-0.0.13.0
- th-utilities-0.2.4.0@sha256:ba19cd8441aa43dbaed40e9055bb5a7cbd7cf9e154f5253c6bf9293af8b1f96b,1869 - th-utilities-0.2.4.0@sha256:ba19cd8441aa43dbaed40e9055bb5a7cbd7cf9e154f5253c6bf9293af8b1f96b,1869
- firefly-0.2.1.0@sha256:e9d73486464c3e223ec457e02b30ddd5b550fdbf6292b268c64581e2b07d888b,1519 - firefly-0.2.1.0@sha256:e9d73486464c3e223ec457e02b30ddd5b550fdbf6292b268c64581e2b07d888b,1519

View File

@ -25,13 +25,6 @@ packages:
hackage: with-utf8-1.0.2.3@sha256:3de710e4aa70856ab0845373bfde4746920fd45b8641bfaa3bd5cd2c200c4704,3051 hackage: with-utf8-1.0.2.3@sha256:3de710e4aa70856ab0845373bfde4746920fd45b8641bfaa3bd5cd2c200c4704,3051
original: original:
hackage: with-utf8-1.0.2.3 hackage: with-utf8-1.0.2.3
- completed:
pantry-tree:
sha256: 6c8f71ca993658844b93a2120f2ff1536400e705890a6fbf0f4e9889ff502649
size: 477
hackage: file-embed-0.0.13.0@sha256:a819e90b91cab919ffef5895ab6e1b2a44eac395a585f489b0c289a4a12d1c54,1396
original:
hackage: file-embed-0.0.13.0
- completed: - completed:
pantry-tree: pantry-tree:
sha256: 8c577d112a8398a5542aa4205b2e8a470a66d57590e6606d752d71e75d7425ea sha256: 8c577d112a8398a5542aa4205b2e8a470a66d57590e6606d752d71e75d7425ea

View File

@ -13,7 +13,8 @@ import Control.Exception qualified as E
import Data.ByteString qualified as BS import Data.ByteString qualified as BS
import Network.HTTP.Types (Status (..)) import Network.HTTP.Types (Status (..))
import Test.Hspec (Spec, before, describe, it, shouldBe) import Test.Hspec (Spec, before, describe, it, shouldBe)
import Test.QuickCheck (counterexample, ioProperty, once) import Test.Hspec.Expectations (expectationFailure)
import Test.QuickCheck (ioProperty, once)
import Xrefcheck.Config (Config (..), VerifyConfig (..), defConfig, defConfigText) import Xrefcheck.Config (Config (..), VerifyConfig (..), defConfig, defConfigText)
import Xrefcheck.Core (Flavor (GitHub), allFlavors) import Xrefcheck.Core (Flavor (GitHub), allFlavors)
@ -34,16 +35,13 @@ spec = do
-- stack exec xrefcheck -- dump-config -t GitHub -o tests/configs/github-config.yaml -- stack exec xrefcheck -- dump-config -t GitHub -o tests/configs/github-config.yaml
it "Config matches" $ it "Config matches" $
\config -> \config ->
let matches = when (config /= defConfigText GitHub) $
[ "Config does not match the expected format." expectationFailure $ toString $ unwords
, "Run" [ "Config does not match the expected format."
, "`stack exec xrefcheck -- dump-config -t GitHub -o tests/configs/github-config.yaml`" , "Run"
, "and verify changes" , "`stack exec xrefcheck -- dump-config -t GitHub -o tests/configs/github-config.yaml`"
] , "and verify changes"
in ]
counterexample
(toString $ unwords matches)
(config == defConfigText GitHub)
describe "`ignoreAuthFailures` working as expected" $ do describe "`ignoreAuthFailures` working as expected" $ do
let config = (cVerification $ defConfig GitHub) { vcCheckLocalhost = True } let config = (cVerification $ defConfig GitHub) { vcCheckLocalhost = True }

View File

@ -1,7 +1,3 @@
# SPDX-FileCopyrightText: 2019-2021 Serokell <https://serokell.io>
#
# SPDX-License-Identifier: Unlicense
# Parameters of repository traversal. # Parameters of repository traversal.
traversal: traversal:
# Files and folders which we pretend do not exist # Files and folders which we pretend do not exist