77 lines
2.5 KiB
JavaScript
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);
|
|
};
|