diff --git a/publish/index.js b/publish/index.js index 4cfb3661..d8818004 100644 --- a/publish/index.js +++ b/publish/index.js @@ -26,6 +26,9 @@ firebaseAdmin.initializeApp({ }), }); +if(!process.env.private_key || !process.env.private_key_id || !process.env.client_email || !process.env.client_id || !process.env.client_cert_url){ + throw new Error("Misssing required environment variables for Firbase initialization"); +} const firestore = firebaseAdmin.firestore(); function getBlogsFileNames() { @@ -33,72 +36,57 @@ function getBlogsFileNames() { } async function main() { - const blogFileNames = getBlogsFileNames(); - - for (let filename of blogFileNames) { - const fileNameWithoutExtension = filename.split(".")[0]; - const blogExists = ( - await firestore.collection("blogs").doc(fileNameWithoutExtension).get() - ).exists; - - const blog = fs.readFileSync( - path.resolve(process.cwd(), "blogs", filename), - "utf-8" - ); + try{ - const blogMatter = matter(blog); - - const source = await serialize(blogMatter.content, { - mdxOptions: { - remarkPlugins: [ - remarkPresetLintConsistent, - remarkPresetLintRecommended, - remarkBreaks, - remarkGfm, - ], - rehypePlugins: [ - rehypeSlug, - rehypeHighlight, - [ - rehypeExternalLinks, - { target: "_blank", rel: ["nofollow", "noreferrer", "noopener"] }, + const blogFileNames = getBlogsFileNames(); + + for (let filename of blogFileNames) { + const fileNameWithoutExtension = filename.split(".")[0]; + const blogExists = ( + await firestore.collection("blogs").doc(fileNameWithoutExtension).get() + ).exists; + + const blog = fs.readFileSync( + path.resolve(process.cwd(), "blogs", filename), + "utf-8" + ); + + const blogMatter = matter(blog); + + const source = await serialize(blogMatter.content, { + mdxOptions: { + remarkPlugins: [ + remarkPresetLintConsistent, + remarkPresetLintRecommended, + remarkBreaks, + remarkGfm, + ], + rehypePlugins: [ + rehypeSlug, + rehypeHighlight, + [ + rehypeExternalLinks, + { target: "_blank", rel: ["nofollow", "noreferrer", "noopener"] }, + ], ], - ], - }, - }); - if (!blogExists) { - await firestore - .collection("blogs") - .doc(fileNameWithoutExtension) - .set( - { - source, - content: blogMatter.content, - ...blogMatter.data, - dateCreated: blogMatter.data.dateCreated.toUTCString(), - dateUpdated: new Date().toUTCString(), - likes: 0, - link: fileNameWithoutExtension, - }, - { merge: true } - ); - } else { - await firestore - .collection("blogs") - .doc(fileNameWithoutExtension) - .set( - { - source, - content: blogMatter.content, - ...blogMatter.data, - dateCreated: blogMatter.data.dateCreated.toUTCString(), - dateUpdated: new Date().toUTCString(), - link: fileNameWithoutExtension, - }, - { merge: true } - ); + }, + }); + const blogData = { + source, + content: blogMatter.content, + ...blogMatter.data, + dateCreated: blogMatter.data.dateCreated.toUTCString(), + dateUpdated: new Date().toUTCString(), + likes: blogExists ? (blogMatter.data.likes || 0) : 0, + link: fileNameWithoutExtension, + }; + await firestore.collection('blogs').doc(fileNameWithoutExtension).set(blogData, {merge: true}); + } } + catch(error){ + console.error("Error processing blogs :", error) + } } main();