Skip to content

Instantly share code, notes, and snippets.

@Burgov
Created July 15, 2022 10:47
Show Gist options
  • Save Burgov/1fb98e0214badf8f55de45d02587a352 to your computer and use it in GitHub Desktop.
Save Burgov/1fb98e0214badf8f55de45d02587a352 to your computer and use it in GitHub Desktop.
import { promisify } from 'util';
import axios from 'axios';
const exec = promisify(require('child_process').exec);
async function run() {
const affected = [];
for (const project of ['api', 'frontend', 'functions']) {
console.error(`Project: ${project}`);
let url: string;
switch (project) {
case 'api':
url = `https://${process.env.API_AZURE_WEBAPP_NAME}.azurewebsites.net`;
break;
case 'frontend':
url = `https://${process.env.SSR_AZURE_WEBAPP_NAME}.azurewebsites.net/version.json`;
break;
case 'functions':
url = `https://europe-west1-${process.env.FIREBASE_PROJECT_ID}.cloudfunctions.net/version`;
break;
}
console.error(`URL: ${url}`);
let version: string;
try {
const versionResponse = await axios.get<{ version: string }>(url);
version = versionResponse.data.version;
} catch (e) {
console.error("Couldn't fetch version. Marking affected.");
affected.push(project);
continue;
}
console.error(`Version: ${version}`);
let isAffected = false;
try {
const affectedRes = await exec(
`nx print-affected --select projects --target deploy --head HEAD --base ${version}`
);
isAffected = affectedRes.stdout.trim().split(', ').includes(project);
} catch (e) {
isAffected = true;
}
console.error(`Is affected: ${isAffected}`);
if (isAffected) {
affected.push(project);
}
console.error('');
}
console.log(affected.join(','));
}
run().then();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment