create-block-theme/update-google-fonts-json-file.js
Vicente Canales d6fb04f9ad
Update google fonts on release instead of on a schedule (#461)
* Run google fonts update on release, automerge

* add missing & line end

* add --squash to pr merge

* split update and commit

* Uncomment repo check

It was commented out for testing on a fork.

* Remove date print on workflow log
2023-10-31 16:53:14 -03:00

70 lines
1.8 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fs = require( 'fs' );
const crypto = require( 'crypto' );
const API_URL = 'https://www.googleapis.com/webfonts/v1/webfonts?key=';
const API_KEY = process.env.GOOGLE_FONTS_API_KEY;
function calculateHash( somestring ) {
return crypto
.createHash( 'md5' )
.update( somestring )
.digest( 'hex' )
.toString();
}
async function updateFiles() {
let newApiData;
let newData;
try {
newApiData = await fetch( `${ API_URL }${ API_KEY }` );
newData = await newApiData.json();
} catch ( error ) {
// TODO: show in UI and remove console statement
// eslint-disable-next-line
console.error( '❎ Error fetching the Google Fonts API:', error );
process.exit( 1 );
}
if ( newData.items ) {
try {
const newDataString = JSON.stringify( newData, null, 2 );
const oldFileData = fs.readFileSync(
'./assets/google-fonts/fallback-fonts-list.json',
'utf8'
);
const oldData = JSON.parse( oldFileData );
const oldDataString = JSON.stringify( oldData, null, 2 );
if (
calculateHash( newDataString ) !==
calculateHash( oldDataString )
) {
fs.writeFileSync(
'./assets/google-fonts/fallback-fonts-list.json',
newDataString
);
// TODO: show in UI and remove console statement
// eslint-disable-next-line
console.info( '✅ Google Fonts JSON file updated' );
} else {
// TODO: show in UI and remove console statement
// eslint-disable-next-line
console.info( ' Google Fonts JSON file is up to date' );
}
} catch ( error ) {
// eslint-disable-next-line
console.error( '❎ Error stringifying the new JSON data:', error );
process.exit( 1 );
}
} else {
// TODO: show in UI and remove console statement
// eslint-disable-next-line
console.error(
'❎ No new data to check. Check the Google Fonts API key.'
);
process.exit( 1 );
}
}
updateFiles();