From 1c05acfccad6c5d53bc797a894a6b0128835fa8d Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sun, 17 Mar 2024 11:02:32 +0700 Subject: [PATCH 1/7] feat: update to spago@next --- bench/bench.dhall | 42 ----------------- bench/spago.yaml | 44 +++++++++++++++++ bench/{ => src}/BenchFile.purs | 0 bench/{ => src}/ParseFile.purs | 0 lib/spago.yaml | 32 +++++++++++++ {src => lib/src}/PureScript/CST.purs | 0 {src => lib/src}/PureScript/CST/Errors.purs | 0 {src => lib/src}/PureScript/CST/Layout.purs | 0 {src => lib/src}/PureScript/CST/Lexer.purs | 0 .../src}/PureScript/CST/ModuleGraph.purs | 0 {src => lib/src}/PureScript/CST/Parser.purs | 0 .../src}/PureScript/CST/Parser/Monad.purs | 0 {src => lib/src}/PureScript/CST/Print.purs | 0 {src => lib/src}/PureScript/CST/Range.purs | 0 .../src}/PureScript/CST/Range/TokenList.purs | 0 .../src}/PureScript/CST/TokenStream.purs | 0 .../src}/PureScript/CST/Traversal.purs | 0 {src => lib/src}/PureScript/CST/Types.purs | 0 {test => lib/test}/Main.purs | 2 +- package.json | 16 +++---- packages.dhall | 5 -- parse-package-set/parse-package-set.dhall | 47 ------------------- parse-package-set/spago.yaml | 45 ++++++++++++++++++ parse-package-set/{ => src}/Main.js | 0 parse-package-set/{ => src}/Main.purs | 38 +++++++++------ spago.dhall | 37 --------------- spago.yaml | 4 ++ 27 files changed, 158 insertions(+), 154 deletions(-) delete mode 100644 bench/bench.dhall create mode 100644 bench/spago.yaml rename bench/{ => src}/BenchFile.purs (100%) rename bench/{ => src}/ParseFile.purs (100%) create mode 100644 lib/spago.yaml rename {src => lib/src}/PureScript/CST.purs (100%) rename {src => lib/src}/PureScript/CST/Errors.purs (100%) rename {src => lib/src}/PureScript/CST/Layout.purs (100%) rename {src => lib/src}/PureScript/CST/Lexer.purs (100%) rename {src => lib/src}/PureScript/CST/ModuleGraph.purs (100%) rename {src => lib/src}/PureScript/CST/Parser.purs (100%) rename {src => lib/src}/PureScript/CST/Parser/Monad.purs (100%) rename {src => lib/src}/PureScript/CST/Print.purs (100%) rename {src => lib/src}/PureScript/CST/Range.purs (100%) rename {src => lib/src}/PureScript/CST/Range/TokenList.purs (100%) rename {src => lib/src}/PureScript/CST/TokenStream.purs (100%) rename {src => lib/src}/PureScript/CST/Traversal.purs (100%) rename {src => lib/src}/PureScript/CST/Types.purs (100%) rename {test => lib/test}/Main.purs (99%) delete mode 100644 packages.dhall delete mode 100644 parse-package-set/parse-package-set.dhall create mode 100644 parse-package-set/spago.yaml rename parse-package-set/{ => src}/Main.js (100%) rename parse-package-set/{ => src}/Main.purs (86%) delete mode 100644 spago.dhall create mode 100644 spago.yaml diff --git a/bench/bench.dhall b/bench/bench.dhall deleted file mode 100644 index 78eec12..0000000 --- a/bench/bench.dhall +++ /dev/null @@ -1,42 +0,0 @@ -let conf = ../spago.dhall - -in conf // { - sources = [ "src/**/*.purs", "bench/**/*.purs" ], - dependencies = - [ "aff" - , "arrays" - , "console" - , "const" - , "control" - , "effect" - , "either" - , "enums" - , "foldable-traversable" - , "free" - , "functions" - , "functors" - , "identity" - , "integers" - , "lazy" - , "lists" - , "maybe" - , "minibench" - , "newtype" - , "node-buffer" - , "node-fs-aff" - , "node-process" - , "numbers" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "st" - , "strings" - , "strings" - , "transformers" - , "tuples" - , "typelevel-prelude" - , "unfoldable" - , "unsafe-coerce" - ] -} diff --git a/bench/spago.yaml b/bench/spago.yaml new file mode 100644 index 0000000..5007049 --- /dev/null +++ b/bench/spago.yaml @@ -0,0 +1,44 @@ +package: + name: bench + dependencies: + - minibench + - aff + - arrays + - avar + - console + - const + - control + - datetime + - effect + - either + - enums + - exceptions + - filterable + - foldable-traversable + - free + - functions + - functors + - identity + - integers + - lazy + - lists + - maybe + - newtype + - node-buffer + - node-child-process + - node-fs + - node-path + - numbers + - numbers + - ordered-collections + - parallel + - partial + - prelude + - st + - strings + - transformers + - tuples + - typelevel-prelude + - unfoldable + - unsafe-coerce + - language-cst-parser diff --git a/bench/BenchFile.purs b/bench/src/BenchFile.purs similarity index 100% rename from bench/BenchFile.purs rename to bench/src/BenchFile.purs diff --git a/bench/ParseFile.purs b/bench/src/ParseFile.purs similarity index 100% rename from bench/ParseFile.purs rename to bench/src/ParseFile.purs diff --git a/lib/spago.yaml b/lib/spago.yaml new file mode 100644 index 0000000..e576c54 --- /dev/null +++ b/lib/spago.yaml @@ -0,0 +1,32 @@ +package: + name: language-cst-parser + dependencies: + - arrays + - console + - const + - control + - effect + - either + - enums + - foldable-traversable + - free + - functions + - functors + - identity + - integers + - lazy + - lists + - maybe + - newtype + - node-process + - numbers + - ordered-collections + - partial + - prelude + - st + - strings + - transformers + - tuples + - typelevel-prelude + - unfoldable + - unsafe-coerce diff --git a/src/PureScript/CST.purs b/lib/src/PureScript/CST.purs similarity index 100% rename from src/PureScript/CST.purs rename to lib/src/PureScript/CST.purs diff --git a/src/PureScript/CST/Errors.purs b/lib/src/PureScript/CST/Errors.purs similarity index 100% rename from src/PureScript/CST/Errors.purs rename to lib/src/PureScript/CST/Errors.purs diff --git a/src/PureScript/CST/Layout.purs b/lib/src/PureScript/CST/Layout.purs similarity index 100% rename from src/PureScript/CST/Layout.purs rename to lib/src/PureScript/CST/Layout.purs diff --git a/src/PureScript/CST/Lexer.purs b/lib/src/PureScript/CST/Lexer.purs similarity index 100% rename from src/PureScript/CST/Lexer.purs rename to lib/src/PureScript/CST/Lexer.purs diff --git a/src/PureScript/CST/ModuleGraph.purs b/lib/src/PureScript/CST/ModuleGraph.purs similarity index 100% rename from src/PureScript/CST/ModuleGraph.purs rename to lib/src/PureScript/CST/ModuleGraph.purs diff --git a/src/PureScript/CST/Parser.purs b/lib/src/PureScript/CST/Parser.purs similarity index 100% rename from src/PureScript/CST/Parser.purs rename to lib/src/PureScript/CST/Parser.purs diff --git a/src/PureScript/CST/Parser/Monad.purs b/lib/src/PureScript/CST/Parser/Monad.purs similarity index 100% rename from src/PureScript/CST/Parser/Monad.purs rename to lib/src/PureScript/CST/Parser/Monad.purs diff --git a/src/PureScript/CST/Print.purs b/lib/src/PureScript/CST/Print.purs similarity index 100% rename from src/PureScript/CST/Print.purs rename to lib/src/PureScript/CST/Print.purs diff --git a/src/PureScript/CST/Range.purs b/lib/src/PureScript/CST/Range.purs similarity index 100% rename from src/PureScript/CST/Range.purs rename to lib/src/PureScript/CST/Range.purs diff --git a/src/PureScript/CST/Range/TokenList.purs b/lib/src/PureScript/CST/Range/TokenList.purs similarity index 100% rename from src/PureScript/CST/Range/TokenList.purs rename to lib/src/PureScript/CST/Range/TokenList.purs diff --git a/src/PureScript/CST/TokenStream.purs b/lib/src/PureScript/CST/TokenStream.purs similarity index 100% rename from src/PureScript/CST/TokenStream.purs rename to lib/src/PureScript/CST/TokenStream.purs diff --git a/src/PureScript/CST/Traversal.purs b/lib/src/PureScript/CST/Traversal.purs similarity index 100% rename from src/PureScript/CST/Traversal.purs rename to lib/src/PureScript/CST/Traversal.purs diff --git a/src/PureScript/CST/Types.purs b/lib/src/PureScript/CST/Types.purs similarity index 100% rename from src/PureScript/CST/Types.purs rename to lib/src/PureScript/CST/Types.purs diff --git a/test/Main.purs b/lib/test/Main.purs similarity index 99% rename from test/Main.purs rename to lib/test/Main.purs index aecf7e8..f1a0e76 100644 --- a/test/Main.purs +++ b/lib/test/Main.purs @@ -44,7 +44,7 @@ assertParse name src k = do let res = parseFor (trim src) unless (k res) do Console.error $ "Assertion failed: " <> name - Process.exit 1 + Process.exit' 1 where trim = String.split (Pattern "\n") diff --git a/package.json b/package.json index eb2a5e5..a3ad04a 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { "private": true, "scripts": { - "parse-package-set": "spago -x parse-package-set/parse-package-set.dhall run", - "bench-file": "spago -x bench/bench.dhall build && node --expose-gc --input-type=\"module\" -e \"import { main } from './output/BenchFile/index.js';main()\"", - "parse-file": "spago -x bench/bench.dhall build && node --input-type=\"module\" -e \"import { main } from './output/ParseFile/index.js';main()\" --", - "format": "purs-tidy format-in-place src test bench parse-package-set", - "check": "purs-tidy check src test bench parse-package-set" + "parse-package-set": "spago run --package parse-package-set", + "bench-file": "spago build --package bench && node --expose-gc --input-type=\"module\" -e \"import { main } from './output/BenchFile/index.js';main()\"", + "parse-file": "spago build --package bench && node --input-type=\"module\" -e \"import { main } from './output/ParseFile/index.js';main()\"", + "format": "purs-tidy format-in-place lib bench parse-package-set", + "check": "purs-tidy check lib bench parse-package-set" }, "devDependencies": { - "purescript": "^0.15.0", - "purs-tidy": "^0.10.0", - "spago": "^0.21.0" + "purescript": "^0.15.15", + "purs-tidy": "^0.11.0", + "spago": "next" } } diff --git a/packages.dhall b/packages.dhall deleted file mode 100644 index 41eca28..0000000 --- a/packages.dhall +++ /dev/null @@ -1,5 +0,0 @@ -let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.15.7-20230401/packages.dhall - sha256:d385eeee6ca160c32d7389a1f4f4ee6a05aff95e81373cdc50670b436efa1060 - -in upstream diff --git a/parse-package-set/parse-package-set.dhall b/parse-package-set/parse-package-set.dhall deleted file mode 100644 index 24a1470..0000000 --- a/parse-package-set/parse-package-set.dhall +++ /dev/null @@ -1,47 +0,0 @@ -let conf = ../spago.dhall - -in conf // { - sources = [ "src/**/*.purs", "parse-package-set/**/*.purs" ], - dependencies = - [ "aff" - , "arrays" - , "avar" - , "console" - , "const" - , "control" - , "datetime" - , "effect" - , "either" - , "enums" - , "exceptions" - , "filterable" - , "foldable-traversable" - , "free" - , "functions" - , "functors" - , "identity" - , "integers" - , "lazy" - , "lists" - , "maybe" - , "newtype" - , "node-buffer" - , "node-child-process" - , "node-fs" - , "node-fs-aff" - , "node-path" - , "numbers" - , "numbers" - , "ordered-collections" - , "parallel" - , "partial" - , "prelude" - , "st" - , "strings" - , "transformers" - , "tuples" - , "typelevel-prelude" - , "unfoldable" - , "unsafe-coerce" - ] -} diff --git a/parse-package-set/spago.yaml b/parse-package-set/spago.yaml new file mode 100644 index 0000000..94210c5 --- /dev/null +++ b/parse-package-set/spago.yaml @@ -0,0 +1,45 @@ +package: + name: parse-package-set + dependencies: + - aff + - arrays + - avar + - console + - const + - control + - datetime + - effect + - either + - enums + - exceptions + - filterable + - foldable-traversable + - free + - functions + - functors + - identity + - integers + - lazy + - lists + - maybe + - newtype + - node-buffer + - node-child-process + - node-fs + - node-path + - argonaut-codecs + - argonaut-core + - numbers + - numbers + - ordered-collections + - parallel + - partial + - prelude + - st + - strings + - transformers + - tuples + - typelevel-prelude + - unfoldable + - unsafe-coerce + - language-cst-parser diff --git a/parse-package-set/Main.js b/parse-package-set/src/Main.js similarity index 100% rename from parse-package-set/Main.js rename to parse-package-set/src/Main.js diff --git a/parse-package-set/Main.purs b/parse-package-set/src/Main.purs similarity index 86% rename from parse-package-set/Main.purs rename to parse-package-set/src/Main.purs index 6bd2ec9..1e98327 100644 --- a/parse-package-set/Main.purs +++ b/parse-package-set/src/Main.purs @@ -22,7 +22,7 @@ import Data.String.Regex.Unsafe (unsafeRegex) import Data.Time.Duration (Milliseconds(..)) import Effect (Effect) import Effect.AVar as EffectAVar -import Effect.Aff (Aff, runAff_) +import Effect.Aff (Aff, runAff_, throwError, error) import Effect.Aff.AVar as AVar import Effect.Class (liftEffect) import Effect.Console as Console @@ -38,6 +38,11 @@ import PureScript.CST.Errors (printParseError) import PureScript.CST.Parser.Monad (PositionedError) import PureScript.CST.Types (Module(..), ModuleHeader) import PureScript.CST.ModuleGraph (sortModules, ModuleSort(..)) +import Data.Argonaut.Core (Json) +import Data.Argonaut.Decode as Data.Argonaut.Decode +import Data.Argonaut.Decode (JsonDecodeError) +import Foreign.Object (Object) +import Foreign.Object as Foreign.Object foreign import tmpdir :: String -> Effect String @@ -49,13 +54,16 @@ main :: Effect Unit main = runAff_ (either throwException mempty) do tmpPath <- liftEffect $ tmpdir "cst-integration-" - writeTextFile UTF8 (tmpPath <> "/spago.dhall") defaultSpagoDhall + liftEffect $ Console.log $ "Making new project in " <> tmpPath - let execOpts = Exec.defaultExecSyncOptions { cwd = Just tmpPath } - s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync "spago ls packages" execOpts - let lines = Str.split (Str.Pattern "\n") s - let packages = Str.joinWith " " (String.takeWhile (_ /= ' ') <$> lines) - _ <- liftEffect $ Exec.execSync ("spago install " <> packages) execOpts + writeTextFile UTF8 (tmpPath <> "/spago.yaml") defaultSpagoYaml + + let execOptsFn execSyncOptions = execSyncOptions { cwd = Just tmpPath } + s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync' "spago ls packages --json" execOptsFn + let (objectOrError :: Either JsonDecodeError (Object Json)) = Data.Argonaut.Decode.decodeJson =<< Data.Argonaut.Decode.parseJson s + (object :: Object Json) <- either (throwError <<< error <<< Data.Argonaut.Decode.printJsonDecodeError) pure objectOrError + let (packages :: Array String) = Foreign.Object.keys object + _ <- liftEffect $ Exec.execSync' ("spago install " <> Str.joinWith " " packages) execOptsFn pursFiles <- getPursFiles 0 (tmpPath <> "/.spago") @@ -154,13 +162,15 @@ main = runAff_ (either throwException mempty) do [ "Error: cycle detected in module graph" ] -defaultSpagoDhall :: String -defaultSpagoDhall = Array.intercalate "\n" - [ "{ name = \"test-parser\"" - , ", dependencies = [] : List Text" - , ", packages = https://github.com/purescript/package-sets/releases/download/psc-0.15.7-20230401/packages.dhall sha256:d385eeee6ca160c32d7389a1f4f4ee6a05aff95e81373cdc50670b436efa1060" - , ", sources = [] : List Text" - , "}" +defaultSpagoYaml :: String +defaultSpagoYaml = Array.intercalate "\n" + [ "package:" + , " name: test-parser" + , " dependencies: []" + , "workspace:" + , " package_set:" + , " registry: 50.4.0" + , " extra_packages: {}" ] getPursFiles :: Int -> FilePath -> Aff (Array FilePath) diff --git a/spago.dhall b/spago.dhall deleted file mode 100644 index 6e14541..0000000 --- a/spago.dhall +++ /dev/null @@ -1,37 +0,0 @@ -{ name = "language-cst-parser" -, license = "MIT" -, repository = "https://github.com/natefaubion/purescript-language-cst-parser.git" -, dependencies = - [ "arrays" - , "console" - , "const" - , "control" - , "effect" - , "either" - , "enums" - , "foldable-traversable" - , "free" - , "functions" - , "functors" - , "identity" - , "integers" - , "lazy" - , "lists" - , "maybe" - , "newtype" - , "node-process" - , "numbers" - , "ordered-collections" - , "partial" - , "prelude" - , "st" - , "strings" - , "transformers" - , "tuples" - , "typelevel-prelude" - , "unfoldable" - , "unsafe-coerce" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/Main.purs" ] -} diff --git a/spago.yaml b/spago.yaml new file mode 100644 index 0000000..f9158bd --- /dev/null +++ b/spago.yaml @@ -0,0 +1,4 @@ +workspace: + package_set: + registry: 50.4.0 + extra_packages: {} From 1fefb31de9a4a52326ad13c28d9123105c2dfdbf Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sun, 17 Mar 2024 12:52:26 +0700 Subject: [PATCH 2/7] feat: tests -> add --pedantic-packages --- .github/workflows/ci.yml | 2 +- bench/spago.yaml | 34 +++------------------------------- lib/spago.yaml | 9 ++++++--- parse-package-set/spago.yaml | 26 ++++---------------------- 4 files changed, 14 insertions(+), 57 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8542370..c322a4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: run: spago build --purs-args '--censor-lib --strict' - name: Run tests - run: spago test + run: spago test --pedantic-packages - name: Check formatting run: npm run check diff --git a/bench/spago.yaml b/bench/spago.yaml index 5007049..8452c27 100644 --- a/bench/spago.yaml +++ b/bench/spago.yaml @@ -1,44 +1,16 @@ package: name: bench dependencies: - - minibench - aff - arrays - - avar - console - - const - - control - - datetime - effect - either - - enums - - exceptions - - filterable - foldable-traversable - - free - - functions - - functors - - identity - - integers - - lazy - - lists + - language-cst-parser - maybe - - newtype + - minibench - node-buffer - - node-child-process - node-fs - - node-path - - numbers - - numbers - - ordered-collections - - parallel - - partial + - node-process - prelude - - st - - strings - - transformers - - tuples - - typelevel-prelude - - unfoldable - - unsafe-coerce - - language-cst-parser diff --git a/lib/spago.yaml b/lib/spago.yaml index e576c54..a2ef357 100644 --- a/lib/spago.yaml +++ b/lib/spago.yaml @@ -2,10 +2,8 @@ package: name: language-cst-parser dependencies: - arrays - - console - const - control - - effect - either - enums - foldable-traversable @@ -18,7 +16,6 @@ package: - lists - maybe - newtype - - node-process - numbers - ordered-collections - partial @@ -30,3 +27,9 @@ package: - typelevel-prelude - unfoldable - unsafe-coerce + test: + main: Test.Main + dependencies: + - console + - effect + - node-process diff --git a/parse-package-set/spago.yaml b/parse-package-set/spago.yaml index 94210c5..87cf1a8 100644 --- a/parse-package-set/spago.yaml +++ b/parse-package-set/spago.yaml @@ -2,44 +2,26 @@ package: name: parse-package-set dependencies: - aff + - argonaut-codecs + - argonaut-core - arrays - avar - console - - const - - control - datetime - effect - either - - enums - exceptions - filterable - foldable-traversable - - free - - functions - - functors - - identity - - integers - - lazy - - lists + - foreign-object + - language-cst-parser - maybe - newtype - node-buffer - node-child-process - node-fs - node-path - - argonaut-codecs - - argonaut-core - - numbers - numbers - - ordered-collections - parallel - - partial - prelude - - st - strings - - transformers - - tuples - - typelevel-prelude - - unfoldable - - unsafe-coerce - - language-cst-parser From 37a878a0c4f0ae942f8e1e63c76ced14cd7c0992 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sun, 17 Mar 2024 14:00:24 +0700 Subject: [PATCH 3/7] feat: tests -> use latest spago --- .github/workflows/ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c322a4c..c55fc67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,11 +12,12 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: purescript-contrib/setup-purescript@main + # - uses: purescript-contrib/setup-purescript@main + - uses: srghma/setup-purescript@main with: - purescript: "0.15.8" - spago: "0.20.9" - psa: "0.8.2" + purescript: "latest" + spago: "latest" + psa: "latest" purs-tidy: "latest" - name: Cache PureScript dependencies From c56d1f462f9eca156f705f2a6a89b2f7519f1252 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sun, 17 Mar 2024 20:41:09 +0700 Subject: [PATCH 4/7] refactor: use _ --- parse-package-set/src/Main.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parse-package-set/src/Main.purs b/parse-package-set/src/Main.purs index 1e98327..4c62f99 100644 --- a/parse-package-set/src/Main.purs +++ b/parse-package-set/src/Main.purs @@ -58,7 +58,7 @@ main = runAff_ (either throwException mempty) do writeTextFile UTF8 (tmpPath <> "/spago.yaml") defaultSpagoYaml - let execOptsFn execSyncOptions = execSyncOptions { cwd = Just tmpPath } + let execOptsFn = _ { cwd = Just tmpPath } s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync' "spago ls packages --json" execOptsFn let (objectOrError :: Either JsonDecodeError (Object Json)) = Data.Argonaut.Decode.decodeJson =<< Data.Argonaut.Decode.parseJson s (object :: Object Json) <- either (throwError <<< error <<< Data.Argonaut.Decode.printJsonDecodeError) pure objectOrError From 2f3c92bd2a6e3c2da733fbb799cbf79b26d699b2 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Mon, 18 Mar 2024 08:10:36 +0700 Subject: [PATCH 5/7] Update parse-package-set/src/Main.purs Co-authored-by: Nathan Faubion --- parse-package-set/src/Main.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/parse-package-set/src/Main.purs b/parse-package-set/src/Main.purs index 4c62f99..fc4e2b0 100644 --- a/parse-package-set/src/Main.purs +++ b/parse-package-set/src/Main.purs @@ -60,9 +60,9 @@ main = runAff_ (either throwException mempty) do let execOptsFn = _ { cwd = Just tmpPath } s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync' "spago ls packages --json" execOptsFn - let (objectOrError :: Either JsonDecodeError (Object Json)) = Data.Argonaut.Decode.decodeJson =<< Data.Argonaut.Decode.parseJson s - (object :: Object Json) <- either (throwError <<< error <<< Data.Argonaut.Decode.printJsonDecodeError) pure objectOrError - let (packages :: Array String) = Foreign.Object.keys object +packages <- case decodeJson =<< parseJson s of + Left err -> throwError $ error $ printJsonDecodeError err + Right obj -> pure $ Object.keys obj _ <- liftEffect $ Exec.execSync' ("spago install " <> Str.joinWith " " packages) execOptsFn pursFiles <- getPursFiles 0 (tmpPath <> "/.spago") From 52e9edc86482f526ba4cd01a57a8bda581cd57ca Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Mon, 18 Mar 2024 08:15:31 +0700 Subject: [PATCH 6/7] fix: Update parse-package-set/src/Main.purs as natefaubion suggested --- parse-package-set/src/Main.purs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/parse-package-set/src/Main.purs b/parse-package-set/src/Main.purs index fc4e2b0..f78bb8c 100644 --- a/parse-package-set/src/Main.purs +++ b/parse-package-set/src/Main.purs @@ -39,10 +39,9 @@ import PureScript.CST.Parser.Monad (PositionedError) import PureScript.CST.Types (Module(..), ModuleHeader) import PureScript.CST.ModuleGraph (sortModules, ModuleSort(..)) import Data.Argonaut.Core (Json) -import Data.Argonaut.Decode as Data.Argonaut.Decode -import Data.Argonaut.Decode (JsonDecodeError) +import Data.Argonaut.Decode (parseJson, decodeJson, printJsonDecodeError) import Foreign.Object (Object) -import Foreign.Object as Foreign.Object +import Foreign.Object as Object foreign import tmpdir :: String -> Effect String @@ -60,9 +59,9 @@ main = runAff_ (either throwException mempty) do let execOptsFn = _ { cwd = Just tmpPath } s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync' "spago ls packages --json" execOptsFn -packages <- case decodeJson =<< parseJson s of - Left err -> throwError $ error $ printJsonDecodeError err - Right obj -> pure $ Object.keys obj + packages <- case decodeJson =<< parseJson s of + Left err -> throwError $ error $ printJsonDecodeError err + Right (object :: Object Json) -> pure $ Object.keys object _ <- liftEffect $ Exec.execSync' ("spago install " <> Str.joinWith " " packages) execOptsFn pursFiles <- getPursFiles 0 (tmpPath <> "/.spago") From dbac5f38188ebaf112dc26e02ea162c0b31e0597 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Mon, 18 Mar 2024 08:16:22 +0700 Subject: [PATCH 7/7] fix: Update parse-package-set/src/Main.purs as natefaubion suggested -> I see you updated this to a section, but maybe just inline it? --- parse-package-set/src/Main.purs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/parse-package-set/src/Main.purs b/parse-package-set/src/Main.purs index f78bb8c..4b30f87 100644 --- a/parse-package-set/src/Main.purs +++ b/parse-package-set/src/Main.purs @@ -57,12 +57,11 @@ main = runAff_ (either throwException mempty) do writeTextFile UTF8 (tmpPath <> "/spago.yaml") defaultSpagoYaml - let execOptsFn = _ { cwd = Just tmpPath } - s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync' "spago ls packages --json" execOptsFn + s <- liftEffect $ Buffer.toString UTF8 =<< Exec.execSync' "spago ls packages --json" (_ { cwd = Just tmpPath }) packages <- case decodeJson =<< parseJson s of Left err -> throwError $ error $ printJsonDecodeError err Right (object :: Object Json) -> pure $ Object.keys object - _ <- liftEffect $ Exec.execSync' ("spago install " <> Str.joinWith " " packages) execOptsFn + _ <- liftEffect $ Exec.execSync' ("spago install " <> Str.joinWith " " packages) (_ { cwd = Just tmpPath }) pursFiles <- getPursFiles 0 (tmpPath <> "/.spago")