npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

makensis-cli

v0.15.0

Published

CLI for the Node.js makensis wrapper, compiles NSIS scripts

Downloads

70

Readme

makensis-cli

npm npm CircleCI David

CLI for the Node.js makensis wrapper

Why?

Admittedly, there are only few reasons why you would want to use a wrapper for an already existing CLI application.

Pros:

  • seamless Wine integration
  • Unix-like command-line parameters
  • normalized output across different NSIS versions
  • optional JSON output

Cons:

  • redundancy

Prerequisites

Make sure that NSIS is properly installed with makensis in your PATH environment variable.

Windows

Download the NSIS installer from SourceForge and run setup. Once completed, you need to edit your environment variable manually.

Alternatively, you can install NSIS using the Scoop package manager:

$ scoop install nsis/nsis

Linux

Install NSIS from your distribution's default package manager, for example:

# Debian
$ sudo apt-get install nsis

# Red Hat
$ sudo dnf install nsis

macOS

Install NSIS using Homebrew or MacPorts:

# Homebrew
$ brew install nsis

# MacPorts
$ port install nsis

Wine

You can setup NSIS in your Wine environment, but keep in mind that Wine writes standard streams while executing makensis. Additional parsing of the compiler output might be necessary.

Installation

$ npm install makensis-cli --global

Usage

You can evoke this wrapper using mn (for makensis).

Sub-Commands

  • hdrinfo – prints information about what options makensis was compiled with (Aliases: flags)
  • version – prints the makensis version and exits
  • license – prints the makensis software license exits
  • cmdhelp [item] – prints out help for 'item', or lists all commands
  • nsisdir – prints path of ${NSISDIR} (Aliases: dir)
  • scaffold – scaffold a new NSIS script in the current working directory (Aliases: new)

Options

Running mn --help lists all available options:

CLI version of node-makensis

Options:
  -V, --version                     output the version number
  -h, --help                        output usage information

Commands:
  hdrinfo|flags                     Print compilation flags
  compile [script]                  Compiles script(s)
  version [options]                 Import repository
  cmdhelp|help [command] [options]  Prints out help for single or all commands
  license [options]                 Prints license
  nsisdir|dir                       Prints NSIS installation folder
  scaffold|new                      Creates custom made NSIS script
  help [cmd]                        display help for [cmd]

Examples:

Let's start with makensis returning its version

$ mn version

# Result:
#
# v3.02.1

We can also return this as JSON

$ mn version --json

# Result:
#
# {
#   "version": "3.02.1"
# }

Try again for makensis on Wine

$ mn version --json --wine

# Result:
#
# {
#   "version": "3.01"
# }

In the following steps we're going to need a demo script, so let's create one. Take special note of the !warning inside the section.

$ printf "OutFile demo.exe\n\nSection\n!warning\nSectionEnd" > demo.nsi

Compile the script

$ mn demo.nsi

# Result (omitted):
#
# EXE header size:               36352 / 37888 bytes
# Install code:                    399 / 1999 bytes
# Install data:                      0 / 0 bytes
# CRC (0x027F605B):                  4 / 4 bytes
# Total size:                    36755 / 39891 bytes (92.1%)
# 1 warning:
#   !warning:  (demo.nsi:4)

Compile again, but only display warnings and errors

$ mn demo.nsi --verbose 2

# Result:
#
# warning: !warning:  (demo.nsi:4)
# 1 warning:
#   !warning:  (demo.nsi:4)

Compile with strict settings, so our little !warning will be treated as an error.

$ mn demo.nsi --verbose 2 --strict

# Result:
#
# Exit Code 1
# Error: warning treated as error

Let's output the above as JSON

$ mn demo.nsi --verbose 2 --strict --json

# Result:
#
# {
#   "status": 1,
#   "stdout": "warning: !warning:  (demo.nsi:4)",
#   "stderr": "Error: warning treated as error",
#   "warnings": 1
# }

License

This work is licensed under The MIT License