From ca22c7db13cc352b25c0a2eaa412ac9cf2a75e17 Mon Sep 17 00:00:00 2001 From: Harry Garrood Date: Sat, 11 Apr 2020 22:33:10 +0100 Subject: [PATCH] Use spago for managing the server package set This gives us an easy way of depending on the entire package set at once, so that any package in the set can be used in Try PS. --- README.md | 5 +- staging/.gitignore | 1 + staging/packages.dhall | 8 + staging/psc-package.json | 53 ------ staging/spago.dhall | 340 +++++++++++++++++++++++++++++++++++++++ staging/update.sh | 40 +++++ 6 files changed, 391 insertions(+), 56 deletions(-) create mode 100644 staging/.gitignore create mode 100644 staging/packages.dhall delete mode 100644 staging/psc-package.json create mode 100644 staging/spago.dhall create mode 100755 staging/update.sh diff --git a/README.md b/README.md index f72657f3..2077296f 100644 --- a/README.md +++ b/README.md @@ -64,10 +64,9 @@ stack build # Install PureScript dependencies cd staging -psc-package install +spago install -# note: globs like **/src/** do not work -stack exec trypurescript 8081 ".psc-package/psc-0.13.6-*/*/*/src/**/*.purs" "src/*.purs" +stack exec trypurescript 8081 $(spago sources) # should output that is is compiling the sources (first time) # then: Setting phasers to stun... (port 8081) (ctrl-c to quit) ``` diff --git a/staging/.gitignore b/staging/.gitignore new file mode 100644 index 00000000..c6cff108 --- /dev/null +++ b/staging/.gitignore @@ -0,0 +1 @@ +.spago/ diff --git a/staging/packages.dhall b/staging/packages.dhall new file mode 100644 index 00000000..83881b1b --- /dev/null +++ b/staging/packages.dhall @@ -0,0 +1,8 @@ +let upstream = + https://github.com/purescript/package-sets/releases/download/psc-0.13.6-20200404/packages.dhall sha256:f239f2e215d0cbd5c203307701748581938f74c4c78f4aeffa32c11c131ef7b6 + +let overrides = {=} + +let additions = {=} + +in upstream // overrides // additions diff --git a/staging/psc-package.json b/staging/psc-package.json deleted file mode 100644 index 816e6be9..00000000 --- a/staging/psc-package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "core", - "set": "psc-0.13.6-20200127", - "source": "https://github.com/purescript/package-sets.git", - "depends": [ - "arrays", - "bifunctors", - "console", - "const", - "contravariant", - "control", - "distributive", - "effect", - "either", - "enums", - "exceptions", - "exists", - "foldable-traversable", - "foreign", - "foreign-object", - "free", - "functions", - "functors", - "generics-rep", - "globals", - "identity", - "integers", - "lazy", - "math", - "maybe", - "ordered-collections", - "prelude", - "profunctor", - "proxy", - "quickcheck", - "random", - "react", - "react-dom", - "record", - "refs", - "semirings", - "st", - "strings", - "tailrec", - "transformers", - "tuples", - "typelevel-prelude", - "unfoldable", - "validation", - "web-dom", - "web-html" - ] -} diff --git a/staging/spago.dhall b/staging/spago.dhall new file mode 100644 index 00000000..1c288104 --- /dev/null +++ b/staging/spago.dhall @@ -0,0 +1,340 @@ +{ name = "try-purescript-server" +, dependencies = + [ "aff" + , "aff-bus" + , "aff-coroutines" + , "aff-promise" + , "aff-retry" + , "affjax" + , "ansi" + , "argonaut" + , "argonaut-codecs" + , "argonaut-core" + , "argonaut-generic" + , "argonaut-traversals" + , "array-views" + , "arraybuffer" + , "arraybuffer-types" + , "arrays" + , "assert" + , "avar" + , "b64" + , "basic-auth" + , "behaviors" + , "bifunctors" + , "bigints" + , "biscotti-cookie" + , "biscotti-session" + , "bower-json" + , "bucketchain" + , "bucketchain-basic-auth" + , "bucketchain-conditional" + , "bucketchain-cors" + , "bucketchain-csrf" + , "bucketchain-header-utils" + , "bucketchain-health" + , "bucketchain-history-api-fallback" + , "bucketchain-logger" + , "bucketchain-secure" + , "bucketchain-simple-api" + , "bucketchain-sslify" + , "bucketchain-static" + , "bytestrings" + , "call-by-name" + , "canvas" + , "cartesian" + , "catenable-lists" + , "checked-exceptions" + , "cheerio" + , "chirashi" + , "choco-pie" + , "colors" + , "concur-core" + , "concur-react" + , "console" + , "const" + , "contravariant" + , "control" + , "coroutines" + , "crypto" + , "css" + , "cssom" + , "data-algebrae" + , "datetime" + , "debug" + , "decimals" + , "distributive" + , "dom-filereader" + , "dom-indexed" + , "dotenv" + , "drawing" + , "effect" + , "either" + , "email-validate" + , "encoding" + , "enums" + , "errors" + , "event" + , "exceptions" + , "exists" + , "exitcodes" + , "expect-inferred" + , "express" + , "filterable" + , "fixed-points" + , "flare" + , "float32" + , "flow-id" + , "foldable-traversable" + , "folds" + , "foreign" + , "foreign-generic" + , "foreign-object" + , "fork" + , "form-urlencoded" + , "format" + , "format-nix" + , "formatters" + , "free" + , "freeap" + , "freedom" + , "freedom-now" + , "freedom-portal" + , "freedom-router" + , "freedom-transition" + , "freedom-virtualized" + , "freedom-window-resize" + , "freet" + , "functions" + , "functors" + , "fuzzy" + , "gen" + , "generics-rep" + , "globals" + , "gomtang-basic" + , "group" + , "halogen" + , "halogen-bootstrap" + , "halogen-bootstrap4" + , "halogen-css" + , "halogen-formless" + , "halogen-hooks" + , "halogen-select" + , "halogen-storybook" + , "halogen-vdom" + , "heterogeneous" + , "higher-order" + , "html-parser-halogen" + , "http-methods" + , "httpure" + , "httpure-contrib-biscotti" + , "hyper" + , "hypertrout" + , "identity" + , "identy" + , "indexed-monad" + , "int-53" + , "integers" + , "interpolate" + , "invariant" + , "jajanmen" + , "jquery" + , "js-date" + , "js-timers" + , "json-pointer" + , "json-schema" + , "jwt" + , "kancho" + , "kishimen" + , "lazy" + , "lcg" + , "leibniz" + , "lenient-html-parser" + , "lists" + , "logging" + , "logging-journald" + , "machines" + , "makkori" + , "math" + , "matrices" + , "maybe" + , "media-types" + , "memoize" + , "milkis" + , "minibench" + , "mmorph" + , "monad-logger" + , "monad-loops" + , "money" + , "motsunabe" + , "mysql" + , "naporitan" + , "naturals" + , "newtype" + , "node-buffer" + , "node-child-process" + , "node-electron" + , "node-fs" + , "node-fs-aff" + , "node-he" + , "node-http" + , "node-net" + , "node-path" + , "node-postgres" + , "node-process" + , "node-readline" + , "node-sqlite3" + , "node-streams" + , "node-telegram-bot-api" + , "node-url" + , "nodemailer" + , "nodetrout" + , "nonempty" + , "now" + , "nullable" + , "numbers" + , "options" + , "optparse" + , "ordered-collections" + , "orders" + , "pairing" + , "pairs" + , "parallel" + , "parsing" + , "partial" + , "pathy" + , "phoenix" + , "pipes" + , "pointed-list" + , "polyform" + , "polyform-validators" + , "posix-types" + , "precise-datetime" + , "prelude" + , "prettier" + , "profunctor" + , "profunctor-lenses" + , "promises" + , "proxy" + , "proxying" + , "psa-utils" + , "psc-ide" + , "psci-support" + , "quantities" + , "querydsl" + , "queue" + , "quickcheck" + , "quickcheck-laws" + , "quotient" + , "radox" + , "random" + , "rationals" + , "rave" + , "react" + , "react-basic" + , "react-basic-hooks" + , "react-basic-native" + , "react-dom" + , "react-radox" + , "react-stylesheet" + , "read" + , "record" + , "record-extra" + , "record-format" + , "redis-client" + , "redis-hotqueue" + , "redux-devtools" + , "refined" + , "refs" + , "remotedata" + , "result" + , "ring-modules" + , "routing" + , "routing-duplex" + , "run" + , "run-profunctor-lenses" + , "run-streaming" + , "safely" + , "search-trie" + , "selection-foldable" + , "semirings" + , "server-sent-events" + , "shoronpo" + , "signal" + , "sijidou" + , "simple-emitter" + , "simple-i18n" + , "simple-json" + , "simple-json-generics" + , "simple-json-utils" + , "simple-jwt" + , "simple-timestamp" + , "sized-matrices" + , "sized-vectors" + , "slug" + , "smolder" + , "snabbdom" + , "sodium" + , "spec" + , "spec-discovery" + , "spec-quickcheck" + , "spork" + , "st" + , "string-parsers" + , "strings" + , "strings-extra" + , "stringutils" + , "strongcheck" + , "struct" + , "stylesheet" + , "subcategory" + , "suggest" + , "sunde" + , "svg-parser" + , "svg-parser-halogen" + , "systemd-journald" + , "tailrec" + , "test-unit" + , "these" + , "tolerant-argonaut" + , "toppokki" + , "tortellini" + , "transformers" + , "trout" + , "trout-client" + , "tuples" + , "type-equality" + , "type-isequal" + , "typedenv" + , "typelevel" + , "typelevel-peano" + , "typelevel-prelude" + , "uint" + , "undefinable" + , "undefined" + , "unfoldable" + , "unicode" + , "unordered-collections" + , "unsafe-coerce" + , "unsafe-reference" + , "uri" + , "uuid" + , "validation" + , "variant" + , "vectorfield" + , "web-clipboard" + , "web-dom" + , "web-events" + , "web-file" + , "web-html" + , "web-socket" + , "web-storage" + , "web-touchevents" + , "web-uievents" + , "web-xhr" + , "xiaomian" + , "yargs" + ] +, packages = ./packages.dhall +, sources = [ "src/**/*.purs" ] +} diff --git a/staging/update.sh b/staging/update.sh new file mode 100755 index 00000000..0786c7b4 --- /dev/null +++ b/staging/update.sh @@ -0,0 +1,40 @@ +#! /usr/bin/env bash + +# Given a package-set ID such as "psc-0.13.6-20200402", this script generates a +# `packages.dhall` and a `spago.dhall` file so that every package in the given +# set is listed in the 'dependencies' key of spago.dhall. This means that users +# of the compile server can use any package from the package set. +# +# To update to a new package set, simply rerun the script and check in the +# updated `spago.dhall` and `packages.dhall`. + +package_set="$1" + +if [ "$package_set" = "" ]; then + echo >&2 "error: expected a package set name" + exit 1 +fi + +echo "Creating a project which depends on the entire package set $package_set..." + +cat >packages.dhall <spago.dhall <