diff --git a/scripts/levitate-parse-json-report.js b/scripts/levitate-parse-json-report.js index 835e466180d..3bc62697de0 100644 --- a/scripts/levitate-parse-json-report.js +++ b/scripts/levitate-parse-json-report.js @@ -30,6 +30,8 @@ if (data.changes.length > 0) { markdown += printSection('Changes', data.changes); } -markdown += printAffectedPluginsSection(data); +if (data.removals.length > 0 || data.changes.length > 0) { + markdown += printAffectedPluginsSection(data); +} console.log(markdown); diff --git a/scripts/levitate-show-affected-plugins.js b/scripts/levitate-show-affected-plugins.js index 8c02fd34004..85e3eeab560 100644 --- a/scripts/levitate-show-affected-plugins.js +++ b/scripts/levitate-show-affected-plugins.js @@ -5,6 +5,7 @@ */ const { execSync } = require('child_process'); +const fs = require('fs'); /** * Extracts the package name from a given location string. @@ -13,8 +14,18 @@ const { execSync } = require('child_process'); * @returns {string} - The extracted package name, or an empty string if no match is found. */ function getPackage(location) { - const match = location.match(/\/(@[^@]+)@/); - return match ? match[1] : ''; + const match = location.match(/(.+\/)dist\//); + if (match) { + const packageJsonPath = match[1] + 'package.json'; + const data = fs.readFileSync(packageJsonPath, 'utf8'); + + if (!data) { + return ''; + } + + return JSON.parse(data)?.name || ''; + } + return ''; } const PANEL_URL = 'https://ops.grafana-ops.net/d/dmb2o0xnz/imported-property-details?orgId=1'; @@ -63,6 +74,10 @@ function makeQuery(section) { .filter((item) => item !== undefined) .join(' OR '); + if (!whereClause) { + return ''; + } + return ` SELECT property_name, @@ -113,6 +128,10 @@ function printAffectedPluginsSection(data) { try { const sqlQuery = makeQuery([...removals, ...changes]); + if (!sqlQuery) { + throw new Error("Couldn't generate SQL query"); + } + const cmd = `bq query --nouse_legacy_sql "${sqlQuery}"`; const stdout = execSync(cmd, { encoding: 'utf-8' });