diff --git a/packages/grafana-toolkit/bin/grafana-toolkit.dist.js b/packages/grafana-toolkit/bin/grafana-toolkit.dist.js index d50c5fc54f5..5af2295ed75 100755 --- a/packages/grafana-toolkit/bin/grafana-toolkit.dist.js +++ b/packages/grafana-toolkit/bin/grafana-toolkit.dist.js @@ -2,7 +2,7 @@ const fs = require('fs'); -entrypoint = () => { +const entrypoint = () => { const defaultEntryPoint = '../src/cli/index.js'; const toolkitDirectory = `${process.env['PWD']}/node_modules/@grafana/toolkit`; @@ -25,4 +25,4 @@ entrypoint = () => { return defaultEntryPoint; }; -require(entrypoint()).run(); +require(entrypoint()); diff --git a/packages/grafana-toolkit/bin/grafana-toolkit.js b/packages/grafana-toolkit/bin/grafana-toolkit.js index 9d1b79dc5d1..1442f629c2a 100755 --- a/packages/grafana-toolkit/bin/grafana-toolkit.js +++ b/packages/grafana-toolkit/bin/grafana-toolkit.js @@ -1,15 +1,12 @@ #!/usr/bin/env node -var path = require('path') ; +var path = require('path'); // This bin is used for cli executed internally - var tsProjectPath = path.resolve(__dirname, '../tsconfig.json'); - require('ts-node').register({ project: tsProjectPath, - transpileOnly: true + transpileOnly: true, }); - require('../src/cli/index.ts').run(true); diff --git a/packages/grafana-toolkit/src/config/circleci/config.yml b/packages/grafana-toolkit/config/circleci/config.yml similarity index 96% rename from packages/grafana-toolkit/src/config/circleci/config.yml rename to packages/grafana-toolkit/config/circleci/config.yml index c9558813d36..beef9dcca1e 100644 --- a/packages/grafana-toolkit/src/config/circleci/config.yml +++ b/packages/grafana-toolkit/config/circleci/config.yml @@ -5,6 +5,9 @@ aliases: - &filter-only-master branches: only: master + - &filter-only-release + branches: + only: /^v[1-9]*[0-9]+\.[1-9]*[0-9]+\.x$/ workflows: version: 2 @@ -24,11 +27,11 @@ workflows: type: approval requires: - test_integration - filters: *filter-only-master + filters: *filter-only-release - publish_github_release: requires: - approve_release - filters: *filter-only-master + filters: *filter-only-release executors: default_exec: # declares a reusable executor diff --git a/packages/grafana-toolkit/src/cli/index.ts b/packages/grafana-toolkit/src/cli/index.ts index c06d874b3e0..2a3ad860cb7 100644 --- a/packages/grafana-toolkit/src/cli/index.ts +++ b/packages/grafana-toolkit/src/cli/index.ts @@ -15,6 +15,7 @@ import { searchTestDataSetupTask } from './tasks/searchTestDataSetup'; import { closeMilestoneTask } from './tasks/closeMilestone'; import { pluginDevTask } from './tasks/plugin.dev'; import { githubPublishTask } from './tasks/plugin.utils'; +import { pluginUpdateTask } from './tasks/plugin.update'; import { ciBuildPluginTask, ciBuildPluginDocsTask, ciPackagePluginTask, ciPluginReportTask } from './tasks/plugin.ci'; import { buildPackageTask } from './tasks/package.build'; import { pluginCreateTask } from './tasks/plugin.create'; @@ -228,6 +229,13 @@ export const run = (includeInternalScripts = false) => { }); }); + program + .command('plugin:update-circleci') + .description('Update plugin') + .action(async cmd => { + await execTask(pluginUpdateTask)({}); + }); + // Test the manifest creation program .command('manifest') diff --git a/packages/grafana-toolkit/src/cli/tasks/manifest.test.ts b/packages/grafana-toolkit/src/cli/tasks/manifest.test.ts index 4f3be288850..03b5152a92e 100644 --- a/packages/grafana-toolkit/src/cli/tasks/manifest.test.ts +++ b/packages/grafana-toolkit/src/cli/tasks/manifest.test.ts @@ -23,6 +23,7 @@ describe('Manifest', () => { "plugin.create.ts", "plugin.dev.ts", "plugin.tests.ts", + "plugin.update.ts", "plugin.utils.ts", "precommit.ts", "searchTestDataSetup.ts", diff --git a/packages/grafana-toolkit/src/cli/tasks/plugin.update.ts b/packages/grafana-toolkit/src/cli/tasks/plugin.update.ts new file mode 100644 index 00000000000..4186e544282 --- /dev/null +++ b/packages/grafana-toolkit/src/cli/tasks/plugin.update.ts @@ -0,0 +1,23 @@ +import { Task, TaskRunner } from './task'; +import { useSpinner } from '../utils/useSpinner'; +import fs = require('fs'); +import path = require('path'); + +interface UpdatePluginTask {} + +const updateCiConfig = useSpinner('Updating CircleCI config', async () => { + const ciConfigPath = path.join(process.cwd(), '.circleci'); + if (!fs.existsSync(ciConfigPath)) { + fs.mkdirSync(ciConfigPath); + } + + const sourceFile = path.join('node_modules/@grafana/toolkit/config/circleci', 'config.yml'); + const destFile = path.join(ciConfigPath, 'config.yml'); + fs.copyFileSync(sourceFile, destFile); +}); + +const pluginUpdateRunner: TaskRunner = async () => { + await updateCiConfig({}); +}; + +export const pluginUpdateTask = new Task('Update Plugin', pluginUpdateRunner);