Socket
Socket
Sign inDemoInstall

builder

Package Overview
Dependencies
Maintainers
5
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

builder - npm Package Compare versions

Comparing version 2.8.0 to 2.9.0

12

bin/builder-core.js

@@ -17,2 +17,3 @@ "use strict";

* @param {Array} [opts.argv] Arguments array (Default: `process.argv`)
* @param {Array} [opts.msgs] Array of log messages (`{ level, type, msg }`)
* @param {Function} callback Callback `(err)`

@@ -34,2 +35,13 @@ * @returns {void}

// Set up logger state.
log.setLevel({
env: env,
argv: opts.argv
});
// Drain outer `builder` messages manually (may be global or locally-sourced).
(opts.msgs || []).forEach(function (obj) {
log[obj.level](obj.type, obj.msg);
});
// Infer task to run

@@ -36,0 +48,0 @@ var task = new Task({

31

bin/builder.js

@@ -5,4 +5,14 @@ #!/usr/bin/env node

var path = require("path");
var log = require("../lib/log");
// Buffer up log messages to pass on.
//
// **Scenario**: We can't import `log` here and use it's internal queue because
// this might be the _global_ builder in this script, which if we then switch
// to _local_ builder below, we'll import a different (local) `log` and when
// that gets called, it wouldn't have any internal queue / notion of these log
// events here. So, instead of using the internal log queue, we manually create
// an array of messages in the same format and drain in `builder-core`
// explicitly.
var msgs = [];
// Infer if we are global and there is a local version available.

@@ -16,6 +26,15 @@ var builderPath = require.resolve("./builder-core");

builderPath = require.resolve(localPath);
log.info("local-detect", "Switched to local builder at: " + localPath);
msgs.push({
level: "info", type: "local-detect",
msg: "Switched to local builder at: " + localPath
});
} catch (err) {
log.warn("local-detect", "Error importing local builder: " + err.message);
log.info("local-detect", "Using global builder at: " + builderPath);
msgs.push({
level: "warn", type: "local-detect",
msg: "Error importing local builder: " + err.message
});
msgs.push({
level: "info", type: "local-detect",
msg: "Using global builder at: " + builderPath
});
}

@@ -26,5 +45,7 @@ }

var builder = require(builderPath);
builder(function (err) {
builder({
msgs: msgs
}, function (err) {
/*eslint-disable no-process-exit*/
process.exit(err ? err.code || 1 : 0);
});
History
=======
## 2.9.0
* Add configurable log levels via `--log-level=LEVEL` and `--quiet`.
[#6](https://github.com/FormidableLabs/builder/issues/6)
## 2.8.0

@@ -5,0 +10,0 @@

@@ -64,3 +64,13 @@ "use strict";

help: FLAG_HELP,
version: FLAG_VERSION
version: FLAG_VERSION,
quiet: {
desc: "Silence logging",
types: [Boolean],
default: false
},
"log-level": {
desc: "Level to log at (`info`, `warn`, `error`, `none`)",
types: [String],
default: "info"
}
},

@@ -67,0 +77,0 @@

"use strict";
var chalk = require("chalk");
var args = require("./args");

@@ -10,23 +11,96 @@ // Wrap "type".

// Levels
var LEVELS = {
info: 0,
warn: 1,
error: 2,
none: 3
};
/**
* A super-small logger.
*/
module.exports = {
// TODO(6): Configurable log levels.
// https://github.com/FormidableLabs/builder/issues/6
_logger: function () {
return console;
var log = module.exports = {
/**
* Set log level from command flags or environment.
*
* **NOTE - Side Effects**: Mutates environment.
*
* @param {Object} opts Options object
* @param {Object} opts.argv Arguments array.
* @param {Object} opts.env Environment object to mutate (Default `process.env`)
* @returns {void}
*/
setLevel: function (opts) {
opts = opts || {};
var env = opts.env && opts.env.env || process.env;
// Try to determine log level from environment.
var level = env._BUILDER_ARGS_LOG_LEVEL;
// If not, determine log level from command line.
if (!level) {
var parsed = args.general(opts.argv);
level = parsed.quiet === true ? "none" : parsed.logLevel;
}
// Statefully set level.
env._BUILDER_ARGS_LOG_LEVEL = level;
log._level = LEVELS[level];
if (typeof log._level === "undefined") {
throw new Error("Unknown log level: " + level);
}
// Drain message queue.
log._drainQueue();
},
info: function (type, msg) {
this._logger().info([chalk.green(wrapType(type)), msg].join(" "));
// Nuke everything for test runs.
_unsetLevel: function () {
delete process.env._BUILDER_ARGS_LOG_LEVEL;
delete log._level;
delete log._queue;
},
warn: function (type, msg) {
this._logger().warn([chalk.yellow(wrapType(type)), msg].join(" "));
// Drain internal queue and emit log events.
_drainQueue: function () {
(log._queue || []).forEach(function (obj) {
log[obj.level](obj.type, obj.msg);
});
log._queue = null;
},
error: function (type, msg) {
this._logger().error([chalk.red(wrapType(type)), msg].join(" "));
_logger: function () {
return console;
},
_wrapper: function (level, color, type, msg) { // eslint-disable-line max-params
// Queue if level is unset.
//
// **Scenario**: This queue is used when `log` has been imported from the
// actual builder instance that is running. However, we have calls to log
// events before we can call `log.setLevel`, so need to queue until that
// happens.
if (typeof log._level === "undefined") {
log._queue = log._queue || [];
log._queue.push({ level: level, type: type, msg: msg });
return;
}
// Should only get to here, _after_ `log.setlevel()` is imported.
// Check if logging at this integer level.
if (LEVELS[level] < log._level) {
return;
}
// Call directly once level is set.
// This is also used to drain the queue.
var formattedMsg = [chalk[color](wrapType(type)), msg].join(" ");
log._logger()[level](formattedMsg);
}
};
// Actual implementation methods.
log.info = log._wrapper.bind(log, "info", "green");
log.warn = log._wrapper.bind(log, "warn", "yellow");
log.error = log._wrapper.bind(log, "error", "red");

2

package.json
{
"name": "builder",
"version": "2.8.0",
"version": "2.9.0",
"description": "An NPM-based task runner",

@@ -5,0 +5,0 @@ "repository": {

@@ -222,6 +222,8 @@ [![Travis Status][trav_img]][trav_site]

* `--tries`: Number of times to attempt a task (default: `1`)
* `--setup`: Single task to run for the entirety of `<action>`
* `--quiet`: Silence logging
* `--log-level`: Level to log at (`info`, `warn`, `error`, `none`)
* `--expand-archetype`: Expand `node_modules/<archetype>` with full path (default: `false`)
* `--builderrc`: Path to builder config file (default: `.builderrc`)
* `--expand-archetype`: Expand `node_modules/<archetype>` with full path (default: `false`)
* `--tries`: Number of times to attempt a task (default: `1`)
* `--setup`: Single task to run for the entirety of `<action>`.

@@ -241,9 +243,11 @@ ##### builder concurrent

* `--builderrc`: Path to builder config file (default: `.builderrc`)
* `--expand-archetype`: Expand `node_modules/<archetype>` with full path (default: `false`)
* `--tries`: Number of times to attempt a task (default: `1`)
* `--setup`: Single task to run for the entirety of `<action>`.
* `--setup`: Single task to run for the entirety of `<action>`
* `--queue`: Number of concurrent processes to run (default: unlimited - `0|null`)
* `--[no-]buffer`: Buffer output until process end (default: `false`)
* `--[no-]bail`: End all processes after the first failure (default: `true`)
* `--quiet`: Silence logging
* `--log-level`: Level to log at (`info`, `warn`, `error`, `none`)
* `--expand-archetype`: Expand `node_modules/<archetype>` with full path (default: `false`)
* `--builderrc`: Path to builder config file (default: `.builderrc`)

@@ -281,6 +285,4 @@ Note that `tries` will retry _individual_ tasks that are part of the concurrent

* `--builderrc`: Path to builder config file (default: `.builderrc`)
* `--expand-archetype`: Expand `node_modules/<archetype>` with full path (default: `false`)
* `--tries`: Number of times to attempt a task (default: `1`)
* `--setup`: Single task to run for the entirety of `<action>`.
* `--setup`: Single task to run for the entirety of `<action>`
* `--queue`: Number of concurrent processes to run (default: unlimited - `0|null`)

@@ -290,2 +292,6 @@ * `--[no-]buffer`: Buffer output until process end (default: `false`)

* `--envs-path`: Path to JSON env variable array file (default: `null`)
* `--quiet`: Silence logging
* `--log-level`: Level to log at (`info`, `warn`, `error`, `none`)
* `--expand-archetype`: Expand `node_modules/<archetype>` with full path (default: `false`)
* `--builderrc`: Path to builder config file (default: `.builderrc`)

@@ -292,0 +298,0 @@ _Note_: The environments JSON array will overwrite **existing** values in the

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc