strapi-plugin-config-sync/server/bootstrap.js

77 lines
2.5 KiB
JavaScript

'use strict';
import fs from 'fs';
import ConfigType from './config/type';
import defaultTypes from './config/types';
import { logMessage } from './utils';
/**
* An asynchronous bootstrap function that runs before
* your application gets started.
*
* This gives you an opportunity to set up your data model,
* run jobs, or perform some special logic.
*
* See more details here: https://strapi.io/documentation/v3.x/concepts/configurations.html#bootstrap
*/
export default async () => {
// Register config types.
const registerTypes = () => {
const types = {};
// The default types provided by the plugin.
defaultTypes(strapi).map((type) => {
if (!strapi.config.get('plugin::config-sync.excludedTypes').includes(type.configName)) {
types[type.configName] = new ConfigType(type);
}
});
// The types provided by other plugins.
strapi.plugin('config-sync').pluginTypes.map((type) => {
if (!strapi.config.get('plugin::config-sync.excludedTypes').includes(type.configName)) {
types[type.configName] = new ConfigType(type);
}
});
// The custom types provided by the user.
strapi.config.get('plugin::config-sync.customTypes').map((type) => {
if (!strapi.config.get('plugin::config-sync.excludedTypes').includes(type.configName)) {
types[type.configName] = new ConfigType(type);
}
});
return types;
};
strapi.plugin('config-sync').types = registerTypes();
// Import on bootstrap.
if (strapi.config.get('plugin::config-sync.importOnBootstrap')) {
if (strapi.server.app.env === 'development') {
strapi.log.warn(logMessage(`You can't use the 'importOnBootstrap' setting in the development env.`));
} else if (process.env.CONFIG_SYNC_CLI === 'true') {
strapi.log.warn(logMessage(`The 'importOnBootstrap' setting was ignored because Strapi was started from the config-sync CLI itself.`));
} else if (fs.existsSync(strapi.config.get('plugin::config-sync.syncDir'))) {
await strapi.plugin('config-sync').service('main').importAllConfig();
}
}
// Register permission actions.
const actions = [
{
section: 'plugins',
displayName: 'Access the plugin settings',
uid: 'settings.read',
pluginName: 'config-sync',
},
{
section: 'plugins',
displayName: 'Menu link to plugin settings',
uid: 'menu-link',
pluginName: 'config-sync',
},
];
await strapi.admin.services.permission.actionProvider.registerMany(actions);
};