Slide 1

Slide 1 text

Intro to psc-package Phil Freeman

Slide 2

Slide 2 text

What is psc-package? “psc-package is an executable which helps manage PureScript dependencies using Git.” Alternatively, it is: ● A Bower replacement, and/or ● A Pulp replacement ● The default package manager for pure11/purerl (depending on your workflow)

Slide 3

Slide 3 text

Quick Start Guide $ psc-package init Initializing new project in current directory Using the default package set for PureScript compiler version 0.10.7

Slide 4

Slide 4 text

Quick Start Guide $ psc-package install free Updating 34 packages… Updating arrays … psc-package.json file was updated

Slide 5

Slide 5 text

Quick Start Guide $ psc-package update Updating 52 packages… … Update complete

Slide 6

Slide 6 text

Quick Start Guide $ psc-package build … Compiling Prelude

Slide 7

Slide 7 text

Quick Start Guide $ psc-package install psci-support $ psc-package repl … PSCi, version 0.10.7 Type :? for help >

Slide 8

Slide 8 text

Other Commands ● available list all available packages ● dependencies list all transitive dependencies ● sources list all active source paths ● uninstall uninstall a package

Slide 9

Slide 9 text

Package Sets How does psc-package know which package versions to use? It depends on which package set you use. This is configured in your psc-package.json file.

Slide 10

Slide 10 text

psc-package.json $ cat psc-package.json { "name": "my-package", "set": "psc-0.10.7", "source": "https://github.com/purescript/package-sets.git", "depends": [ "prelude" ] }

Slide 11

Slide 11 text

Package Sets A package set is just a mapping from package names to ● Git repository ● Package version and ● Dependencies

Slide 12

Slide 12 text

Package Sets Package sets are stored in Git repositories. There is a default repository at purescript/package-sets. Tools for maintainers: ● updates Check all packages for updates ● verify-set Verify the entire set builds correctly

Slide 13

Slide 13 text

Caveats ● No constraint solving ● Cannot customize package versions

Slide 14

Slide 14 text

Contributing ● Help maintain the package set ● Add missing packages ● Try it out and report bugs ● Help write documentation ● Contribute to psc-package development: ○ Build with stack ○ Uses the turtle shell scripting library ○ Straightforward Haskell code

Slide 15

Slide 15 text

Future Work ● More integrations: ○ purs publish ○ purs docs ○ purs bundle ○ Pursuit / type search ○ Try PureScript ● Performance improvements ○ Caching cloned repos

Slide 16

Slide 16 text

Questions?