From 30a3ae25f7122ac5752b0da75c7f67e8eb83f2a4 Mon Sep 17 00:00:00 2001 From: Jeff Williams Date: Mon, 27 Sep 2021 16:45:46 -0700 Subject: [PATCH] refactor(jsdoc): remove `env.dirname` BREAKING CHANGE: no more `jsdoc/env.dirname` --- packages/jsdoc/cli.js | 5 ++--- packages/jsdoc/jsdoc.js | 8 -------- packages/jsdoc/lib/jsdoc/env.js | 8 -------- packages/jsdoc/test/helpers/jsdoc.js | 5 ++--- packages/jsdoc/test/specs/documentation/modules.js | 6 +++--- packages/jsdoc/test/specs/tags/overviewtag.js | 8 ++++---- 6 files changed, 11 insertions(+), 29 deletions(-) diff --git a/packages/jsdoc/cli.js b/packages/jsdoc/cli.js index ff05e678..32400150 100644 --- a/packages/jsdoc/cli.js +++ b/packages/jsdoc/cli.js @@ -42,10 +42,9 @@ module.exports = (() => { cli.setVersionInfo = () => { const env = dependencies.get('env'); + const packageJsonPath = path.join(require.main.path, 'package.json'); // allow this to throw--something is really wrong if we can't read our own package file - const info = JSON.parse( - stripBom(fs.readFileSync(path.join(env.dirname, 'package.json'), 'utf8')) - ); + const info = JSON.parse(stripBom(fs.readFileSync(packageJsonPath, 'utf8'))); const revision = new Date(parseInt(info.revision, 10)); env.version = { diff --git a/packages/jsdoc/jsdoc.js b/packages/jsdoc/jsdoc.js index 3efe770c..3d3a77a4 100755 --- a/packages/jsdoc/jsdoc.js +++ b/packages/jsdoc/jsdoc.js @@ -2,11 +2,9 @@ // initialize the environment for Node.js (() => { - const fs = require('fs'); const path = require('path'); let env; - let jsdocPath = __dirname; // Create a custom require method that adds `lib/jsdoc` and `node_modules` to the module // lookup path. This makes it possible to `require('jsdoc/foo')` from external templates and @@ -22,13 +20,7 @@ }); /* eslint-enable no-global-assign, no-redeclare */ - // resolve the path if it's a symlink - if (fs.statSync(jsdocPath).isSymbolicLink()) { - jsdocPath = path.resolve(path.dirname(jsdocPath), fs.readlinkSync(jsdocPath)); - } - env = require('./lib/jsdoc/env'); - env.dirname = jsdocPath; env.args = process.argv.slice(2); })(); diff --git a/packages/jsdoc/lib/jsdoc/env.js b/packages/jsdoc/lib/jsdoc/env.js index 5df4b79f..3529a2ed 100644 --- a/packages/jsdoc/lib/jsdoc/env.js +++ b/packages/jsdoc/lib/jsdoc/env.js @@ -31,14 +31,6 @@ module.exports = { */ conf: {}, - /** - * The absolute path to the base directory in which JSDoc is located. Set at startup. - * - * @private - * @type {string} - */ - dirname: null, - /** * The user's working directory at the time when JSDoc started running. * diff --git a/packages/jsdoc/test/helpers/jsdoc.js b/packages/jsdoc/test/helpers/jsdoc.js index eff0e5b1..f58a348f 100644 --- a/packages/jsdoc/test/helpers/jsdoc.js +++ b/packages/jsdoc/test/helpers/jsdoc.js @@ -34,9 +34,8 @@ const helpers = { }, getDocSetFromFile: (filename, parser, shouldValidate, augment) => { let doclets; - const env = jsdoc.deps.get('env'); - - const sourceCode = fs.readFileSync(path.join(env.dirname, filename), 'utf8'); + const packagePath = path.resolve(__dirname, '../..'); + const sourceCode = fs.readFileSync(path.join(packagePath, filename), 'utf8'); const testParser = parser || helpers.createParser(); handlers.attachTo(testParser); diff --git a/packages/jsdoc/test/specs/documentation/modules.js b/packages/jsdoc/test/specs/documentation/modules.js index 4c0d8b4d..3dd55764 100644 --- a/packages/jsdoc/test/specs/documentation/modules.js +++ b/packages/jsdoc/test/specs/documentation/modules.js @@ -13,7 +13,7 @@ describe('module names', () => { }); it('should create a name from the file path when no documented module name exists', () => { - const filename = path.resolve(env.dirname, 'test/fixtures/modules/data/mod-1.js'); + const filename = path.resolve(__dirname, '../../fixtures/modules/data/mod-1.js'); env.sourceFiles.push(filename); doclets = srcParser.parse(filename); @@ -44,10 +44,10 @@ describe('module names', () => { } it('should use the documented module name if available', () => { - const filename = 'test/fixtures/modules/data/mod-2.js'; + const filename = path.resolve(__dirname, '../../fixtures/modules/data/mod-2.js'); env.sourceFiles.push(filename); - doclets = srcParser.parse(path.normalize(path.join(env.dirname, filename))); + doclets = srcParser.parse(filename); expect(doclets.length).toBeGreaterThan(1); expect(doclets[0].longname).toBe('module:my/module/name'); diff --git a/packages/jsdoc/test/specs/tags/overviewtag.js b/packages/jsdoc/test/specs/tags/overviewtag.js index 5daf79bf..bb7bd840 100644 --- a/packages/jsdoc/test/specs/tags/overviewtag.js +++ b/packages/jsdoc/test/specs/tags/overviewtag.js @@ -21,7 +21,7 @@ describe('@overview tag', () => { }); it('When a file overview tag appears in a doclet, the name of the doclet should contain the path to the file.', () => { - const filename = path.resolve(env.dirname, 'test/fixtures/file.js'); + const filename = path.resolve(__dirname, '../../fixtures/file.js'); env.sourceFiles.push(filename); doclets = srcParser.parse(filename); @@ -30,10 +30,10 @@ describe('@overview tag', () => { }); it('The name and longname should be equal', () => { - const filename = 'test/fixtures/file.js'; + const filename = path.resolve(__dirname, '../../fixtures/file.js'); env.sourceFiles.push(filename); - doclets = srcParser.parse(path.normalize(path.join(env.dirname, filename))); + doclets = srcParser.parse(filename); expect(doclets[0].name).toBe(doclets[0].longname); }); @@ -47,7 +47,7 @@ describe('@overview tag', () => { let doclet; let docletMeta; let docletSrc; - let fakePath = path.resolve(path.join(env.dirname, '..', 'somefile.js')); + let fakePath = path.resolve(__dirname, 'somefile.js'); // set up the environment to reflect the fake filepath env.opts._ = [fakePath];