Add fleek file for stats, and script to run it if affected
This commit is contained in:
parent
88604959f4
commit
463bb2e360
15
apps/stats/.fleek.json
Normal file
15
apps/stats/.fleek.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"site": {
|
||||
"id": "2365cbf8-20f8-4d3a-8014-19e813eab683",
|
||||
"team": "886f256a-fd19-40d5-9551-bcd71a7c8100",
|
||||
"platform": "ipfs",
|
||||
"source": "github",
|
||||
"name": "vega-status"
|
||||
},
|
||||
"build": {
|
||||
"baseDir": "",
|
||||
"publicDir": "dist/apps/stats/",
|
||||
"command": "yarn && yarn nx run stats:build",
|
||||
"rootDir": ""
|
||||
}
|
||||
}
|
76
tools/fleek-deploy.js
Executable file
76
tools/fleek-deploy.js
Executable file
@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Runs the fleek deploy process based on nx:affected, but only for sites
|
||||
* that have a .fleek.json file
|
||||
*
|
||||
* @author Edd
|
||||
*/
|
||||
|
||||
// Fleek CLI requires this variable to be set
|
||||
if (!process.env['FLEEK_API_KEY']) {
|
||||
console.error('Error: FLEEK_API_KEY must be set');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const { existsSync } = require('fs');
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
// The folder containing NX projects
|
||||
const projectPath = './apps/';
|
||||
// The Fleek project file, the existence indicates a deployed app
|
||||
const fleekFile = '.fleek.json';
|
||||
// Command to run in each app that needs to be deployed
|
||||
const deployCommand = 'npx @fleekhq/fleek-cli@0.1.8 site:deploy';
|
||||
|
||||
// Await piped input
|
||||
process.stdin.resume();
|
||||
process.stdin.setEncoding('utf8');
|
||||
|
||||
// This hangs for input, and process.exit ensures it only triggers one
|
||||
process.stdin.on('data', function (affectedProjectsString) {
|
||||
// If there is no input, nothing is affected. Bail early.
|
||||
if (affectedProjectsString.trim().length === 0) {
|
||||
console.log('Success: No projects affected');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
// Handle multiple projects or a single project being affected
|
||||
let affectedProjects =
|
||||
affectedProjectsString.indexOf(',') !== -1
|
||||
? affectedProjectsString.split(',')
|
||||
: [affectedProjectsString.trim()];
|
||||
|
||||
let affectedProjectsCount = 0;
|
||||
|
||||
affectedProjects.forEach((p) => {
|
||||
const cleanedProjectName = p.trim();
|
||||
|
||||
// Path (from cwd) for the project, used for execSync if it's a fleek project
|
||||
const project = `${projectPath}${cleanedProjectName}/`;
|
||||
|
||||
// Specific file to check for the existence of
|
||||
const fleekFilePath = `${project}${fleekFile}`;
|
||||
|
||||
if (existsSync(fleekFilePath)) {
|
||||
affectedProjectsCount++;
|
||||
|
||||
console.group(`${cleanedProjectName} requires deployment`);
|
||||
|
||||
// This will throw if it fails to trigger
|
||||
execSync(deployCommand, { cwd: project });
|
||||
|
||||
console.groupEnd();
|
||||
}
|
||||
});
|
||||
|
||||
// If we made it here, either we didn't have any projects to deploy...
|
||||
if (affectedProjectsCount === 0) {
|
||||
console.log('Success: No Fleek projects affected');
|
||||
} else {
|
||||
// ... or all the projects deployed successfully...
|
||||
console.log(`Success: ${affectedProjectsCount} deployments triggered`);
|
||||
}
|
||||
// ... so either way it's considered success
|
||||
process.exit(0);
|
||||
});
|
Loading…
Reference in New Issue
Block a user