Build a PureScript binary from source
npm install build-purescript


A Node.js module to build a PureScript binary from source
``javascript
const {execFile} = require('child_process');
const buildPurescript = require('build-purescript');
buildPurescript().subscribe({
complete() {
console.log('Build completed.');
execFile('./purs', ['--help'], (err, stdout) => {
stdout.toString(); //=> 'Usage: purs COMMAND\n The PureScript compiler and tools ...'
});
}
});
`
Make sure stack command is installed in your $PATH, then install build-purescript via npm CLI.
``
npm install build-purescript
`javascript`
const buildPurescript = require('build-purescript');
options: Object Observable
Return: (Kevin Smith's implementation)
When the Observable is subscribed, it starts to download PureScript source from the GitHub repository, build it and put a built binary onto the current working directory, successively sending event objects to its Observer.
#### Events
Each event object has id property with one of these values:
* download
* download:complete
* setup
* setup:complete
* build
* build:complete
##### download
Sent to the Observer while downloading and extracting the PureScript source archive to the default temporary directory of the current OS.
entry and response properties are derived from dl-tar.
`javascript`
{
id: 'download',
entry:
response: {
bytes:
headers:
##### download:complete
Sent to the Observer when the PureScript source is completely downloaded.
`javascript`
{
id: 'download:complete'
}
##### setup
Sent to the Observer while running stack setup command.
command property is the command currently running, and output property is each line of stderr.
`javascript`
{
id: 'setup',
command 'stack setup ...',
output:
}
##### setup:complete
Sent to the Observer when stack setup command exits with code 0.
`javascript`
{
id: 'setup:complete'
}
##### build
Sent to the Observer while running stack install command.
command property is the command currently running, and output property is each line of stderr.
`javascript`
{
id: 'build',
command 'stack install ...',
output:
}
##### build:complete
Sent to the Observer when stack install command exits with code 0.
`javascript`
{
id: 'build:complete'
}
`javascript✓ ${id.replace(':complete', '')}
(async () => {
await downloadPurescript().filter(({id}) => id.endsWith(':complete')).forEach(({id}) => {
console.log();
});
console.log('\nCompleted.');
})();
`
`
✓ download
✓ setup
✓ build
Completed.
`
#### Errors
Each error passed to the Observer have id property that indicates which step the error occurred at.
`javascript
// When your machine have no network connection
buildPureScript().subscribe({
error(err) {
err.message; //=> 'getaddrinfo ENOTFOUND github.com github.com:443'
err.id; //=> 'download'
}
});
// When the stack command is not installedstack
buildPureScript().subscribe({
error(err) {
err.message; //=> ' command is not found in your PATH ...'`
err.id; //=> 'setup'
}
});
#### Options
Options are directly passed to the underlying donwload-purescript-source and spawn-stack. Also you can use the following:
##### args
Type: Array
Additional command-line arguments passed to stack setup and stack install. Note:
* --local-bin-path is automatically set to the first argument of buildPurescript.--fast
* Build-only flags, for example and --pedantic, won't be passed to stack setup`.
ISC License © 2017 - 2019 Shinnosuke Watanabe