@kumori/binary-install
TypeScript icon, indicating that this package has built-in type declarations

1.2.3 • Public • Published

binary-cli-install

binary-cli-install is a tool to install CLIs written in go, rust, c, etc with npm/yarn into a node project.

Release

Software License

Build status

Install

$ npm install --dev-save binary-cli-install
$ yarn add -D binary-cli-install

How to use it

  1. Create a new npm package (needed props: [version, bin, binary])

  2. Create a entrypoint.js and set as as the bin file in your package.json

  3. Add a binary object to your package.json with

  • name property set to the name of your cli

  • url property set to the download link

  1. Import the Binary class, initialize it and call the run method

Example

// package.json
{
  "name": "runtime-env",
  "version": "0.0.0",
  "bin": {
    "exmplae": "entrypoint.js"
  },
  "files": ["entrypoint.js"],
  "dependencies": {
    "binary-cli-install": "file:/home/simon/src/binary-cli-install/"
  },
  "binary": {
    "name": "runtime-env",
    "url": "https://github.com/example/example/releases/download/v{{version}}/runtime-env_{{version}}_{{platform}}_{{arch}}.tar.gz"
  }
}
// entrypoint.js

// importing both the Binary class and Mapper obejcts specificly for go to map the node arch & platform names to the go names

const {
  Binary,
  GO_ARCH_MAPPING,
  GO_PLATFORM_MAPPING,
} = require("binary-cli-install");

// import your package.json

const { join } = require("path");
const packageJson = require(join("..", "package.json"));

// Pass the mappers and your package.json to the Binary class

const bin = new Binary(
  packageJson,
  GO_ARCH_MAPPING,
  GO_PLATFORM_MAPPING,
  false // set debug to true with info messages should be logged
);

bin.run();

How it works

Your entrypoint.js script will be put into the node_modules/.bin folder when your package is installed. It acts as a placeholder and will be replaced after the first execution with the binary CLI. To keep a consistent user experience, the js script will call the binary on the first run every run afterwards will just be the binary cli no js wrapper.

Dependents (4)

Package Sidebar

Install

npm i @kumori/binary-install

Weekly Downloads

6

Version

1.2.3

License

MIT

Unpacked Size

36.4 kB

Total Files

8

Last publish

Collaborators

  • schinesta
  • juavabar
  • jbgisbert
  • javiku
  • josepba