Skip to content

Commit c143a85

Browse files
committed
[FEATURE] Log CLI version when using --verbose option
1 parent a1d5281 commit c143a85

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

bin/ui5.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ setTimeout(() => {
4848
// Explicitly set CLI version as the yargs default might
4949
// be wrong in case a local CLI installation is used
5050
// Also add CLI location
51-
cli.version(`${pkg.version} (from ${__filename})`);
51+
const version = `${pkg.version} (from ${__filename})`;
52+
require("../lib/cli/version").set(version);
53+
cli.version(version);
5254

5355
// Explicitly set script name to prevent windows from displaying "ui5.js"
5456
cli.scriptName("ui5");

lib/cli/middlewares/logger.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ function init(argv) {
1313
}
1414
if (argv.verbose) {
1515
logger.setLevel("verbose");
16+
const version = require("../version").get();
17+
logger.getLogger("cli:middlewares:base").verbose(`using @ui5/cli version ${version}`);
1618
logger.getLogger("cli:middlewares:base").verbose(`using node version ${process.version}`);
1719
}
1820
return logger;

lib/cli/version.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
let version;
2+
3+
// This module holds the CLI's version information (set via ui5.js) for later retrieval (e.g. from middlewares/logger)
4+
module.exports = {
5+
set: function(v) {
6+
version = v;
7+
},
8+
get: function() {
9+
return version;
10+
}
11+
};

test/lib/cli/middlewares/logger.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,17 @@ test.serial("retrieves logger middleware if verbose or loglevel are set", (t) =>
1919
const loggerInstance = loggerMiddleware.init({verbose: true});
2020
t.deepEqual(Object.keys(loggerInstance), Object.keys(logger), "Logger is used as middleware");
2121
});
22+
23+
const path = require("path");
24+
const execa = require("execa");
25+
const pkg = require("../../../../package.json");
26+
const ui5Cli = path.join(__dirname, "..", "..", "..", "..", "bin", "ui5.js");
27+
const ui5 = (args, options = {}) => execa(ui5Cli, args, options);
28+
29+
test("ui5 --verbose", async (t) => {
30+
// Using "versions" as a command, as the --verbose flag can't be used standalone
31+
const {stderr} = await ui5(["versions", "--verbose"]);
32+
t.is(stderr,
33+
`verb cli:middlewares:base using @ui5/cli version ${pkg.version} (from ${ui5Cli})\n`+
34+
`verb cli:middlewares:base using node version ${process.version}`);
35+
});

0 commit comments

Comments
 (0)