mirror of
https://github.com/oven-sh/setup-bun.git
synced 2025-02-24 03:00:39 +08:00
211 lines
5.9 KiB
JavaScript
211 lines
5.9 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
|
|
var util = _interopDefault(require('util'));
|
|
var os = require('os');
|
|
|
|
// Copyright (c) Microsoft Corporation.
|
|
function log(message, ...args) {
|
|
process.stderr.write(`${util.format(message, ...args)}${os.EOL}`);
|
|
}
|
|
|
|
// Copyright (c) Microsoft Corporation.
|
|
const debugEnvVariable = (typeof process !== "undefined" && process.env && process.env.DEBUG) || undefined;
|
|
let enabledString;
|
|
let enabledNamespaces = [];
|
|
let skippedNamespaces = [];
|
|
const debuggers = [];
|
|
if (debugEnvVariable) {
|
|
enable(debugEnvVariable);
|
|
}
|
|
const debugObj = Object.assign((namespace) => {
|
|
return createDebugger(namespace);
|
|
}, {
|
|
enable,
|
|
enabled,
|
|
disable,
|
|
log
|
|
});
|
|
function enable(namespaces) {
|
|
enabledString = namespaces;
|
|
enabledNamespaces = [];
|
|
skippedNamespaces = [];
|
|
const wildcard = /\*/g;
|
|
const namespaceList = namespaces.split(",").map((ns) => ns.trim().replace(wildcard, ".*?"));
|
|
for (const ns of namespaceList) {
|
|
if (ns.startsWith("-")) {
|
|
skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));
|
|
}
|
|
else {
|
|
enabledNamespaces.push(new RegExp(`^${ns}$`));
|
|
}
|
|
}
|
|
for (const instance of debuggers) {
|
|
instance.enabled = enabled(instance.namespace);
|
|
}
|
|
}
|
|
function enabled(namespace) {
|
|
if (namespace.endsWith("*")) {
|
|
return true;
|
|
}
|
|
for (const skipped of skippedNamespaces) {
|
|
if (skipped.test(namespace)) {
|
|
return false;
|
|
}
|
|
}
|
|
for (const enabledNamespace of enabledNamespaces) {
|
|
if (enabledNamespace.test(namespace)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
function disable() {
|
|
const result = enabledString || "";
|
|
enable("");
|
|
return result;
|
|
}
|
|
function createDebugger(namespace) {
|
|
const newDebugger = Object.assign(debug, {
|
|
enabled: enabled(namespace),
|
|
destroy,
|
|
log: debugObj.log,
|
|
namespace,
|
|
extend
|
|
});
|
|
function debug(...args) {
|
|
if (!newDebugger.enabled) {
|
|
return;
|
|
}
|
|
if (args.length > 0) {
|
|
args[0] = `${namespace} ${args[0]}`;
|
|
}
|
|
newDebugger.log(...args);
|
|
}
|
|
debuggers.push(newDebugger);
|
|
return newDebugger;
|
|
}
|
|
function destroy() {
|
|
const index = debuggers.indexOf(this);
|
|
if (index >= 0) {
|
|
debuggers.splice(index, 1);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
function extend(namespace) {
|
|
const newDebugger = createDebugger(`${this.namespace}:${namespace}`);
|
|
newDebugger.log = this.log;
|
|
return newDebugger;
|
|
}
|
|
|
|
// Copyright (c) Microsoft Corporation.
|
|
const registeredLoggers = new Set();
|
|
const logLevelFromEnv = (typeof process !== "undefined" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;
|
|
let azureLogLevel;
|
|
/**
|
|
* The AzureLogger provides a mechanism for overriding where logs are output to.
|
|
* By default, logs are sent to stderr.
|
|
* Override the `log` method to redirect logs to another location.
|
|
*/
|
|
const AzureLogger = debugObj("azure");
|
|
AzureLogger.log = (...args) => {
|
|
debugObj.log(...args);
|
|
};
|
|
const AZURE_LOG_LEVELS = ["verbose", "info", "warning", "error"];
|
|
if (logLevelFromEnv) {
|
|
// avoid calling setLogLevel because we don't want a mis-set environment variable to crash
|
|
if (isAzureLogLevel(logLevelFromEnv)) {
|
|
setLogLevel(logLevelFromEnv);
|
|
}
|
|
else {
|
|
console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(", ")}.`);
|
|
}
|
|
}
|
|
/**
|
|
* Immediately enables logging at the specified log level.
|
|
* @param level - The log level to enable for logging.
|
|
* Options from most verbose to least verbose are:
|
|
* - verbose
|
|
* - info
|
|
* - warning
|
|
* - error
|
|
*/
|
|
function setLogLevel(level) {
|
|
if (level && !isAzureLogLevel(level)) {
|
|
throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(",")}`);
|
|
}
|
|
azureLogLevel = level;
|
|
const enabledNamespaces = [];
|
|
for (const logger of registeredLoggers) {
|
|
if (shouldEnable(logger)) {
|
|
enabledNamespaces.push(logger.namespace);
|
|
}
|
|
}
|
|
debugObj.enable(enabledNamespaces.join(","));
|
|
}
|
|
/**
|
|
* Retrieves the currently specified log level.
|
|
*/
|
|
function getLogLevel() {
|
|
return azureLogLevel;
|
|
}
|
|
const levelMap = {
|
|
verbose: 400,
|
|
info: 300,
|
|
warning: 200,
|
|
error: 100
|
|
};
|
|
/**
|
|
* Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.
|
|
* @param namespace - The name of the SDK package.
|
|
* @hidden
|
|
*/
|
|
function createClientLogger(namespace) {
|
|
const clientRootLogger = AzureLogger.extend(namespace);
|
|
patchLogMethod(AzureLogger, clientRootLogger);
|
|
return {
|
|
error: createLogger(clientRootLogger, "error"),
|
|
warning: createLogger(clientRootLogger, "warning"),
|
|
info: createLogger(clientRootLogger, "info"),
|
|
verbose: createLogger(clientRootLogger, "verbose")
|
|
};
|
|
}
|
|
function patchLogMethod(parent, child) {
|
|
child.log = (...args) => {
|
|
parent.log(...args);
|
|
};
|
|
}
|
|
function createLogger(parent, level) {
|
|
const logger = Object.assign(parent.extend(level), {
|
|
level
|
|
});
|
|
patchLogMethod(parent, logger);
|
|
if (shouldEnable(logger)) {
|
|
const enabledNamespaces = debugObj.disable();
|
|
debugObj.enable(enabledNamespaces + "," + logger.namespace);
|
|
}
|
|
registeredLoggers.add(logger);
|
|
return logger;
|
|
}
|
|
function shouldEnable(logger) {
|
|
if (azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]) {
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
function isAzureLogLevel(logLevel) {
|
|
return AZURE_LOG_LEVELS.includes(logLevel);
|
|
}
|
|
|
|
exports.AzureLogger = AzureLogger;
|
|
exports.createClientLogger = createClientLogger;
|
|
exports.getLogLevel = getLogLevel;
|
|
exports.setLogLevel = setLogLevel;
|
|
//# sourceMappingURL=index.js.map
|