@antora/cli 3.0.0-beta.1 → 3.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/cli.js +24 -11
  2. package/lib/index.js +14 -0
  3. package/package.json +6 -6
package/lib/cli.js CHANGED
@@ -1,11 +1,8 @@
1
- #!/usr/bin/env node
2
-
3
1
  'use strict'
4
2
 
5
3
  const buildPlaybook = require('@antora/playbook-builder')
6
4
  const cli = require('./commander')
7
5
  const convict = require('@antora/playbook-builder/lib/solitary-convict')
8
- const { configureLogger, getLogger, finalizeLogger } = require('@antora/logger')
9
6
  const ospath = require('path')
10
7
  const userRequire = require('@antora/user-require-helper')
11
8
 
@@ -17,11 +14,13 @@ async function run (argv = process.argv) {
17
14
  }
18
15
 
19
16
  function exitWithError (err, opts, msg = undefined) {
17
+ const { getLogger, configureLogger } = requireLogger()
20
18
  if (!msg) msg = err.message || err
21
19
  const name = msg.startsWith('asciidoctor: FAILED: ') ? (msg = msg.slice(21)) && 'asciidoctor' : cli.name()
22
- const logger = getLogger(null)
23
- ? getLogger(name)
24
- : configureLogger({ format: 'pretty', level: opts.silent ? 'silent' : 'fatal', failureLevel: 'fatal' }).get(name)
20
+ if (!getLogger(null)) {
21
+ configureLogger({ format: 'pretty', level: opts.silent ? 'silent' : 'fatal', failureLevel: 'fatal' })
22
+ }
23
+ const logger = getLogger(name)
25
24
  if (opts.stacktrace) {
26
25
  let loc, stack
27
26
  if ((stack = err.backtrace)) {
@@ -47,7 +46,9 @@ function exitWithError (err, opts, msg = undefined) {
47
46
  }
48
47
 
49
48
  function exit () {
50
- return finalizeLogger().then((failOnExit) => process.exit(failOnExit ? 1 : process.exitCode))
49
+ return requireLogger()
50
+ .finalizeLogger()
51
+ .then((failOnExit) => process.exit(failOnExit ? 1 : process.exitCode))
51
52
  }
52
53
 
53
54
  function getTTYColumns () {
@@ -58,6 +59,16 @@ function outputError (str, write) {
58
59
  write(str.replace(/^error: /, cli.name() + ': '))
59
60
  }
60
61
 
62
+ function requireLogger (fromPath = undefined, moduleName = '@antora/logger') {
63
+ try {
64
+ return (
65
+ requireLogger.cache ||
66
+ (requireLogger.cache = fromPath ? userRequire(moduleName, { paths: [fromPath] }) : require(moduleName))
67
+ )
68
+ } catch {}
69
+ return fromPath && (requireLogger.cache = require(moduleName))
70
+ }
71
+
61
72
  cli
62
73
  .allowExcessArguments(false)
63
74
  .configureOutput({ getOutHelpWidth: getTTYColumns, getErrHelpWidth: getTTYColumns, outputError })
@@ -118,21 +129,23 @@ cli
118
129
  }
119
130
  }
120
131
  const args = command.optionArgs.concat('--playbook', playbookFile)
121
- let playbook
132
+ let generator, generatorPath, playbook
122
133
  try {
123
134
  playbook = buildPlaybook(args, process.env, buildPlaybook.defaultSchema, (config) => {
124
135
  try {
125
- configureLogger(config.getModel('runtime.log'), playbookDir)
136
+ generatorPath = userRequire.resolve((generator = config.get('antora.generator')), userRequireContext)
137
+ } catch {}
138
+ try {
139
+ requireLogger(generatorPath).configureLogger(config.getModel('runtime.log'), playbookDir)
126
140
  } catch {}
127
141
  })
128
142
  } catch (err) {
129
143
  return exitWithError(err, errorOpts)
130
144
  }
131
- const generator = playbook.antora.generator
132
145
  let generateSite
133
146
  try {
134
147
  generateSite =
135
- (generateSite = userRequire(generator, userRequireContext)).length === 1
148
+ (generateSite = require(generatorPath || userRequire.resolve(generator, userRequireContext))).length === 1
136
149
  ? generateSite.bind(null, playbook)
137
150
  : generateSite.bind(null, args, process.env)
138
151
  } catch (err) {
package/lib/index.js ADDED
@@ -0,0 +1,14 @@
1
+ 'use strict'
2
+
3
+ /**
4
+ * The command line interface (CLI) for Antora.
5
+ *
6
+ * Provides a built-in set of commands to run Antora. The default command is
7
+ * generate. The generate command builds the specified playbook, configures the
8
+ * logger, then requires and invokes the generator function. When the generator
9
+ * function completes or fails, the generate command finalizes the logger and
10
+ * exits with the specified exit code.
11
+ *
12
+ * @namespace cli
13
+ */
14
+ module.exports = require('./cli')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antora/cli",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.2",
4
4
  "description": "The command line interface for Antora.",
5
5
  "license": "MPL-2.0",
6
6
  "author": "OpenDevise Inc. (https://opendevise.com)",
@@ -13,18 +13,18 @@
13
13
  "bugs": {
14
14
  "url": "https://gitlab.com/antora/antora/issues"
15
15
  },
16
- "main": "lib/cli.js",
16
+ "main": "lib/index.js",
17
17
  "bin": {
18
18
  "antora": "bin/antora"
19
19
  },
20
20
  "dependencies": {
21
- "@antora/logger": "3.0.0-beta.1",
22
- "@antora/playbook-builder": "3.0.0-beta.1",
21
+ "@antora/logger": "3.0.0-beta.2",
22
+ "@antora/playbook-builder": "3.0.0-beta.2",
23
23
  "@antora/user-require-helper": "~2.0",
24
24
  "commander": "~8.3"
25
25
  },
26
26
  "devDependencies": {
27
- "@antora/site-publisher": "3.0.0-beta.1",
27
+ "@antora/site-publisher": "3.0.0-beta.2",
28
28
  "convict": "~6.2",
29
29
  "kapok-js": "~0.10"
30
30
  },
@@ -43,5 +43,5 @@
43
43
  "static site",
44
44
  "web publishing"
45
45
  ],
46
- "gitHead": "7c5ef1ea93dd489af533c80a936c736013c41769"
46
+ "gitHead": "5cd3f9cc70622e465cb44daf1aa2035ed5a35f54"
47
47
  }