Package Exports
- install-purescript
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (install-purescript) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
install-purescript
Install PureScript to a given directory
cconst {execFile} = require('child_process');
const installPurescript = require('install-purescript');
installPurescript({version: '0.12.3'}).subscribe({
next(event) {
if (event.id === 'search-cache' && event.found) {
console.log('✓ Found a cache.');
return;
}
if (event.id === 'restore-cache:complete') {
console.log('✓ Cached binary restored.');
return;
}
if (event.id === 'check-binary:complete') {
console.log('✓ Binary works correctly.');
return;
}
}
complete() {
execFile('./purs', ['--version'], (err, stdout) => {
stdout.toString(); //=> '0.12.3\n'
});
}
});
Installation
npm install install-purescript
API
const installPurescript = require('install-purescript');
installPurescript([options])
options: Object
Return: Observable
(Kevin Smith's implementation)
When the Observable
is subscribed,
- it searches the standard cache directory for an already cached PureScript binary, and restores the cache if available
- if a cached binary is not available, it downloads a prebuilt binary from the PureScript release page
- if a prebuilt binary is not available, it downloads the PureScript source code and builds a binary form it
- Cache the downloaded or built binary to the npm cache directory
while successively sending events to its Observer
.
Events
Every event object has id
property with one of these values:
search-cache
restore-cache
restore-cache:fail
restore-cache:complete
check-binary
check-binary:fail
check-binary:complete
head
head:fail
head:complete
download-binary
download-binary:fail
download-binary:complete
check-stack
check-stack:complete
download-source
download-source:complete
setup
setup:complete
build
build:complete
write-cache
write-cache:fail
write-cache:complete
|
search-cache -- x -+- head ------------ x -+- check-stack ----- x -+
| | | | | |
o | o | o |
| | | | | |
restore-cache - x -+ download-binary - x -+ download-source - x -+
| | | | | |
o | o | o |
| | | | | |
check-binary -- x -+ check-binary ---- x -+ setup ----------- x -+
| | | |
o | o |
| | | |
| | build ----------- x -+
| | | |
| o o |
| | | |
******************* ***************** ***************** ^^^^^^^
Restored a Downloaded a Built a binary Error
binary from cache prebuilt binary from the source ^^^^^^^
******************* ***************** *****************
| |
write-cache write-cache
search-cache
Fires when it checks if a tgz
archive of the required PureScript binary exists in the cache directory.
{
id: 'search-cache',
path: <string>, // path to the cache file
found: <boolean> // whether a cache is found or not
}
restore-cache
Fires when it starts to extract a binary from the cached tgz
archive.
{
id: 'restore-cache'
}
restore-cache:fail
Fires when it fails to restore the binary from cache.
{
id: 'restore-cache:fail',
error: <Error>
}
restore-cache:complete
Fires when the cached binary is successfully restored.
{
id: 'restore-cache:complete'
}
check-binary
Fires when it starts to verify the cached or downloaded binary works correctly, by running purs --version
.
{
id: 'check-binary'
}
check-binary:fail
Fires when the cached or downloaded binary doesn't work correctly.
{
id: 'check-binary:fail',
error: <Error>
}
check-binary:complete
Fires when it verifies the cached or downloaded binary works correctly.
{
id: 'check-binary:complete'
}
head
head:fail
head:complete
download-binary
download-binary:fail
download-binary:complete
check-stack
check-stack:complete
download-source
download-source:complete
Inherited from download-or-build-purescript
.
setup
setup:complete
build
build:complete
Inherited from build-purescript
.
write-cache
Fires when it starts to store a binary as a cache.
{
id: 'write-cache'
}
write-cache:fail
Fires when it fails to create the cache.
{
id: 'write-cache:fail',
error: <Error>
}
write-cache:complete
Fires when the cache is successfully created.
{
id: 'write-cache:complete'
}
Errors
Every error passed to the Observer
has id
property that indicates which step the error occurred at.
// When the `stack` command is not installed
installPurescript('.').subscribe({
error(err) {
err.message; //=> '`stack` command is not found in your PATH ...'
err.id; //=> 'check-stack'
}
});
// When your machine lose the internet connection while downloading the source
installPurescript('.').subscribe({
error(err) {
err.message; //=> 'socket hang up'
err.id; //=> 'download-source'
}
});
Options
Options are directly passed to download-or-build-purescript
.
Additionally, you can use the following:
forceReinstall
Type: boolean
Default: false
Force reinstalling a binary even if an appropriate cache already exists.
Related projects
- install-purescript-cli — CLI for this module
- download-or-build-purescript — Almost the same as this module, but has no cache feature
License
ISC License © 2017 - 2019 Shinnosuke Watanabe