Socket
Socket
Sign inDemoInstall

build-purescript

Package Overview
Dependencies
59
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    build-purescript

Build a PureScript binary from source


Version published
Weekly downloads
55
increased by96.43%
Maintainers
1
Install size
886 kB
Created
Weekly downloads
 

Readme

Source

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

Keywords

FAQs

Last updated on 20 Mar 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc