実行時にpackage.jsonを参照しないように (#5418)

* 実行時にpackage.jsonを参照しないように

* nodeinfo

* move meta.json

* add dummy

* lowercase
This commit is contained in:
MeiMei 2019-11-01 22:34:26 +09:00 committed by syuilo
parent 5b0dfa6130
commit 92af4401e2
10 changed files with 43 additions and 62 deletions

View file

@ -96,7 +96,7 @@ gulp.task('cleanall', gulp.parallel('clean', cb =>
)); ));
gulp.task('build:client:script', () => { gulp.task('build:client:script', () => {
const client = require('./built/client/meta.json'); const client = require('./built/meta.json');
return gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js']) return gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js'])
.pipe(replace('VERSION', JSON.stringify(client.version))) .pipe(replace('VERSION', JSON.stringify(client.version)))
.pipe(replace('ENV', JSON.stringify(env))) .pipe(replace('ENV', JSON.stringify(env)))

View file

@ -1,8 +1,8 @@
import * as program from 'commander'; import * as program from 'commander';
import * as pkg from '../package.json'; import config from './config';
program program
.version(pkg.version) .version(config.version)
.option('--no-daemons', 'Disable daemon processes (for debbuging)') .option('--no-daemons', 'Disable daemon processes (for debbuging)')
.option('--disable-clustering', 'Disable clustering') .option('--disable-clustering', 'Disable clustering')
.option('--only-server', 'Run server only (without job queue processing)') .option('--only-server', 'Run server only (without job queue processing)')

View file

@ -8,7 +8,6 @@ import Logger from '../services/logger';
import loadConfig from '../config/load'; import loadConfig from '../config/load';
import { Config } from '../config/types'; import { Config } from '../config/types';
import { lessThan } from '../prelude/array'; import { lessThan } from '../prelude/array';
import * as pkg from '../../package.json';
import { program } from '../argv'; import { program } from '../argv';
import { showMachineInfo } from '../misc/show-machine-info'; import { showMachineInfo } from '../misc/show-machine-info';
import { initDb } from '../db/postgre'; import { initDb } from '../db/postgre';
@ -16,10 +15,10 @@ import { initDb } from '../db/postgre';
const logger = new Logger('core', 'cyan'); const logger = new Logger('core', 'cyan');
const bootLogger = logger.createSubLogger('boot', 'magenta', false); const bootLogger = logger.createSubLogger('boot', 'magenta', false);
function greet() { function greet(config: Config) {
if (!program.quiet) { if (!program.quiet) {
//#region Misskey logo //#region Misskey logo
const v = `v${pkg.version}`; const v = `v${config.version}`;
console.log(' _____ _ _ '); console.log(' _____ _ _ ');
console.log(' | |_|___ ___| |_ ___ _ _ '); console.log(' | |_|___ ___| |_ ___ _ _ ');
console.log(' | | | | |_ -|_ -| \'_| -_| | |'); console.log(' | | | | |_ -|_ -| \'_| -_| | |');
@ -35,21 +34,21 @@ function greet() {
} }
bootLogger.info('Welcome to Misskey!'); bootLogger.info('Welcome to Misskey!');
bootLogger.info(`Misskey v${pkg.version}`, null, true); bootLogger.info(`Misskey v${config.version}`, null, true);
} }
/** /**
* Init master process * Init master process
*/ */
export async function masterMain() { export async function masterMain() {
greet();
let config!: Config; let config!: Config;
try { try {
// initialize app // initialize app
config = await init(); config = await init();
greet(config);
if (config.port == null || Number.isNaN(config.port)) { if (config.port == null || Number.isNaN(config.port)) {
bootLogger.error('The port is not configured. Please configure port.', null, true); bootLogger.error('The port is not configured. Please configure port.', null, true);
process.exit(1); process.exit(1);

View file

@ -5,7 +5,7 @@
import * as fs from 'fs'; import * as fs from 'fs';
import * as yaml from 'js-yaml'; import * as yaml from 'js-yaml';
import { Source, Mixin } from './types'; import { Source, Mixin } from './types';
import * as pkg from '../../package.json'; import * as meta from '../meta.json';
/** /**
* Path of configuration directory * Path of configuration directory
@ -30,6 +30,7 @@ export default function load() {
config.port = config.port || parseInt(process.env.PORT || '', 10); config.port = config.port || parseInt(process.env.PORT || '', 10);
mixin.version = meta.version;
mixin.host = url.host; mixin.host = url.host;
mixin.hostname = url.hostname; mixin.hostname = url.hostname;
mixin.scheme = url.protocol.replace(/:$/, ''); mixin.scheme = url.protocol.replace(/:$/, '');
@ -38,7 +39,7 @@ export default function load() {
mixin.apiUrl = `${mixin.scheme}://${mixin.host}/api`; mixin.apiUrl = `${mixin.scheme}://${mixin.host}/api`;
mixin.authUrl = `${mixin.scheme}://${mixin.host}/auth`; mixin.authUrl = `${mixin.scheme}://${mixin.host}/auth`;
mixin.driveUrl = `${mixin.scheme}://${mixin.host}/files`; mixin.driveUrl = `${mixin.scheme}://${mixin.host}/files`;
mixin.userAgent = `Misskey/${pkg.version} (${config.url})`; mixin.userAgent = `Misskey/${meta.version} (${config.url})`;
if (config.autoAdmin == null) config.autoAdmin = false; if (config.autoAdmin == null) config.autoAdmin = false;

View file

@ -58,6 +58,7 @@ export type Source = {
* Misskeyが自動的に() * Misskeyが自動的に()
*/ */
export type Mixin = { export type Mixin = {
version: string;
host: string; host: string;
hostname: string; hostname: string;
scheme: string; scheme: string;

3
src/meta.json Normal file
View file

@ -0,0 +1,3 @@
{
"version": "unknown"
}

View file

@ -3,7 +3,6 @@ import * as os from 'os';
import config from '../../../config'; import config from '../../../config';
import define from '../define'; import define from '../define';
import { fetchMeta } from '../../../misc/fetch-meta'; import { fetchMeta } from '../../../misc/fetch-meta';
import * as pkg from '../../../../package.json';
import { Emojis } from '../../../models'; import { Emojis } from '../../../models';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
import redis from '../../../db/redis'; import redis from '../../../db/redis';
@ -36,7 +35,7 @@ export const meta = {
type: 'string' as const, type: 'string' as const,
optional: false as const, nullable: false as const, optional: false as const, nullable: false as const,
description: 'The version of Misskey of this instance.', description: 'The version of Misskey of this instance.',
example: pkg.version example: config.version
}, },
name: { name: {
type: 'string' as const, type: 'string' as const,
@ -114,7 +113,7 @@ export default define(meta, async (ps, me) => {
maintainerName: instance.maintainerName, maintainerName: instance.maintainerName,
maintainerEmail: instance.maintainerEmail, maintainerEmail: instance.maintainerEmail,
version: pkg.version, version: config.version,
name: instance.name, name: instance.name,
uri: config.url, uri: config.url,

View file

@ -2,7 +2,6 @@ import * as Router from '@koa/router';
import config from '../config'; import config from '../config';
import { fetchMeta } from '../misc/fetch-meta'; import { fetchMeta } from '../misc/fetch-meta';
// import User from '../models/user'; // import User from '../models/user';
import { name as softwareName, version, repository } from '../../package.json';
// import Note from '../models/note'; // import Note from '../models/note';
const router = new Router(); const router = new Router();
@ -20,27 +19,7 @@ export const links = [/* (awaiting release) {
const nodeinfo2 = async () => { const nodeinfo2 = async () => {
const [ const [
{ meta,
name,
description,
maintainerName,
maintainerEmail,
langs,
ToSUrl,
repositoryUrl,
feedbackUrl,
announcements,
disableRegistration,
disableLocalTimeline,
disableGlobalTimeline,
enableRecaptcha,
maxNoteTextLength,
enableTwitterIntegration,
enableGithubIntegration,
enableDiscordIntegration,
enableEmail,
enableServiceWorker
},
// total, // total,
// activeHalfyear, // activeHalfyear,
// activeMonth, // activeMonth,
@ -57,43 +36,43 @@ const nodeinfo2 = async () => {
return { return {
software: { software: {
name: softwareName, name: 'misskey',
version, version: config.version,
repository: repository.url repository: meta.repositoryUrl,
}, },
protocols: ['activitypub'], protocols: ['activitypub'],
services: { services: {
inbound: [] as string[], inbound: [] as string[],
outbound: ['atom1.0', 'rss2.0'] outbound: ['atom1.0', 'rss2.0']
}, },
openRegistrations: !disableRegistration, openRegistrations: !meta.disableRegistration,
usage: { usage: {
users: {} // { total, activeHalfyear, activeMonth }, users: {} // { total, activeHalfyear, activeMonth },
// localPosts, // localPosts,
// localComments // localComments
}, },
metadata: { metadata: {
name, name: meta.name,
description, description: meta.description,
maintainer: { maintainer: {
name: maintainerName, name: meta.maintainerName,
email: maintainerEmail email: meta.maintainerEmail
}, },
langs, langs: meta.langs,
ToSUrl, ToSUrl: meta.ToSUrl,
repositoryUrl, repositoryUrl: meta.repositoryUrl,
feedbackUrl, feedbackUrl: meta.feedbackUrl,
announcements, announcements: meta.announcements,
disableRegistration, disableRegistration: meta.disableRegistration,
disableLocalTimeline, disableLocalTimeline: meta.disableLocalTimeline,
disableGlobalTimeline, disableGlobalTimeline: meta.disableGlobalTimeline,
enableRecaptcha, enableRecaptcha: meta.enableRecaptcha,
maxNoteTextLength, maxNoteTextLength: meta.maxNoteTextLength,
enableTwitterIntegration, enableTwitterIntegration: meta.enableTwitterIntegration,
enableGithubIntegration, enableGithubIntegration: meta.enableGithubIntegration,
enableDiscordIntegration, enableDiscordIntegration: meta.enableDiscordIntegration,
enableEmail, enableEmail: meta.enableEmail,
enableServiceWorker enableServiceWorker: meta.enableServiceWorker
} }
}; };
}; };

View file

@ -13,7 +13,6 @@ import * as views from 'koa-views';
import docs from './docs'; import docs from './docs';
import packFeed from './feed'; import packFeed from './feed';
import { fetchMeta } from '../../misc/fetch-meta'; import { fetchMeta } from '../../misc/fetch-meta';
import * as pkg from '../../../package.json';
import { genOpenapiSpec } from '../api/openapi/gen-spec'; import { genOpenapiSpec } from '../api/openapi/gen-spec';
import config from '../../config'; import config from '../../config';
import { Users, Notes, Emojis, UserProfiles, Pages } from '../../models'; import { Users, Notes, Emojis, UserProfiles, Pages } from '../../models';
@ -257,7 +256,7 @@ router.get('/info', async ctx => {
where: { host: null } where: { host: null }
}); });
await ctx.render('info', { await ctx.render('info', {
version: pkg.version, version: config.version,
machine: os.hostname(), machine: os.hostname(),
os: os.platform(), os: os.platform(),
node: process.version, node: process.version,

View file

@ -130,7 +130,7 @@ module.exports = {
'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development') 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development')
}), }),
new WebpackOnBuildPlugin((stats: any) => { new WebpackOnBuildPlugin((stats: any) => {
fs.writeFileSync('./built/client/meta.json', JSON.stringify({ version: meta.version }), 'utf-8'); fs.writeFileSync('./built/meta.json', JSON.stringify({ version: meta.version }), 'utf-8');
fs.mkdirSync('./built/client/assets/locales', { recursive: true }); fs.mkdirSync('./built/client/assets/locales', { recursive: true });