* Use grafana toolkit template for building plugin * Fix linter and type errors * Update styles building * Fix sass deprecation warning * Remove empty js files produced by webpack building sass * Fix signing script * Replace classnames with cx * Fix data source config page * Use custom webpack config instead of overriding original one * Use gpx_ prefix for plugin executable * Remove unused configs * Roll back react hooks dependencies usage * Move plugin-specific ts config to root config file * Temporary do not use rst2html for function description tooltip * Remove unused code * remove unused dependencies * update react table dependency * Migrate tests to typescript * remove unused dependencies * Remove old webpack configs * Add sign target to makefile * Add magefile * Update CI test job * Update go packages * Update build instructions * Downgrade go version to 1.18 * Fix go version in ci * Fix metric picker * Add comment to webpack config * remove angular mocks * update bra config * Rename datasource-zabbix to datasource (fix mage build) * Add instructions for building backend with mage * Fix webpack targets * Fix ci backend tests * Add initial e2e tests * Fix e2e ci tests * Update docker compose for cypress tests * build grafana docker image * Fix docker stop task * CI: add Grafana compatibility check
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import util from 'util';
|
|
import glob from 'glob';
|
|
import { SOURCE_DIR } from './constants';
|
|
|
|
const globAsync = util.promisify(glob);
|
|
|
|
export function getPackageJson() {
|
|
return require(path.resolve(process.cwd(), 'package.json'));
|
|
}
|
|
|
|
export function getPluginId() {
|
|
const { id } = require(path.resolve(process.cwd(), `${SOURCE_DIR}/plugin.json`));
|
|
|
|
return id;
|
|
}
|
|
|
|
export function hasReadme() {
|
|
return fs.existsSync(path.resolve(process.cwd(), SOURCE_DIR, 'README.md'));
|
|
}
|
|
|
|
export async function getEntries(): Promise<Record<string, string>> {
|
|
const parent = '..';
|
|
const pluginsJson = await globAsync('**/src/**/plugin.json');
|
|
|
|
const plugins = await Promise.all(
|
|
pluginsJson.map((pluginJson) => {
|
|
const folder = path.dirname(pluginJson);
|
|
return globAsync(`${folder}/module.{ts,tsx,js}`);
|
|
})
|
|
);
|
|
|
|
const entries = plugins.reduce((result, modules) => {
|
|
return modules.reduce((result, module) => {
|
|
const pluginPath = path.resolve(path.dirname(module), parent);
|
|
const pluginName = path.basename(pluginPath);
|
|
const entryName = plugins.length > 1 ? `${pluginName}/module` : 'module';
|
|
|
|
result[entryName] = path.join(parent, module);
|
|
return result;
|
|
}, result);
|
|
}, {});
|
|
return entries;
|
|
}
|