From 03b0c2ef127260fa3c60c283d51e35c2e6ae005a Mon Sep 17 00:00:00 2001 From: Emi Simpson Date: Sat, 3 Sep 2022 20:03:03 -0400 Subject: [PATCH] Began work on a PureScript Aviary implementation --- .gitignore | 10 ++++ packages.dhall | 126 +++++++++++++++++++++++++++++++++++++++++++++++++ spago.dhall | 26 ++++++++++ src/Main.purs | 41 ++++++++++++++++ test/Main.purs | 11 +++++ 5 files changed, 214 insertions(+) create mode 100644 .gitignore create mode 100644 packages.dhall create mode 100644 spago.dhall create mode 100644 src/Main.purs create mode 100644 test/Main.purs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30efe19 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +/bower_components/ +/node_modules/ +/.pulp-cache/ +/output/ +/generated-docs/ +/.psc-package/ +/.psc* +/.purs* +/.psa* +/.spago diff --git a/packages.dhall b/packages.dhall new file mode 100644 index 0000000..4d73ae4 --- /dev/null +++ b/packages.dhall @@ -0,0 +1,126 @@ +{- +Welcome to your new Dhall package-set! + +Below are instructions for how to edit this file for most use +cases, so that you don't need to know Dhall to use it. + +## Use Cases + +Most will want to do one or both of these options: +1. Override/Patch a package's dependency +2. Add a package not already in the default package set + +This file will continue to work whether you use one or both options. +Instructions for each option are explained below. + +### Overriding/Patching a package + +Purpose: +- Change a package's dependency to a newer/older release than the + default package set's release +- Use your own modified version of some dependency that may + include new API, changed API, removed API by + using your custom git repo of the library rather than + the package set's repo + +Syntax: +where `entityName` is one of the following: +- dependencies +- repo +- version +------------------------------- +let upstream = -- +in upstream + with packageName.entityName = "new value" +------------------------------- + +Example: +------------------------------- +let upstream = -- +in upstream + with halogen.version = "master" + with halogen.repo = "https://example.com/path/to/git/repo.git" + + with halogen-vdom.version = "v4.0.0" + with halogen-vdom.dependencies = [ "extra-dependency" ] # halogen-vdom.dependencies +------------------------------- + +### Additions + +Purpose: +- Add packages that aren't already included in the default package set + +Syntax: +where `` is: +- a tag (i.e. "v4.0.0") +- a branch (i.e. "master") +- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977") +------------------------------- +let upstream = -- +in upstream + with new-package-name = + { dependencies = + [ "dependency1" + , "dependency2" + ] + , repo = + "https://example.com/path/to/git/repo.git" + , version = + "" + } +------------------------------- + +Example: +------------------------------- +let upstream = -- +in upstream + with benchotron = + { dependencies = + [ "arrays" + , "exists" + , "profunctor" + , "strings" + , "quickcheck" + , "lcg" + , "transformers" + , "foldable-traversable" + , "exceptions" + , "node-fs" + , "node-buffer" + , "node-readline" + , "datetime" + , "now" + ] + , repo = + "https://github.com/hdgarrood/purescript-benchotron.git" + , version = + "v7.0.0" + } +------------------------------- +-} + +https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220901/packages.dhall sha256:f1531b29c21ac437ffe5666c1b6cc76f0a9c29d3c9d107ff047aa2567744994f +with base64 = + { dependencies = + [ "arraybuffer-types" + , "arrays" + , "assert" + , "console" + , "effect" + , "either" + , "encoding" + , "enums" + , "exceptions" + , "functions" + , "partial" + , "prelude" + , "quickcheck" + , "strings" + , "stringutils" + , "unicode" + ] + , repo = + "https://github.com/menelaos/purescript-b64" + , version = + "v0.0.8" -- branch, tag, or commit hash + } diff --git a/spago.dhall b/spago.dhall new file mode 100644 index 0000000..c61bdb9 --- /dev/null +++ b/spago.dhall @@ -0,0 +1,26 @@ +{- +Welcome to a Spago project! +You can edit this file as you like. + +Need help? See the following resources: +- Spago documentation: https://github.com/purescript/spago +- Dhall language tour: https://docs.dhall-lang.org/tutorials/Language-Tour.html + +When creating a new Spago project, you can use +`spago init --no-comments` or `spago init -C` +to generate this file without the comments in this block. +-} +{ name = "my-project" +, dependencies = + [ "aff" + , "arraybuffer-types" + , "b64" + , "console" + , "effect" + , "either" + , "fetch" + , "prelude" + ] +, packages = ./packages.dhall +, sources = [ "src/**/*.purs", "test/**/*.purs" ] +} diff --git a/src/Main.purs b/src/Main.purs new file mode 100644 index 0000000..768497c --- /dev/null +++ b/src/Main.purs @@ -0,0 +1,41 @@ +module Main where + +import Prelude + +import Effect (Effect) +import Effect.Aff (Aff, launchAff) +import Effect.Class (liftEffect) +import Effect.Console (log) +import Fetch (fetch) +import Data.Binary.Base64 (decode) +import Data.Either (Either, hush, note) +import Data.ArrayBuffer.Types (Uint8Array) + +data AviaryError + = MalformedKey + +instance showAviaryError :: Show AviaryError where + show MalformedKey = "Malformed key!!" + +type UrlInfo = + { server :: String + , fileId :: String + , key :: String + } + +parseUrl :: String -> Either AviaryError UrlInfo +parseUrl url = + let { after, before } = splitAt (indexOf' (Pattern "/") 8 url) url + in { server: before, fileId: after, key: after } + +decodeKey :: String -> Either AviaryError Uint8Array +decodeKey key = note MalformedKey $ hush $ decode key + +main_aff :: Aff Unit +main_aff = do + { status, text } <- fetch "https://envs.sh/Q_V.txt" {} + responseText <- text + liftEffect $ log responseText + +main :: Effect Unit +main = launchAff main_aff $> unit diff --git a/test/Main.purs b/test/Main.purs new file mode 100644 index 0000000..f91f98c --- /dev/null +++ b/test/Main.purs @@ -0,0 +1,11 @@ +module Test.Main where + +import Prelude + +import Effect (Effect) +import Effect.Class.Console (log) + +main :: Effect Unit +main = do + log "🍝" + log "You should add some tests."