From 24332c3d240adfd7f49754331f1ef4bfeea3f73c Mon Sep 17 00:00:00 2001 From: Sam Lord Date: Wed, 16 Jun 2021 09:36:58 +0100 Subject: [PATCH] Replaced ghost-version.js with @tryghost/version no issue Part of the effort to break up the Ghost codebase into smaller, decoupled modules. --- MigratorConfig.js | 2 +- core/boot.js | 2 +- core/server/data/exporter/exporter.js | 2 +- core/server/lib/ghost-version.js | 27 ------- core/server/lib/request.js | 2 +- core/server/services/members/middleware.js | 2 +- core/server/services/members/service.js | 2 +- core/server/services/notifications/index.js | 2 +- core/server/services/public-config/config.js | 2 +- core/server/services/public-config/site.js | 2 +- core/server/update-check.js | 2 +- .../web/parent/middleware/ghost-locals.js | 2 +- package.json | 1 + test/regression/exporter/exporter_spec.js | 2 +- test/unit/lib/ghost-version_spec.js | 72 ------------------- yarn.lock | 8 +++ 16 files changed, 21 insertions(+), 111 deletions(-) delete mode 100644 core/server/lib/ghost-version.js delete mode 100644 test/unit/lib/ghost-version_spec.js diff --git a/MigratorConfig.js b/MigratorConfig.js index 1370dd806a..738a3bb5a6 100644 --- a/MigratorConfig.js +++ b/MigratorConfig.js @@ -1,5 +1,5 @@ const config = require('./core/shared/config'); -const ghostVersion = require('./core/server/lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); /** * knex-migrator can be used via CLI or within the application diff --git a/core/boot.js b/core/boot.js index ea591693a9..5cd6908ece 100644 --- a/core/boot.js +++ b/core/boot.js @@ -267,7 +267,7 @@ async function bootGhost() { // Version is required by sentry & Migration config & so is fundamental to booting // However, it involves reading package.json so its slow & it's here for visibility on that slowness debug('Begin: Load version info'); - require('./server/lib/ghost-version'); + require('@tryghost/version'); debug('End: Load version info'); // Sentry must be initialised early, but requires config diff --git a/core/server/data/exporter/exporter.js b/core/server/data/exporter/exporter.js index 92dbd5092c..cf56980c58 100644 --- a/core/server/data/exporter/exporter.js +++ b/core/server/data/exporter/exporter.js @@ -2,7 +2,7 @@ const _ = require('lodash'); const Promise = require('bluebird'); const db = require('../../data/db'); const commands = require('../schema').commands; -const ghostVersion = require('../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const i18n = require('../../../shared/i18n'); const errors = require('@tryghost/errors'); diff --git a/core/server/lib/ghost-version.js b/core/server/lib/ghost-version.js deleted file mode 100644 index 595b0c12fa..0000000000 --- a/core/server/lib/ghost-version.js +++ /dev/null @@ -1,27 +0,0 @@ -const path = require('path'); -const semver = require('semver'); -const rootUtils = require('@tryghost/root-utils'); -const packageInfo = require(path.join(rootUtils.getProcessRoot(), 'package.json')); -const version = packageInfo.version; -const plainVersion = version.match(/^(\d+\.)?(\d+\.)?(\d+)/)[0]; - -let _private = {}; - -_private.compose = function compose(type) { - switch (type) { - case 'pre': - return plainVersion + '-' + semver.prerelease(version).join('.'); - default: - return version; - } -}; - -// major.minor -module.exports.safe = version.match(/^(\d+\.)?(\d+)/)[0]; - -// major.minor.patch-{prerelease} -module.exports.full = semver.prerelease(version) ? _private.compose('pre') : plainVersion; - -// original string in package.json (can contain pre-release and build suffix) -module.exports.original = version; - diff --git a/core/server/lib/request.js b/core/server/lib/request.js index c1f9042b23..60a74419fb 100644 --- a/core/server/lib/request.js +++ b/core/server/lib/request.js @@ -2,7 +2,7 @@ const got = require('got'); const _ = require('lodash'); const validator = require('@tryghost/validator'); const errors = require('@tryghost/errors'); -const ghostVersion = require('./ghost-version'); +const ghostVersion = require('@tryghost/version'); const defaultOptions = { headers: { diff --git a/core/server/services/members/middleware.js b/core/server/services/members/middleware.js index 7284c446f3..2c352b77ec 100644 --- a/core/server/services/members/middleware.js +++ b/core/server/services/members/middleware.js @@ -2,7 +2,7 @@ const _ = require('lodash'); const logging = require('@tryghost/logging'); const membersService = require('./service'); const urlUtils = require('../../../shared/url-utils'); -const ghostVersion = require('../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const settingsCache = require('../settings/cache'); const {formattedMemberResponse} = require('./utils'); const labsService = require('../labs'); diff --git a/core/server/services/members/service.js b/core/server/services/members/service.js index 5825494bbc..15cd1db06f 100644 --- a/core/server/services/members/service.js +++ b/core/server/services/members/service.js @@ -10,7 +10,7 @@ const logging = require('@tryghost/logging'); const urlUtils = require('../../../shared/url-utils'); const settingsCache = require('../settings/cache'); const config = require('../../../shared/config'); -const ghostVersion = require('../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const _ = require('lodash'); const membersConfig = new MembersConfigProvider({ diff --git a/core/server/services/notifications/index.js b/core/server/services/notifications/index.js index 2dda1dfba2..50759b589c 100644 --- a/core/server/services/notifications/index.js +++ b/core/server/services/notifications/index.js @@ -1,6 +1,6 @@ const settingsCache = require('../settings/cache'); const i18n = require('../../../shared/i18n'); -const ghostVersion = require('../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const Notifications = require('./notifications'); module.exports.notifications = new Notifications({settingsCache, i18n, ghostVersion}); diff --git a/core/server/services/public-config/config.js b/core/server/services/public-config/config.js index 3f761c30a3..8a05f09cf0 100644 --- a/core/server/services/public-config/config.js +++ b/core/server/services/public-config/config.js @@ -1,7 +1,7 @@ const {isPlainObject} = require('lodash'); const config = require('../../../shared/config'); const labs = require('../labs'); -const ghostVersion = require('../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); module.exports = function getConfigProperties() { const configProperties = { diff --git a/core/server/services/public-config/site.js b/core/server/services/public-config/site.js index 52cc9f8103..aebec42594 100644 --- a/core/server/services/public-config/site.js +++ b/core/server/services/public-config/site.js @@ -1,4 +1,4 @@ -const ghostVersion = require('../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const settingsCache = require('../settings/cache'); const config = require('../../../shared/config'); const urlUtils = require('../../../shared/url-utils'); diff --git a/core/server/update-check.js b/core/server/update-check.js index f2a374e67b..1b76ad5ee6 100644 --- a/core/server/update-check.js +++ b/core/server/update-check.js @@ -8,7 +8,7 @@ const urlUtils = require('./../shared/url-utils'); const i18n = require('../shared/i18n'); const logging = require('@tryghost/logging'); const request = require('./lib/request'); -const ghostVersion = require('./lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const UpdateCheckService = require('@tryghost/update-check-service'); const ghostMailer = new GhostMailer(); diff --git a/core/server/web/parent/middleware/ghost-locals.js b/core/server/web/parent/middleware/ghost-locals.js index 6d66c359f1..05abddf87e 100644 --- a/core/server/web/parent/middleware/ghost-locals.js +++ b/core/server/web/parent/middleware/ghost-locals.js @@ -1,4 +1,4 @@ -const ghostVersion = require('../../../lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const bridge = require('../../../../bridge'); // ### GhostLocals Middleware diff --git a/package.json b/package.json index b6a1768c2f..0eea135651 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "@tryghost/update-check-service": "0.1.0", "@tryghost/url-utils": "1.1.4", "@tryghost/validator": "0.1.0", + "@tryghost/version": "0.1.0", "@tryghost/vhost-middleware": "1.0.15", "@tryghost/zip": "1.1.14", "amperize": "0.6.1", diff --git a/test/regression/exporter/exporter_spec.js b/test/regression/exporter/exporter_spec.js index 86b5d36260..7e4074043d 100644 --- a/test/regression/exporter/exporter_spec.js +++ b/test/regression/exporter/exporter_spec.js @@ -3,7 +3,7 @@ const sinon = require('sinon'); const testUtils = require('../../utils'); const _ = require('lodash'); -const ghostVersion = require('../../../core/server/lib/ghost-version'); +const ghostVersion = require('@tryghost/version'); const {exportedBodyLatest} = require('../../utils/fixtures/export/body-generator'); // Stuff we are testing diff --git a/test/unit/lib/ghost-version_spec.js b/test/unit/lib/ghost-version_spec.js deleted file mode 100644 index 92509a8332..0000000000 --- a/test/unit/lib/ghost-version_spec.js +++ /dev/null @@ -1,72 +0,0 @@ -const should = require('should'); -const rewire = require('rewire'); -const mockUtils = require('../../utils/mocks'); - -let ghostVersionUtils; -let version; - -describe('Utils: Ghost Version', function () { - const beforeEachIt = function be() { - mockUtils.modules.mockNonExistentModule(/package\.json/, {version: version}); - - ghostVersionUtils = rewire('../../../core/server/lib/ghost-version'); - }; - - afterEach(function () { - mockUtils.modules.unmockNonExistentModule(/package\.json/); - }); - - it('default', function () { - version = '1.10.0'; - beforeEachIt(); - - ghostVersionUtils.full.should.eql(version); - ghostVersionUtils.original.should.eql(version); - ghostVersionUtils.safe.should.eql('1.10'); - }); - - it('pre-release', function () { - version = '1.11.1-beta'; - beforeEachIt(); - - ghostVersionUtils.full.should.eql(version); - ghostVersionUtils.original.should.eql(version); - ghostVersionUtils.safe.should.eql('1.11'); - }); - - it('pre-release .1', function () { - version = '1.11.1-alpha.1'; - beforeEachIt(); - - ghostVersionUtils.full.should.eql(version); - ghostVersionUtils.original.should.eql(version); - ghostVersionUtils.safe.should.eql('1.11'); - }); - - it('build', function () { - version = '1.11.1+build'; - beforeEachIt(); - - ghostVersionUtils.full.should.eql('1.11.1'); - ghostVersionUtils.original.should.eql(version); - ghostVersionUtils.safe.should.eql('1.11'); - }); - - it('mixed', function () { - version = '1.11.1-pre+build.1'; - beforeEachIt(); - - ghostVersionUtils.full.should.eql('1.11.1-pre'); - ghostVersionUtils.original.should.eql(version); - ghostVersionUtils.safe.should.eql('1.11'); - }); - - it('mixed 1', function () { - version = '1.11.1-beta.12+build.2'; - beforeEachIt(); - - ghostVersionUtils.full.should.eql('1.11.1-beta.12'); - ghostVersionUtils.original.should.eql(version); - ghostVersionUtils.safe.should.eql('1.11'); - }); -}); diff --git a/yarn.lock b/yarn.lock index 35002f88c0..e7e1123122 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1055,6 +1055,14 @@ moment-timezone "0.5.23" validator "7.2.0" +"@tryghost/version@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@tryghost/version/-/version-0.1.0.tgz#2d1ec5dd19206a5f7ec0f283588fa716980c666c" + integrity sha512-7IvYLn0IFRFNK61IeHLMHb1cPDbD/zfRMlJqUe9kLTFRlLG6D29390VnkXWHC/W+K4frXdP1kfAglXXfOsunmg== + dependencies: + "@tryghost/root-utils" "^0.3.0" + semver "^7.3.5" + "@tryghost/vhost-middleware@1.0.15": version "1.0.15" resolved "https://registry.yarnpkg.com/@tryghost/vhost-middleware/-/vhost-middleware-1.0.15.tgz#6f5e7e018fe6d9b09b0f2b7f5294f8133398cbd1"