mirror of
https://github.com/WordPress/create-block-theme.git
synced 2025-08-18 15:01:10 +08:00
64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
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();
|