create-block-theme/update-google-fonts-json-file.js
2023-03-01 15:57:56 +05:30

64 lines
1.7 KiB
JavaScript
Raw 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 ) {
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' );
}
} 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();