0.4.1 • Published 5 years ago

build-purescript v0.4.1

Weekly downloads
600
License
ISC
Repository
github
Last release
5 years ago

build-purescript

npm version Build Status Coverage Status

A Node.js module to build a PureScript binary from source

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 ...'
    });
  }
});

Installation

Make sure stack command is installed in your $PATH, then install build-purescript via npm CLI.

npm install build-purescript

API

const buildPurescript = require('build-purescript');

buildPurescript(options)

options: Object
Return: Observable (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

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.

{
  id: 'download',
  entry: <ReadEntry>,
  response: {
    bytes: <number>,
    headers: <Object>,
    url: <string>
  }
}
download:complete

Sent to the Observer when the PureScript source is completely downloaded.

{
  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.

{
  id: 'setup',
  command 'stack setup ...',
  output: <string>
}
setup:complete

Sent to the Observer when stack setup command exits with code 0.

{
  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.

{
  id: 'build',
  command 'stack install ...',
  output: <string>
}
build:complete

Sent to the Observer when stack install command exits with code 0.

{
  id: 'build:complete'
}
(async () => {
  await downloadPurescript().filter(({id}) => id.endsWith(':complete')).forEach(({id}) => {
    console.log(`✓ ${id.replace(':complete', '')}`);
  });

  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.

// 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 installed
buildPureScript().subscribe({
  error(err) {
    err.message; //=> '`stack` 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<string>

Additional command-line arguments passed to stack setup and stack install. Note:

  • --local-bin-path is automatically set to the first argument of buildPurescript.
  • Build-only flags, for example --fast and --pedantic, won't be passed to stack setup.

License

ISC License © 2017 - 2019 Shinnosuke Watanabe

0.4.1

5 years ago

0.4.0

5 years ago

0.4.0-1

5 years ago

0.4.0-0

5 years ago

0.3.1

5 years ago

0.3.0

6 years ago

0.3.0-1

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.3.0-0

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.2.0-0

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.10

7 years ago

0.0.10-7

7 years ago

0.0.10-6

7 years ago

0.0.10-5

7 years ago

0.0.10-4

7 years ago

0.0.10-3

7 years ago

0.0.10-2

7 years ago

0.0.10-1

7 years ago

0.0.10-0

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago

0.0.0

7 years ago