Install PureScript to a given directory
npm install install-purescript


Install PureScript to a given directory
``javascript
cconst {execFile} = require('child_process');
const installPurescript = require('install-purescript');
installPurescript({version: '0.13.0'}).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.13.0\n'
});
}
});
`
``
npm install install-purescript
`javascript`
const installPurescript = require('install-purescript');
options: Object Observable
Return: (Kevin Smith's implementation)
When the Observable is subscribed,
1. it searches the standard cache directory for an already cached PureScript binary, and restores the cache if available
3. if a cached binary is not available, it downloads a prebuilt binary from the PureScript release page
4. if a prebuilt binary is not available, it downloads the PureScript source code and builds a binary form it
5. 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:
[group1]: #head-headfail-headcomplete-download-binary-download-binaryfail-download-binarycomplete-check-stack-check-stackcomplete-download-source-download-sourcecomplete
[group2]: #setup-setupcomplete-build-buildcomplete
* search-cache
* restore-cache
* restore-cache:fail
* restore-cache:complete
* check-binary
* check-binary:fail
* check-binary:complete
* [head][group1]head:fail
* [][group1]head:complete
* [][group1]download-binary
* [][group1]download-binary:fail
* [][group1]download-binary:complete
* [][group1]check-stack
* [][group1]check-stack:complete
* [][group1]download-source
* [][group1]download-source:complete
* [][group1]setup
* [][group2]setup:complete
* [][group2]build
* [][group2]build:complete
* [][group2]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.
`javascript`
{
id: 'search-cache',
path:
found:
}
##### restore-cache
Fires when it starts to extract a binary from the cached tgz archive.
`javascript`
{
id: 'restore-cache'
}
##### restore-cache:fail
Fires when it fails to restore the binary from cache.
`javascript`
{
id: 'restore-cache:fail',
error:
}
##### restore-cache:complete
Fires when the cached binary is successfully restored.
`javascript`
{
id: 'restore-cache:complete'
}
##### check-binary
Fires when it starts to verify the cached or downloaded binary works correctly, by running purs --version.
`javascript`
{
id: 'check-binary'
}
##### check-binary:fail
Fires when the cached or downloaded binary doesn't work correctly.
`javascript`
{
id: 'check-binary:fail',
error:
}
##### check-binary:complete
Fires when it verifies the cached or downloaded binary works correctly.
`javascript`
{
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 create a cache. The cache is compressed with Brotli.
`javascript`
{
id: 'write-cache',
originalSize:
}
##### write-cache:fail
Fires when it fails to create the cache.
`javascript`
{
id: 'write-cache:fail',
error:
}
##### write-cache:complete
Fires when the cache is successfully created.
`javascript`
{
id: 'write-cache:complete'
}
#### Errors
Every error passed to the Observer has id property that indicates which step the error occurred at.
`javascriptstack
// When the command is not installedstack
installPurescript('.').subscribe({
error(err) {
err.message; //=> ' 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 false`
Default:
Force reinstalling a binary even if an appropriate cache already exists.
* install-purescript-cli — CLI for this module
* download-or-build-purescript — Almost the same as this module, but has no cache feature
ISC License © 2017 - 2019 Watanabe Shinnosuke