From a5c682c30dc6dd72e69fd9d5a472fdbd9c3a6bbd Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sat, 5 Oct 2024 20:50:59 +0700 Subject: [PATCH 1/6] feat: parse Either + spago.yaml --- bower.json | 34 -- packages.dhall | 4 - spago.dhall | 26 - spago.lock | 1185 +++++++++++++++++++++++++++++++++++++++++ spago.yaml | 38 ++ src/Pathy.purs | 2 +- src/Pathy/Parser.purs | 22 +- 7 files changed, 1245 insertions(+), 66 deletions(-) delete mode 100644 bower.json delete mode 100644 packages.dhall delete mode 100644 spago.dhall create mode 100644 spago.lock create mode 100644 spago.yaml diff --git a/bower.json b/bower.json deleted file mode 100644 index f19359b..0000000 --- a/bower.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "purescript-pathy", - "homepage": "https://github.com/slamdata/purescript-pathy", - "description": "A type-safe abstraction for platform-independent file paths", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "https://github.com/purescript-contrib/purescript-pathy.git" - }, - "ignore": [ - "**/.*", - "bower_components", - "node_modules", - "output", - "test", - "bower.json", - "package.json" - ], - "dependencies": { - "purescript-console": "^6.0.0", - "purescript-exceptions": "^6.0.0", - "purescript-lists": "^7.0.0", - "purescript-partial": "^4.0.0", - "purescript-profunctor": "^6.0.0", - "purescript-strings": "^6.0.0", - "purescript-transformers": "^6.0.0", - "purescript-typelevel-prelude": "^7.0.0", - "purescript-unsafe-coerce": "^6.0.0" - }, - "devDependencies": { - "purescript-effect": "^4.0.0", - "purescript-quickcheck": "^8.0.1" - } -} diff --git a/packages.dhall b/packages.dhall deleted file mode 100644 index 582d6d3..0000000 --- a/packages.dhall +++ /dev/null @@ -1,4 +0,0 @@ -let upstream = - https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall - -in upstream diff --git a/spago.dhall b/spago.dhall deleted file mode 100644 index 9564682..0000000 --- a/spago.dhall +++ /dev/null @@ -1,26 +0,0 @@ -{ name = "pathy" -, dependencies = - [ "arrays" - , "console" - , "effect" - , "either" - , "exceptions" - , "foldable-traversable" - , "gen" - , "identity" - , "lists" - , "maybe" - , "newtype" - , "nonempty" - , "partial" - , "prelude" - , "quickcheck" - , "strings" - , "tailrec" - , "tuples" - , "typelevel-prelude" - , "unsafe-coerce" - ] -, packages = ./packages.dhall -, sources = [ "src/**/*.purs", "test/**/*.purs" ] -} diff --git a/spago.lock b/spago.lock new file mode 100644 index 0000000..a7df860 --- /dev/null +++ b/spago.lock @@ -0,0 +1,1185 @@ +{ + "workspace": { + "packages": { + "pathy": { + "path": "./", + "core": { + "dependencies": [ + "arrays", + "console", + "effect", + "either", + "exceptions", + "foldable-traversable", + "gen", + "identity", + "lists", + "maybe", + "newtype", + "nonempty", + "partial", + "prelude", + "quickcheck", + "strings", + "tailrec", + "tuples", + "typelevel-prelude", + "unsafe-coerce" + ], + "build_plan": [ + "arrays", + "bifunctors", + "console", + "const", + "contravariant", + "control", + "distributive", + "effect", + "either", + "enums", + "exceptions", + "exists", + "foldable-traversable", + "functions", + "functors", + "gen", + "identity", + "integers", + "invariant", + "lazy", + "lcg", + "lists", + "maybe", + "newtype", + "nonempty", + "numbers", + "orders", + "partial", + "prelude", + "profunctor", + "quickcheck", + "random", + "record", + "refs", + "safe-coerce", + "st", + "strings", + "tailrec", + "transformers", + "tuples", + "type-equality", + "typelevel-prelude", + "unfoldable", + "unsafe-coerce" + ] + }, + "test": { + "dependencies": [ + "effect", + "quickcheck" + ], + "build_plan": [ + "arrays", + "bifunctors", + "console", + "const", + "contravariant", + "control", + "distributive", + "effect", + "either", + "enums", + "exceptions", + "exists", + "foldable-traversable", + "functions", + "functors", + "gen", + "identity", + "integers", + "invariant", + "lazy", + "lcg", + "lists", + "maybe", + "newtype", + "nonempty", + "numbers", + "orders", + "partial", + "prelude", + "profunctor", + "quickcheck", + "random", + "record", + "refs", + "safe-coerce", + "st", + "strings", + "tailrec", + "transformers", + "tuples", + "type-equality", + "unfoldable", + "unsafe-coerce" + ] + } + } + }, + "package_set": { + "address": { + "registry": "60.3.0" + }, + "compiler": ">=0.15.15 <0.16.0", + "content": { + "abc-parser": "2.0.1", + "ace": "9.1.0", + "address-rfc2821": "0.1.1", + "aff": "8.0.0", + "aff-bus": "6.0.0", + "aff-coroutines": "9.0.0", + "aff-promise": "4.0.0", + "aff-retry": "2.0.0", + "affjax": "13.0.0", + "affjax-node": "1.0.0", + "affjax-web": "1.0.0", + "ansi": "7.0.0", + "apexcharts": "0.5.0", + "applicative-phases": "1.0.0", + "argonaut": "9.0.0", + "argonaut-aeson-generic": "0.4.1", + "argonaut-codecs": "9.1.0", + "argonaut-core": "7.0.0", + "argonaut-generic": "8.0.0", + "argonaut-traversals": "10.0.0", + "argparse-basic": "2.0.0", + "array-builder": "0.1.2", + "array-search": "0.6.0", + "arraybuffer": "13.2.0", + "arraybuffer-builder": "3.1.0", + "arraybuffer-types": "3.0.2", + "arrays": "7.3.0", + "arrays-extra": "0.6.1", + "arrays-zipper": "2.0.1", + "ask": "1.0.0", + "assert": "6.0.0", + "assert-multiple": "0.4.0", + "avar": "5.0.0", + "b64": "0.0.8", + "barbies": "1.0.1", + "barlow-lens": "0.9.0", + "bifunctors": "6.0.0", + "bigints": "7.0.1", + "bolson": "0.3.9", + "bookhound": "0.1.7", + "bower-json": "3.0.0", + "call-by-name": "4.0.1", + "canvas": "6.0.0", + "canvas-action": "9.0.0", + "cartesian": "1.0.6", + "catenable-lists": "7.0.0", + "cbor-stream": "1.3.0", + "chameleon": "1.0.0", + "chameleon-halogen": "1.0.3", + "chameleon-react-basic": "1.1.0", + "chameleon-styled": "2.5.0", + "chameleon-transformers": "1.0.0", + "channel": "1.0.0", + "checked-exceptions": "3.1.1", + "choku": "1.0.1", + "classless": "0.1.1", + "classless-arbitrary": "0.1.1", + "classless-decode-json": "0.1.1", + "classless-encode-json": "0.1.3", + "classnames": "2.0.0", + "codec": "6.1.0", + "codec-argonaut": "10.0.0", + "codec-json": "2.0.0", + "colors": "7.0.1", + "concur-core": "0.5.0", + "concur-react": "0.5.0", + "concurrent-queues": "3.0.0", + "console": "6.1.0", + "const": "6.0.0", + "contravariant": "6.0.0", + "control": "6.0.0", + "convertable-options": "1.0.0", + "coroutines": "7.0.0", + "css": "6.0.0", + "css-frameworks": "1.0.1", + "csv-stream": "2.3.0", + "data-mvc": "0.0.2", + "datetime": "6.1.0", + "datetime-parsing": "0.2.0", + "debounce": "0.1.0", + "debug": "6.0.2", + "decimals": "7.1.0", + "default-values": "1.0.1", + "deku": "0.9.23", + "deno": "0.0.5", + "dissect": "1.0.0", + "distributive": "6.0.0", + "dom-filereader": "7.0.0", + "dom-indexed": "12.0.0", + "dom-simple": "0.4.0", + "dotenv": "4.0.3", + "droplet": "0.6.0", + "dts": "1.0.0", + "dual-numbers": "1.0.3", + "dynamic-buffer": "3.0.1", + "echarts-simple": "0.0.1", + "effect": "4.0.0", + "either": "6.1.0", + "elmish": "0.13.0", + "elmish-enzyme": "0.1.1", + "elmish-hooks": "0.10.3", + "elmish-html": "0.9.0", + "elmish-testing-library": "0.3.2", + "email-validate": "7.0.0", + "encoding": "0.0.9", + "enums": "6.0.1", + "env-names": "0.4.0", + "error": "2.0.0", + "eta-conversion": "0.3.2", + "exceptions": "6.1.0", + "exists": "6.0.0", + "exitcodes": "4.0.0", + "expect-inferred": "3.0.0", + "ezfetch": "1.0.0", + "fahrtwind": "2.0.0", + "fallback": "0.1.0", + "fast-vect": "1.2.0", + "fetch": "4.1.0", + "fetch-argonaut": "1.0.1", + "fetch-core": "5.1.0", + "fetch-yoga-json": "1.1.0", + "ffi-simple": "0.5.1", + "fft-js": "0.1.0", + "filterable": "5.0.0", + "fix-functor": "0.1.0", + "fixed-points": "7.0.0", + "fixed-precision": "5.0.0", + "flame": "1.3.0", + "float32": "2.0.0", + "fmt": "0.2.1", + "foldable-traversable": "6.0.0", + "foldable-traversable-extra": "0.0.6", + "foreign": "7.0.0", + "foreign-object": "4.1.0", + "foreign-readwrite": "3.4.0", + "forgetmenot": "0.1.0", + "fork": "6.0.0", + "form-urlencoded": "7.0.0", + "formatters": "7.0.0", + "framer-motion": "1.0.1", + "free": "7.1.0", + "freeap": "7.0.0", + "freer-free": "0.0.1", + "freet": "7.0.0", + "functions": "6.0.0", + "functor1": "3.0.0", + "functors": "5.0.0", + "fuzzy": "0.4.0", + "gen": "4.0.0", + "generate-values": "1.0.1", + "generic-router": "0.0.1", + "geojson": "0.0.5", + "geometria": "2.2.0", + "gojs": "0.1.1", + "grain": "3.0.0", + "grain-router": "3.0.0", + "grain-virtualized": "3.0.0", + "graphs": "8.1.0", + "group": "4.1.1", + "halogen": "7.0.0", + "halogen-bootstrap5": "5.3.2", + "halogen-canvas": "1.0.0", + "halogen-css": "10.0.0", + "halogen-echarts-simple": "0.0.4", + "halogen-formless": "4.0.3", + "halogen-helix": "1.0.1", + "halogen-hooks": "0.6.3", + "halogen-hooks-extra": "0.9.0", + "halogen-infinite-scroll": "1.1.0", + "halogen-store": "0.5.4", + "halogen-storybook": "2.0.0", + "halogen-subscriptions": "2.0.0", + "halogen-svg-elems": "8.0.0", + "halogen-typewriter": "1.0.4", + "halogen-vdom": "8.0.0", + "halogen-vdom-string-renderer": "0.5.0", + "halogen-xterm": "2.0.0", + "heckin": "2.0.1", + "heterogeneous": "0.6.0", + "homogeneous": "0.4.0", + "http-methods": "6.0.0", + "httpurple": "4.0.0", + "huffman": "0.4.0", + "humdrum": "0.0.1", + "hyrule": "2.3.8", + "identity": "6.0.0", + "identy": "4.0.1", + "indexed-db": "1.0.0", + "indexed-monad": "3.0.0", + "int64": "3.0.0", + "integers": "6.0.0", + "interpolate": "5.0.2", + "intersection-observer": "1.0.1", + "invariant": "6.0.0", + "jarilo": "1.0.1", + "jelly": "0.10.0", + "jelly-router": "0.3.0", + "jelly-signal": "0.4.0", + "jest": "1.0.0", + "js-abort-controller": "1.0.0", + "js-bigints": "2.2.1", + "js-date": "8.0.0", + "js-fetch": "0.2.1", + "js-fileio": "3.0.0", + "js-intl": "1.0.4", + "js-iterators": "0.1.1", + "js-maps": "0.1.2", + "js-promise": "1.0.0", + "js-promise-aff": "1.0.0", + "js-timers": "6.1.0", + "js-uri": "3.1.0", + "json": "1.1.0", + "json-codecs": "5.0.0", + "justifill": "0.5.0", + "jwt": "0.0.9", + "labeled-data": "0.2.0", + "language-cst-parser": "0.14.0", + "lazy": "6.0.0", + "lazy-joe": "1.0.0", + "lcg": "4.0.0", + "leibniz": "5.0.0", + "leveldb": "1.0.1", + "liminal": "1.0.1", + "linalg": "6.0.0", + "lists": "7.0.0", + "literals": "1.0.2", + "logging": "3.0.0", + "logging-journald": "0.4.0", + "lumi-components": "18.0.0", + "machines": "7.0.0", + "maps-eager": "0.5.0", + "marionette": "1.0.0", + "marionette-react-basic-hooks": "0.1.1", + "marked": "0.1.0", + "matrices": "5.0.1", + "matryoshka": "1.0.0", + "maybe": "6.0.0", + "media-types": "6.0.0", + "meowclient": "1.0.0", + "midi": "4.0.0", + "milkis": "9.0.0", + "minibench": "4.0.1", + "mmorph": "7.0.0", + "monad-control": "5.0.0", + "monad-logger": "1.3.1", + "monad-loops": "0.5.0", + "monad-unlift": "1.0.1", + "monoid-extras": "0.0.1", + "monoidal": "0.16.0", + "morello": "0.4.0", + "mote": "3.0.0", + "motsunabe": "2.0.0", + "mvc": "0.0.1", + "mysql": "6.0.1", + "n3": "0.1.0", + "nano-id": "1.1.0", + "nanoid": "0.1.0", + "naturals": "3.0.0", + "nested-functor": "0.2.1", + "newtype": "5.0.0", + "nextjs": "0.1.1", + "nextui": "0.2.0", + "node-buffer": "9.0.0", + "node-child-process": "11.1.0", + "node-event-emitter": "3.0.0", + "node-execa": "5.0.0", + "node-fs": "9.2.0", + "node-glob-basic": "1.3.0", + "node-http": "9.1.0", + "node-http2": "1.1.1", + "node-human-signals": "1.0.0", + "node-net": "5.1.0", + "node-os": "5.1.0", + "node-path": "5.0.0", + "node-process": "11.2.0", + "node-readline": "8.1.1", + "node-sqlite3": "8.0.0", + "node-stream-pipes": "2.1.6", + "node-streams": "9.0.0", + "node-tls": "0.3.1", + "node-url": "7.0.1", + "node-zlib": "0.4.0", + "nonempty": "7.0.0", + "now": "6.0.0", + "npm-package-json": "2.0.0", + "nullable": "6.0.0", + "numberfield": "0.2.2", + "numbers": "9.0.1", + "oak": "3.1.1", + "oak-debug": "1.2.2", + "object-maps": "0.3.0", + "ocarina": "1.5.4", + "oooooooooorrrrrrrmm-lib": "0.0.1", + "open-colors-scales-and-schemes": "1.0.0", + "open-folds": "6.4.0", + "open-foreign-generic": "11.0.3", + "open-memoize": "6.2.0", + "open-mkdirp-aff": "1.2.0", + "open-pairing": "6.2.0", + "open-smolder": "12.0.2", + "options": "7.0.0", + "optparse": "5.0.1", + "ordered-collections": "3.2.0", + "ordered-set": "0.4.0", + "orders": "6.0.0", + "owoify": "1.2.0", + "pairs": "9.0.1", + "parallel": "7.0.0", + "parsing": "10.2.0", + "parsing-dataview": "3.2.4", + "partial": "4.0.0", + "pathy": "9.0.0", + "pha": "0.13.0", + "phaser": "0.7.0", + "phylio": "1.1.2", + "pipes": "8.0.0", + "pirates-charm": "0.0.1", + "pmock": "0.9.0", + "point-free": "1.0.0", + "pointed-list": "0.5.1", + "polymorphic-vectors": "4.0.0", + "posix-types": "6.0.0", + "postgresql": "2.0.19", + "precise": "6.0.0", + "precise-datetime": "7.0.0", + "prelude": "6.0.1", + "prettier-printer": "3.0.0", + "priority-queue": "0.1.2", + "profunctor": "6.0.1", + "profunctor-lenses": "8.0.0", + "protobuf": "4.3.0", + "psa-utils": "8.0.0", + "psci-support": "6.0.0", + "punycode": "1.0.0", + "qualified-do": "2.2.0", + "quantities": "12.2.0", + "quickcheck": "8.0.1", + "quickcheck-combinators": "0.1.3", + "quickcheck-laws": "7.0.0", + "quickcheck-utf8": "0.0.0", + "random": "6.0.0", + "rationals": "6.0.0", + "rdf": "0.1.0", + "react": "11.0.0", + "react-aria": "0.2.0", + "react-basic": "17.0.0", + "react-basic-classic": "3.0.0", + "react-basic-dnd": "10.1.0", + "react-basic-dom": "6.1.0", + "react-basic-dom-beta": "0.1.1", + "react-basic-emotion": "7.1.0", + "react-basic-hooks": "8.2.0", + "react-basic-storybook": "2.0.0", + "react-dom": "8.0.0", + "react-halo": "3.0.0", + "react-icons": "1.1.5", + "react-markdown": "0.1.0", + "react-testing-library": "4.0.1", + "react-virtuoso": "1.0.0", + "reactix": "0.6.1", + "read": "1.0.1", + "recharts": "1.1.0", + "record": "4.0.0", + "record-extra": "5.0.1", + "record-ptional-fields": "0.1.2", + "record-studio": "1.0.4", + "refs": "6.0.0", + "remotedata": "5.0.1", + "repr": "0.5.0", + "resize-observer": "1.0.0", + "resource": "2.0.1", + "resourcet": "1.0.0", + "result": "1.0.3", + "return": "0.2.0", + "ring-modules": "5.0.1", + "rito": "0.3.4", + "roman": "0.4.0", + "rough-notation": "1.0.2", + "routing": "11.0.0", + "routing-duplex": "0.7.0", + "run": "5.0.0", + "safe-coerce": "2.0.0", + "safely": "4.0.1", + "school-of-music": "1.3.0", + "selection-foldable": "0.2.0", + "selective-functors": "1.0.1", + "semirings": "7.0.0", + "signal": "13.0.0", + "simple-emitter": "3.0.1", + "simple-i18n": "2.0.1", + "simple-json": "9.0.0", + "simple-json-generics": "0.2.1", + "simple-ulid": "3.0.0", + "sized-matrices": "1.0.0", + "sized-vectors": "5.0.2", + "slug": "3.1.0", + "small-ffi": "4.0.1", + "soundfonts": "4.1.0", + "sparse-matrices": "2.0.1", + "sparse-polynomials": "3.0.1", + "spec": "8.0.0", + "spec-discovery": "8.3.0", + "spec-mocha": "5.1.1", + "spec-node": "0.0.2", + "spec-quickcheck": "5.0.2", + "spec-reporter-xunit": "0.7.1", + "splitmix": "2.1.0", + "ssrs": "1.0.0", + "st": "6.2.0", + "statistics": "0.3.2", + "strictlypositiveint": "1.0.1", + "string-parsers": "8.0.0", + "strings": "6.0.1", + "strings-extra": "4.0.0", + "stringutils": "0.0.12", + "substitute": "0.2.3", + "supply": "0.2.0", + "svg-parser": "3.0.0", + "systemd-journald": "0.3.0", + "tagged": "4.0.2", + "tailrec": "6.1.0", + "tecton": "0.2.1", + "tecton-halogen": "0.2.0", + "test-unit": "17.0.0", + "thermite": "6.3.1", + "thermite-dom": "0.3.1", + "these": "6.0.0", + "threading": "0.0.3", + "tldr": "0.0.0", + "toestand": "0.9.0", + "transformation-matrix": "1.0.1", + "transformers": "6.1.0", + "tree-rose": "4.0.2", + "ts-bridge": "4.0.0", + "tuples": "7.0.0", + "two-or-more": "1.0.0", + "type-equality": "4.0.1", + "typedenv": "2.0.1", + "typelevel": "6.0.0", + "typelevel-lists": "2.1.0", + "typelevel-peano": "1.0.1", + "typelevel-prelude": "7.0.0", + "typelevel-regex": "0.0.3", + "typelevel-rows": "0.1.0", + "typisch": "0.4.0", + "uint": "7.0.0", + "ulid": "3.0.1", + "uncurried-transformers": "1.1.0", + "undefined": "2.0.0", + "undefined-is-not-a-problem": "1.1.0", + "unfoldable": "6.0.0", + "unicode": "6.0.0", + "unique": "0.6.1", + "unlift": "1.0.1", + "unordered-collections": "3.1.0", + "unsafe-coerce": "6.0.0", + "unsafe-reference": "5.0.0", + "untagged-to-tagged": "0.1.4", + "untagged-union": "1.0.0", + "uri": "9.0.0", + "url-immutable": "1.0.0", + "uuid": "9.0.0", + "uuidv4": "1.0.0", + "validation": "6.0.0", + "variant": "8.0.0", + "variant-encodings": "2.0.0", + "vectorfield": "1.0.1", + "vectors": "2.1.0", + "versions": "7.0.0", + "visx": "0.0.2", + "web-clipboard": "6.0.0", + "web-cssom": "2.0.0", + "web-cssom-view": "0.1.0", + "web-dom": "6.0.0", + "web-dom-parser": "8.0.0", + "web-dom-xpath": "3.0.0", + "web-encoding": "3.0.0", + "web-events": "4.0.0", + "web-fetch": "4.0.1", + "web-file": "4.0.0", + "web-geometry": "0.1.0", + "web-html": "4.1.0", + "web-pointerevents": "2.0.0", + "web-proletarian": "1.0.0", + "web-promise": "3.2.0", + "web-resize-observer": "2.1.0", + "web-router": "1.0.0", + "web-socket": "4.0.0", + "web-storage": "5.0.0", + "web-streams": "4.0.0", + "web-touchevents": "4.0.0", + "web-uievents": "5.0.0", + "web-url": "2.0.0", + "web-workers": "1.1.0", + "web-xhr": "5.0.1", + "webextension-polyfill": "0.1.0", + "webgpu": "0.0.1", + "which": "2.0.0", + "xterm": "1.0.0", + "yoga-fetch": "1.0.1", + "yoga-json": "5.1.0", + "yoga-om": "0.1.0", + "yoga-postgres": "6.0.0", + "yoga-tree": "1.0.0", + "z3": "0.0.2", + "zipperarray": "2.0.0" + } + }, + "extra_packages": {} + }, + "packages": { + "arrays": { + "type": "registry", + "version": "7.3.0", + "integrity": "sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc=", + "dependencies": [ + "bifunctors", + "control", + "foldable-traversable", + "functions", + "maybe", + "nonempty", + "partial", + "prelude", + "safe-coerce", + "st", + "tailrec", + "tuples", + "unfoldable", + "unsafe-coerce" + ] + }, + "bifunctors": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=", + "dependencies": [ + "const", + "either", + "newtype", + "prelude", + "tuples" + ] + }, + "console": { + "type": "registry", + "version": "6.1.0", + "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", + "dependencies": [ + "effect", + "prelude" + ] + }, + "const": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=", + "dependencies": [ + "invariant", + "newtype", + "prelude" + ] + }, + "contravariant": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=", + "dependencies": [ + "const", + "either", + "newtype", + "prelude", + "tuples" + ] + }, + "control": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=", + "dependencies": [ + "newtype", + "prelude" + ] + }, + "distributive": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=", + "dependencies": [ + "identity", + "newtype", + "prelude", + "tuples", + "type-equality" + ] + }, + "effect": { + "type": "registry", + "version": "4.0.0", + "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", + "dependencies": [ + "prelude" + ] + }, + "either": { + "type": "registry", + "version": "6.1.0", + "integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=", + "dependencies": [ + "control", + "invariant", + "maybe", + "prelude" + ] + }, + "enums": { + "type": "registry", + "version": "6.0.1", + "integrity": "sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8=", + "dependencies": [ + "control", + "either", + "gen", + "maybe", + "newtype", + "nonempty", + "partial", + "prelude", + "tuples", + "unfoldable" + ] + }, + "exceptions": { + "type": "registry", + "version": "6.1.0", + "integrity": "sha256-K0T89IHtF3vBY7eSAO7eDOqSb2J9kZGAcDN5+IKsF8E=", + "dependencies": [ + "effect", + "either", + "maybe", + "prelude" + ] + }, + "exists": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=", + "dependencies": [ + "unsafe-coerce" + ] + }, + "foldable-traversable": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=", + "dependencies": [ + "bifunctors", + "const", + "control", + "either", + "functors", + "identity", + "maybe", + "newtype", + "orders", + "prelude", + "tuples" + ] + }, + "functions": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=", + "dependencies": [ + "prelude" + ] + }, + "functors": { + "type": "registry", + "version": "5.0.0", + "integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=", + "dependencies": [ + "bifunctors", + "const", + "contravariant", + "control", + "distributive", + "either", + "invariant", + "maybe", + "newtype", + "prelude", + "profunctor", + "tuples", + "unsafe-coerce" + ] + }, + "gen": { + "type": "registry", + "version": "4.0.0", + "integrity": "sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI=", + "dependencies": [ + "either", + "foldable-traversable", + "identity", + "maybe", + "newtype", + "nonempty", + "prelude", + "tailrec", + "tuples", + "unfoldable" + ] + }, + "identity": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=", + "dependencies": [ + "control", + "invariant", + "newtype", + "prelude" + ] + }, + "integers": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=", + "dependencies": [ + "maybe", + "numbers", + "prelude" + ] + }, + "invariant": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=", + "dependencies": [ + "control", + "prelude" + ] + }, + "lazy": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU=", + "dependencies": [ + "control", + "foldable-traversable", + "invariant", + "prelude" + ] + }, + "lcg": { + "type": "registry", + "version": "4.0.0", + "integrity": "sha256-h7ME5cthLfbgJOJdsZcSfFpwXsx4rf8YmhebU+3iSYg=", + "dependencies": [ + "effect", + "integers", + "maybe", + "partial", + "prelude", + "random" + ] + }, + "lists": { + "type": "registry", + "version": "7.0.0", + "integrity": "sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI=", + "dependencies": [ + "bifunctors", + "control", + "foldable-traversable", + "lazy", + "maybe", + "newtype", + "nonempty", + "partial", + "prelude", + "tailrec", + "tuples", + "unfoldable" + ] + }, + "maybe": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=", + "dependencies": [ + "control", + "invariant", + "newtype", + "prelude" + ] + }, + "newtype": { + "type": "registry", + "version": "5.0.0", + "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=", + "dependencies": [ + "prelude", + "safe-coerce" + ] + }, + "nonempty": { + "type": "registry", + "version": "7.0.0", + "integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=", + "dependencies": [ + "control", + "foldable-traversable", + "maybe", + "prelude", + "tuples", + "unfoldable" + ] + }, + "numbers": { + "type": "registry", + "version": "9.0.1", + "integrity": "sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=", + "dependencies": [ + "functions", + "maybe" + ] + }, + "orders": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=", + "dependencies": [ + "newtype", + "prelude" + ] + }, + "partial": { + "type": "registry", + "version": "4.0.0", + "integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=", + "dependencies": [] + }, + "prelude": { + "type": "registry", + "version": "6.0.1", + "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", + "dependencies": [] + }, + "profunctor": { + "type": "registry", + "version": "6.0.1", + "integrity": "sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk=", + "dependencies": [ + "control", + "distributive", + "either", + "exists", + "invariant", + "newtype", + "prelude", + "tuples" + ] + }, + "quickcheck": { + "type": "registry", + "version": "8.0.1", + "integrity": "sha256-ZvpccKQCvgslTXZCNmpYW4bUsFzhZd/kQUr2WmxFTGY=", + "dependencies": [ + "arrays", + "console", + "control", + "effect", + "either", + "enums", + "exceptions", + "foldable-traversable", + "gen", + "identity", + "integers", + "lazy", + "lcg", + "lists", + "maybe", + "newtype", + "nonempty", + "numbers", + "partial", + "prelude", + "record", + "st", + "strings", + "tailrec", + "transformers", + "tuples", + "unfoldable" + ] + }, + "random": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-CJ611a35MPCE7XQMp0rdC6MCn76znlhisiCRgboAG+Q=", + "dependencies": [ + "effect", + "integers" + ] + }, + "record": { + "type": "registry", + "version": "4.0.0", + "integrity": "sha256-Za5U85bTRJEfGK5Sk4hM41oXy84YQI0I8TL3WUn1Qzg=", + "dependencies": [ + "functions", + "prelude", + "unsafe-coerce" + ] + }, + "refs": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=", + "dependencies": [ + "effect", + "prelude" + ] + }, + "safe-coerce": { + "type": "registry", + "version": "2.0.0", + "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=", + "dependencies": [ + "unsafe-coerce" + ] + }, + "st": { + "type": "registry", + "version": "6.2.0", + "integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=", + "dependencies": [ + "partial", + "prelude", + "tailrec", + "unsafe-coerce" + ] + }, + "strings": { + "type": "registry", + "version": "6.0.1", + "integrity": "sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k=", + "dependencies": [ + "arrays", + "control", + "either", + "enums", + "foldable-traversable", + "gen", + "integers", + "maybe", + "newtype", + "nonempty", + "partial", + "prelude", + "tailrec", + "tuples", + "unfoldable", + "unsafe-coerce" + ] + }, + "tailrec": { + "type": "registry", + "version": "6.1.0", + "integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=", + "dependencies": [ + "bifunctors", + "effect", + "either", + "identity", + "maybe", + "partial", + "prelude", + "refs" + ] + }, + "transformers": { + "type": "registry", + "version": "6.1.0", + "integrity": "sha256-3Bm+Z6tsC/paG888XkywDngJ2JMos+JfOhRlkVfb7gI=", + "dependencies": [ + "control", + "distributive", + "effect", + "either", + "exceptions", + "foldable-traversable", + "identity", + "lazy", + "maybe", + "newtype", + "prelude", + "st", + "tailrec", + "tuples", + "unfoldable" + ] + }, + "tuples": { + "type": "registry", + "version": "7.0.0", + "integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=", + "dependencies": [ + "control", + "invariant", + "prelude" + ] + }, + "type-equality": { + "type": "registry", + "version": "4.0.1", + "integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=", + "dependencies": [] + }, + "typelevel-prelude": { + "type": "registry", + "version": "7.0.0", + "integrity": "sha256-uFF2ph+vHcQpfPuPf2a3ukJDFmLhApmkpTMviHIWgJM=", + "dependencies": [ + "prelude", + "type-equality" + ] + }, + "unfoldable": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=", + "dependencies": [ + "foldable-traversable", + "maybe", + "partial", + "prelude", + "tuples" + ] + }, + "unsafe-coerce": { + "type": "registry", + "version": "6.0.0", + "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", + "dependencies": [] + } + } +} diff --git a/spago.yaml b/spago.yaml new file mode 100644 index 0000000..b66d0d0 --- /dev/null +++ b/spago.yaml @@ -0,0 +1,38 @@ +package: + name: pathy + publish: + license: Apache-2.0 + version: 1.0.0 + location: + githubOwner: purescript-contrib + githubRepo: purescript-pathy + dependencies: + - arrays + - console + - effect + - either + - exceptions + - foldable-traversable + - gen + - identity + - lists + - maybe + - newtype + - nonempty + - partial + - prelude + - quickcheck + - strings + - tailrec + - tuples + - typelevel-prelude + - unsafe-coerce + test: + main: Test.Main + dependencies: + - effect + - quickcheck +workspace: + packageSet: + registry: 60.3.0 + extraPackages: {} diff --git a/src/Pathy.purs b/src/Pathy.purs index b77393e..8acb8c0 100644 --- a/src/Pathy.purs +++ b/src/Pathy.purs @@ -10,6 +10,6 @@ module Pathy import Pathy.Path (AbsDir, AbsFile, AbsPath, AnyPath, AnyDir, AnyFile, Path, RelDir, RelFile, RelPath, appendPath, currentDir, dir, dir', extendPath, file, file', in', fileName, foldPath, name, parentAppend, parentOf, peel, peelFile, refine, relativeTo, rename, renameTraverse, rootDir, setExtension, (<..>), (<.>), ()) import Pathy.Name (Name(..), joinName, splitName, alterExtension, extension) import Pathy.Printer (Escaper(..), Printer, debugPrintPath, posixPrinter, printPath, unsafePrintPath, windowsPrinter) -import Pathy.Parser (Parser(..), parseAbsDir, parseAbsFile, parsePath, parseRelDir, parseRelFile, posixParser) +import Pathy.Parser (Parser(..), posixParser, parsePath, parseRelFile, parseAbsFile, parseRelDir, parseAbsDir, parseAnyDir, parseAnyFile, parseAbsPath, parseRelPath) import Pathy.Phantom (class IsDirOrFile, class IsRelOrAbs, Abs, Dir, File, Rel, foldRelOrAbs, onRelOrAbs, foldDirOrFile, onDirOrFile) import Pathy.Sandboxed (SandboxedPath, sandbox, sandboxAny, sandboxRoot, unsandbox) diff --git a/src/Pathy/Parser.purs b/src/Pathy/Parser.purs index fb4b395..98e9d13 100644 --- a/src/Pathy/Parser.purs +++ b/src/Pathy/Parser.purs @@ -6,6 +6,10 @@ module Pathy.Parser , parseAbsFile , parseRelDir , parseAbsDir + , parseAnyDir + , parseAnyFile + , parseAbsPath + , parseRelPath ) where import Prelude @@ -22,7 +26,7 @@ import Data.String.NonEmpty (NonEmptyString) import Data.String.NonEmpty as NES import Data.String.Pattern (Pattern(..)) as S import Pathy.Name (Name(..)) -import Pathy.Path (AbsDir, AbsFile, Path, RelDir, RelFile, currentDir, extendPath, parentOf, rootDir) +import Pathy.Path (AbsDir, AbsFile, AnyDir, AnyFile, Path, RelDir, RelFile, RelPath, AbsPath, currentDir, extendPath, parentOf, rootDir) import Pathy.Phantom (class IsRelOrAbs, Dir) newtype Parser = Parser @@ -111,3 +115,19 @@ parseRelDir p = parsePath p Just (const Nothing) (const Nothing) (const Nothing) -- | Attempts to parse an absolute directory. parseAbsDir :: Parser -> String -> Maybe AbsDir parseAbsDir p = parsePath p (const Nothing) Just (const Nothing) (const Nothing) Nothing + +-- | Attempts to parse an absolute or relative directory. +parseAnyDir :: Parser -> String -> Maybe AnyDir +parseAnyDir p = parsePath p (Just <<< Right) (Just <<< Left) (const Nothing) (const Nothing) Nothing + +-- | Attempts to parse an absolute or relative directory. +parseAnyFile :: Parser -> String -> Maybe AnyFile +parseAnyFile p = parsePath p (const Nothing) (const Nothing) (Just <<< Right) (Just <<< Left) Nothing + +-- | Attempts to parse an relative directory or file. +parseRelPath :: Parser -> String -> Maybe RelPath +parseRelPath p = parsePath p (Just <<< Left) (const Nothing) (Just <<< Right) (const Nothing) Nothing + +-- | Attempts to parse an absolute directory or file. +parseAbsPath :: Parser -> String -> Maybe AbsPath +parseAbsPath p = parsePath p (const Nothing) (Just <<< Left) (const Nothing) (Just <<< Right) Nothing From 8c419553bba5e14b3f4bbb48cdc2c9c1e11f9aea Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sun, 6 Oct 2024 18:18:25 +0700 Subject: [PATCH 2/6] fix: rm -rdf output && spago test --censor-stats --pedantic-packages -- --censor-codes=UserDefinedWarning --- spago.lock | 13 ++----------- spago.yaml | 6 ++---- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/spago.lock b/spago.lock index a7df860..53dedba 100644 --- a/spago.lock +++ b/spago.lock @@ -6,10 +6,7 @@ "core": { "dependencies": [ "arrays", - "console", - "effect", "either", - "exceptions", "foldable-traversable", "gen", "identity", @@ -19,7 +16,6 @@ "nonempty", "partial", "prelude", - "quickcheck", "strings", "tailrec", "tuples", @@ -29,7 +25,6 @@ "build_plan": [ "arrays", "bifunctors", - "console", "const", "contravariant", "control", @@ -37,7 +32,6 @@ "effect", "either", "enums", - "exceptions", "exists", "foldable-traversable", "functions", @@ -47,7 +41,6 @@ "integers", "invariant", "lazy", - "lcg", "lists", "maybe", "newtype", @@ -57,15 +50,11 @@ "partial", "prelude", "profunctor", - "quickcheck", - "random", - "record", "refs", "safe-coerce", "st", "strings", "tailrec", - "transformers", "tuples", "type-equality", "typelevel-prelude", @@ -75,7 +64,9 @@ }, "test": { "dependencies": [ + "console", "effect", + "exceptions", "quickcheck" ], "build_plan": [ diff --git a/spago.yaml b/spago.yaml index b66d0d0..189c616 100644 --- a/spago.yaml +++ b/spago.yaml @@ -8,10 +8,7 @@ package: githubRepo: purescript-pathy dependencies: - arrays - - console - - effect - either - - exceptions - foldable-traversable - gen - identity @@ -21,7 +18,6 @@ package: - nonempty - partial - prelude - - quickcheck - strings - tailrec - tuples @@ -30,7 +26,9 @@ package: test: main: Test.Main dependencies: + - console - effect + - exceptions - quickcheck workspace: packageSet: From 1aee57ee0f49a0bab0f05cf5d11720bbead65e84 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Sun, 6 Oct 2024 19:58:46 +0700 Subject: [PATCH 3/6] feat: use variant --- CHANGELOG.md | 38 +++++++++++++++++++++++++++++++++ spago.lock | 22 +++++++++++++++++-- spago.yaml | 1 + src/Pathy.purs | 4 ++-- src/Pathy/Gen.purs | 36 +++++++++++++++++++++++-------- src/Pathy/Parser.purs | 36 ++++++++++++++++++------------- src/Pathy/Path.purs | 49 +++++++++++++++++++++++++------------------ 7 files changed, 138 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c67186..b8ac032 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,37 @@ Notable changes to this project are documented in this file. The format is based Breaking changes: +- `Pathy.Gen` + - replaced methods + - genAbsAnyPath -> genAbsAnyPathVariant + - genRelAnyPath -> genRelAnyPathVariant + - added methods + - genAnyDirPathVariant + - genAnyFilePathVariant + - genAnyAnyPathVariant +- `Pathy.Parser` + - replaced methods + - parseAnyDir -> parseAnyDirPathVariant + - parseAnyFile -> parseAnyFilePathVariant + - parseAbsPath -> parseAbsAnyPathVariant + - parseRelPath -> parseRelAnyPathVariant + - added methods + - parseAnyAnyPathVariant +- `Pathy.Path` + - replaced + - RelPath -> RelAnyPathVariant + - AbsPath -> AbsAnyPathVariant + - AnyDir -> AnyDirPathVariant + - AnyFile -> AnyFilePathVariant + - deleted + - `type AnyPath a = Either (Path a Dir) (Path a File)` (no analog, but `AnyPath Rel == RelAnyPathVariant`, `AnyPath Abs == AbsAnyPathVariant`) + - added + - AnyAnyPathVariant + - proxyRelDir + - proxyAbsDir + - proxyRelFile + - proxyAbsFile + New features: Bugfixes: @@ -15,6 +46,7 @@ Other improvements: ## [v9.0.0](https://github.com/purescript-contrib/purescript-pathy/releases/tag/v9.0.0) - 2022-04-27 Breaking changes: + - Update project and deps to PureScript v0.15.0 (#50 by @JordanMartinez) New features: @@ -22,28 +54,34 @@ New features: Bugfixes: Other improvements: + - Added `purs-tidy` formatter (#49 by @thomashoneyman) ## [v8.1.0](https://github.com/purescript-contrib/purescript-pathy/releases/tag/v8.1.0) - 2021-05-06 New features: + - Exported `escape` implemented by @safareli in #33 (#46 by @JordanMartinez) Other improvements: + - Fixed warnings revealed by v0.14.1 PS release (#46 by @JordanMartinez) - Installed missing dependencies used in source code (#46 by @JordanMartinez) ## [v8.0.0](https://github.com/purescript-contrib/purescript-pathy/releases/tag/v8.0.0) - 2021-02-26 Breaking changes: + - Added support for PureScript 0.14 and dropped support for all previous versions (#42) New features: + - Added roles declarations to forbid unsafe coercions (#43) Bugfixes: Other improvements: + - Changed default branch to `main` from `master` - Updated to comply with Contributors library guidelines by adding new issue and pull request templates, updating documentation, and migrating to Spago for local development and CI (#41) diff --git a/spago.lock b/spago.lock index 53dedba..57a20e9 100644 --- a/spago.lock +++ b/spago.lock @@ -20,7 +20,8 @@ "tailrec", "tuples", "typelevel-prelude", - "unsafe-coerce" + "unsafe-coerce", + "variant" ], "build_plan": [ "arrays", @@ -50,6 +51,7 @@ "partial", "prelude", "profunctor", + "record", "refs", "safe-coerce", "st", @@ -59,7 +61,8 @@ "type-equality", "typelevel-prelude", "unfoldable", - "unsafe-coerce" + "unsafe-coerce", + "variant" ] }, "test": { @@ -1171,6 +1174,21 @@ "version": "6.0.0", "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", "dependencies": [] + }, + "variant": { + "type": "registry", + "version": "8.0.0", + "integrity": "sha256-SR//zQDg2dnbB8ZHslcxieUkCeNlbMToapvmh9onTtw=", + "dependencies": [ + "enums", + "lists", + "maybe", + "partial", + "prelude", + "record", + "tuples", + "unsafe-coerce" + ] } } } diff --git a/spago.yaml b/spago.yaml index 189c616..2d1c27c 100644 --- a/spago.yaml +++ b/spago.yaml @@ -23,6 +23,7 @@ package: - tuples - typelevel-prelude - unsafe-coerce + - variant test: main: Test.Main dependencies: diff --git a/src/Pathy.purs b/src/Pathy.purs index 8acb8c0..bd6203e 100644 --- a/src/Pathy.purs +++ b/src/Pathy.purs @@ -7,9 +7,9 @@ module Pathy , module Pathy.Sandboxed ) where -import Pathy.Path (AbsDir, AbsFile, AbsPath, AnyPath, AnyDir, AnyFile, Path, RelDir, RelFile, RelPath, appendPath, currentDir, dir, dir', extendPath, file, file', in', fileName, foldPath, name, parentAppend, parentOf, peel, peelFile, refine, relativeTo, rename, renameTraverse, rootDir, setExtension, (<..>), (<.>), ()) +import Pathy.Path (AbsAnyPathVariant, AbsDir, AbsFile, AnyAnyPathVariant, AnyDirPathVariant, AnyFilePathVariant, Path, RelAnyPathVariant, RelDir, RelFile, appendPath, currentDir, dir, dir', extendPath, file, file', fileName, foldPath, in', name, parentAppend, parentOf, peel, peelFile, proxyAbsDir, proxyAbsFile, proxyRelDir, proxyRelFile, refine, relativeTo, rename, renameTraverse, rootDir, setExtension, (<..>), (<.>), ()) import Pathy.Name (Name(..), joinName, splitName, alterExtension, extension) import Pathy.Printer (Escaper(..), Printer, debugPrintPath, posixPrinter, printPath, unsafePrintPath, windowsPrinter) -import Pathy.Parser (Parser(..), posixParser, parsePath, parseRelFile, parseAbsFile, parseRelDir, parseAbsDir, parseAnyDir, parseAnyFile, parseAbsPath, parseRelPath) +import Pathy.Parser (Parser(..), parseAbsAnyPathVariant, parseAbsDir, parseAbsFile, parseAnyAnyPathVariant, parseAnyDirPathVariant, parseAnyFilePathVariant, parsePath, parseRelAnyPathVariant, parseRelDir, parseRelFile, posixParser) import Pathy.Phantom (class IsDirOrFile, class IsRelOrAbs, Abs, Dir, File, Rel, foldRelOrAbs, onRelOrAbs, foldDirOrFile, onDirOrFile) import Pathy.Sandboxed (SandboxedPath, sandbox, sandboxAny, sandboxRoot, unsandbox) diff --git a/src/Pathy/Gen.purs b/src/Pathy/Gen.purs index 9e5ac07..6bc8999 100644 --- a/src/Pathy/Gen.purs +++ b/src/Pathy/Gen.purs @@ -1,28 +1,32 @@ module Pathy.Gen ( genAbsDirPath , genAbsFilePath - , genAbsAnyPath , genRelDirPath , genRelFilePath - , genRelAnyPath + , genAnyDirPathVariant + , genAnyFilePathVariant + , genAbsAnyPathVariant + , genRelAnyPathVariant + , genAnyAnyPathVariant , genName , genDirName , genFileName ) where +import Pathy.Path (AbsAnyPathVariant, AbsDir, AbsFile, AnyAnyPathVariant, AnyDirPathVariant, AnyFilePathVariant, RelAnyPathVariant, RelDir, RelFile, proxyAbsDir, proxyAbsFile, proxyRelDir, proxyRelFile, ()) +import Pathy.Phantom (Dir, File) import Prelude import Control.Monad.Gen (class MonadGen) import Control.Monad.Gen as Gen import Control.Monad.Rec.Class (class MonadRec) import Data.Char.Gen as CG -import Data.Either (Either(..)) import Data.Foldable (foldr) import Data.List as L import Data.NonEmpty ((:|)) import Data.String.Gen as SG import Data.String.NonEmpty.CodeUnits (cons) -import Pathy (AbsDir, AbsFile, AbsPath, Dir, File, RelDir, RelFile, RelPath, ()) +import Data.Variant (inj) import Pathy as P genName :: forall m a. MonadGen m => MonadRec m => m (P.Name a) @@ -49,9 +53,6 @@ genAbsFilePath = do file <- genName pure $ dir P.file' file -genAbsAnyPath :: forall m. MonadGen m => MonadRec m => m AbsPath -genAbsAnyPath = Gen.oneOf $ (Left <$> genAbsDirPath) :| [ Right <$> genAbsFilePath ] - genRelDirPath :: forall m. MonadGen m => MonadRec m => m RelDir genRelDirPath = Gen.sized \size -> do newSize <- Gen.chooseInt 0 size @@ -65,5 +66,22 @@ genRelFilePath = do file <- genName pure $ dir P.file' file -genRelAnyPath :: forall m. MonadGen m => MonadRec m => m RelPath -genRelAnyPath = Gen.oneOf $ (Left <$> genRelDirPath) :| [ Right <$> genRelFilePath ] +genAnyDirPathVariant :: forall m. MonadGen m => MonadRec m => m AnyDirPathVariant +genAnyDirPathVariant = Gen.oneOf $ (inj proxyRelDir <$> genRelDirPath) :| [ inj proxyAbsDir <$> genAbsDirPath ] + +genAnyFilePathVariant :: forall m. MonadGen m => MonadRec m => m AnyFilePathVariant +genAnyFilePathVariant = Gen.oneOf $ (inj proxyRelFile <$> genRelFilePath) :| [ inj proxyAbsFile <$> genAbsFilePath ] + +genRelAnyPathVariant :: forall m. MonadGen m => MonadRec m => m RelAnyPathVariant +genRelAnyPathVariant = Gen.oneOf $ (inj proxyRelDir <$> genRelDirPath) :| [ inj proxyRelFile <$> genRelFilePath ] + +genAbsAnyPathVariant :: forall m. MonadGen m => MonadRec m => m AbsAnyPathVariant +genAbsAnyPathVariant = Gen.oneOf $ (inj proxyAbsDir <$> genAbsDirPath) :| [ inj proxyAbsFile <$> genAbsFilePath ] + +genAnyAnyPathVariant :: forall m. MonadGen m => MonadRec m => m AnyAnyPathVariant +genAnyAnyPathVariant = Gen.oneOf $ + ( inj proxyRelDir <$> genRelDirPath ) :| + [ inj proxyAbsDir <$> genAbsDirPath + , inj proxyRelFile <$> genRelFilePath + , inj proxyAbsFile <$> genAbsFilePath + ] diff --git a/src/Pathy/Parser.purs b/src/Pathy/Parser.purs index 98e9d13..8b4f894 100644 --- a/src/Pathy/Parser.purs +++ b/src/Pathy/Parser.purs @@ -6,12 +6,14 @@ module Pathy.Parser , parseAbsFile , parseRelDir , parseAbsDir - , parseAnyDir - , parseAnyFile - , parseAbsPath - , parseRelPath + , parseAnyDirPathVariant + , parseAnyFilePathVariant + , parseRelAnyPathVariant + , parseAbsAnyPathVariant + , parseAnyAnyPathVariant ) where +import Pathy.Path (AbsAnyPathVariant, AbsDir, AbsFile, AnyAnyPathVariant, AnyDirPathVariant, AnyFilePathVariant, Path, RelAnyPathVariant, RelDir, RelFile, currentDir, extendPath, parentOf, proxyAbsDir, proxyAbsFile, proxyRelDir, proxyRelFile, rootDir) import Prelude import Data.Array (foldl) @@ -25,8 +27,8 @@ import Data.String.CodeUnits (take, takeRight) as S import Data.String.NonEmpty (NonEmptyString) import Data.String.NonEmpty as NES import Data.String.Pattern (Pattern(..)) as S +import Data.Variant (inj) import Pathy.Name (Name(..)) -import Pathy.Path (AbsDir, AbsFile, AnyDir, AnyFile, Path, RelDir, RelFile, RelPath, AbsPath, currentDir, extendPath, parentOf, rootDir) import Pathy.Phantom (class IsRelOrAbs, Dir) newtype Parser = Parser @@ -117,17 +119,21 @@ parseAbsDir :: Parser -> String -> Maybe AbsDir parseAbsDir p = parsePath p (const Nothing) Just (const Nothing) (const Nothing) Nothing -- | Attempts to parse an absolute or relative directory. -parseAnyDir :: Parser -> String -> Maybe AnyDir -parseAnyDir p = parsePath p (Just <<< Right) (Just <<< Left) (const Nothing) (const Nothing) Nothing +parseAnyDirPathVariant :: Parser -> String -> Maybe AnyDirPathVariant +parseAnyDirPathVariant p = parsePath p (Just <<< inj proxyRelDir) (Just <<< inj proxyAbsDir) (const Nothing) (const Nothing) Nothing --- | Attempts to parse an absolute or relative directory. -parseAnyFile :: Parser -> String -> Maybe AnyFile -parseAnyFile p = parsePath p (const Nothing) (const Nothing) (Just <<< Right) (Just <<< Left) Nothing +-- | Attempts to parse an absolute or relative file. +parseAnyFilePathVariant :: Parser -> String -> Maybe AnyFilePathVariant +parseAnyFilePathVariant p = parsePath p (const Nothing) (const Nothing) (Just <<< inj proxyRelFile) (Just <<< inj proxyAbsFile) Nothing --- | Attempts to parse an relative directory or file. -parseRelPath :: Parser -> String -> Maybe RelPath -parseRelPath p = parsePath p (Just <<< Left) (const Nothing) (Just <<< Right) (const Nothing) Nothing +-- | Attempts to parse a relative directory or file. +parseRelAnyPathVariant :: Parser -> String -> Maybe RelAnyPathVariant +parseRelAnyPathVariant p = parsePath p (Just <<< inj proxyRelDir) (const Nothing) (Just <<< inj proxyRelFile) (const Nothing) Nothing -- | Attempts to parse an absolute directory or file. -parseAbsPath :: Parser -> String -> Maybe AbsPath -parseAbsPath p = parsePath p (const Nothing) (Just <<< Left) (const Nothing) (Just <<< Right) Nothing +parseAbsAnyPathVariant :: Parser -> String -> Maybe AbsAnyPathVariant +parseAbsAnyPathVariant p = parsePath p (const Nothing) (Just <<< inj proxyAbsDir) (const Nothing) (Just <<< inj proxyAbsFile) Nothing + +-- | Attempts to parse an absolute or relative directory or file. +parseAnyAnyPathVariant :: Parser -> String -> Maybe AnyAnyPathVariant +parseAnyAnyPathVariant p = parsePath p (Just <<< inj proxyRelDir) (Just <<< inj proxyAbsDir) (Just <<< inj proxyRelFile) (Just <<< inj proxyAbsFile) Nothing diff --git a/src/Pathy/Path.purs b/src/Pathy/Path.purs index 8037f60..12a9a75 100644 --- a/src/Pathy/Path.purs +++ b/src/Pathy/Path.purs @@ -1,14 +1,18 @@ module Pathy.Path ( Path - , AnyPath - , RelPath - , AbsPath + , proxyRelDir + , proxyAbsDir + , proxyRelFile + , proxyAbsFile , RelDir , AbsDir - , AnyDir , RelFile , AbsFile - , AnyFile + , AnyDirPathVariant + , AnyFilePathVariant + , RelAnyPathVariant + , AbsAnyPathVariant + , AnyAnyPathVariant , rootDir , currentDir , dir @@ -37,15 +41,16 @@ module Pathy.Path import Prelude -import Data.Either (Either) import Data.Identity (Identity(..)) import Data.Maybe (Maybe(..), maybe) import Data.Newtype (un) import Data.String.NonEmpty as NES import Data.Tuple (Tuple(..), fst, snd) +import Data.Variant (Variant) import Partial.Unsafe (unsafeCrashWith) import Pathy.Name (class IsName, Name(..), alterExtension, reflectName) import Pathy.Phantom (class IsDirOrFile, class IsRelOrAbs, Abs, Dir, File, Rel, foldDirOrFile, foldRelOrAbs, onDirOrFile, onRelOrAbs, DirOrFile, RelOrAbs) +import Type.Prelude (Proxy(..)) import Unsafe.Coerce (unsafeCoerce) -- | A type that describes a Path. All flavors of paths are described by this @@ -77,15 +82,6 @@ instance showPathRelDir :: (IsRelOrAbs a, IsDirOrFile b) => Show (Path a b) wher show (ParentOf p) = "(parentOf " <> show p <> ")" show (In p n) = "(" <> show p <> " " <> foldDirOrFile (("dir " <> _) <<< show) (("file " <> _) <<< show) n <> ")" --- | A type describing a file or directory path. -type AnyPath a = Either (Path a Dir) (Path a File) - --- | A type describing a relative file or directory path. -type RelPath = AnyPath Rel - --- | A type describing an absolute file or directory path. -type AbsPath = AnyPath Abs - -- | A type describing a directory whose location is given relative to some -- | other, unspecified directory (referred to as the "current directory"). type RelDir = Path Rel Dir @@ -93,9 +89,6 @@ type RelDir = Path Rel Dir -- | A type describing a directory whose location is absolutely specified. type AbsDir = Path Abs Dir --- | A type describing a absolute or relative directory path. -type AnyDir = Either AbsDir RelDir - -- | A type describing a file whose location is given relative to some other, -- | unspecified directory (referred to as the "current directory"). type RelFile = Path Rel File @@ -103,8 +96,24 @@ type RelFile = Path Rel File -- | A type describing a file whose location is absolutely specified. type AbsFile = Path Abs File --- | A type describing a absolute or relative file path. -type AnyFile = Either AbsFile RelFile +-- Proxy functions for different path types +proxyRelDir :: Proxy "relDir" +proxyRelDir = Proxy + +proxyAbsDir :: Proxy "absDir" +proxyAbsDir = Proxy + +proxyRelFile :: Proxy "relFile" +proxyRelFile = Proxy + +proxyAbsFile :: Proxy "absFile" +proxyAbsFile = Proxy + +type AnyDirPathVariant = Variant (relDir :: RelDir, absDir :: AbsDir) +type AnyFilePathVariant = Variant (relFile :: RelFile, absFile :: AbsFile) +type RelAnyPathVariant = Variant (relDir :: RelDir, relFile :: RelFile) +type AbsAnyPathVariant = Variant (absDir :: AbsDir, absFile :: AbsFile) +type AnyAnyPathVariant = Variant (relDir :: RelDir, absDir :: AbsDir, relFile :: RelFile, absFile :: AbsFile) -- | The root directory, which can be used to define absolutely-located resources. rootDir :: Path Abs Dir From 401bd6ba375d117bcd79db99ba1d337268b62331 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Mon, 7 Oct 2024 08:51:41 +0700 Subject: [PATCH 4/6] fix: ci --- .github/workflows/ci.yml | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39270b9..9576f95 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,39 +11,35 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up a PureScript toolchain uses: purescript-contrib/setup-purescript@main with: - purescript: "unstable" + purescript: "latest" purs-tidy: "latest" + spago: "unstable" - name: Cache PureScript dependencies uses: actions/cache@v2 with: - key: ${{ runner.os }}-spago-${{ hashFiles('**/*.dhall') }} + key: ${{ runner.os }}-spago-${{ hashFiles('**/spago.lock') }} path: | .spago output + - uses: actions/setup-node@v4 + with: + node-version: "lts/*" + - name: Install dependencies run: spago install - name: Build source - run: spago build --no-install + run: spago build --offline - name: Run tests - run: spago test --no-install + run: spago test --offline - name: Check formatting run: purs-tidy check src test - - - name: Verify Bower & Pulp - run: | - npm install bower pulp@16.0.0-0 - npx bower install - npx pulp build -- --censor-lib --strict - if [ -d "test" ]; then - npx pulp test - fi From 61e4aec8ff5eedf41404a9dd66993212356b38aa Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Tue, 8 Oct 2024 10:19:46 +0700 Subject: [PATCH 5/6] fix: ci -> better_sqlite3.node was compiled against a different Node.js version using NODE_MODULE_VERSION 108. This version of Node.js requires NODE_MODULE_VERSION 115. Please try re-compiling or re-installing --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9576f95..7e83807 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,10 +28,6 @@ jobs: .spago output - - uses: actions/setup-node@v4 - with: - node-version: "lts/*" - - name: Install dependencies run: spago install From 22de6cafb395c43829bc833c5979ebbdaba9ad87 Mon Sep 17 00:00:00 2001 From: Serhii Khoma Date: Wed, 9 Oct 2024 07:54:02 +0700 Subject: [PATCH 6/6] fix: ci -> purs format --- src/Pathy/Gen.purs | 10 +++++----- test/{ => Test}/Main.purs | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename test/{ => Test}/Main.purs (100%) diff --git a/src/Pathy/Gen.purs b/src/Pathy/Gen.purs index 6bc8999..8e8c902 100644 --- a/src/Pathy/Gen.purs +++ b/src/Pathy/Gen.purs @@ -80,8 +80,8 @@ genAbsAnyPathVariant = Gen.oneOf $ (inj proxyAbsDir <$> genAbsDirPath) :| [ inj genAnyAnyPathVariant :: forall m. MonadGen m => MonadRec m => m AnyAnyPathVariant genAnyAnyPathVariant = Gen.oneOf $ - ( inj proxyRelDir <$> genRelDirPath ) :| - [ inj proxyAbsDir <$> genAbsDirPath - , inj proxyRelFile <$> genRelFilePath - , inj proxyAbsFile <$> genAbsFilePath - ] + (inj proxyRelDir <$> genRelDirPath) :| + [ inj proxyAbsDir <$> genAbsDirPath + , inj proxyRelFile <$> genRelFilePath + , inj proxyAbsFile <$> genAbsFilePath + ] diff --git a/test/Main.purs b/test/Test/Main.purs similarity index 100% rename from test/Main.purs rename to test/Test/Main.purs