UNPKG

@mikemajara/notion-cms

Version:

A TypeScript library for using Notion as a headless CMS

3 lines 2.64 kB
#!/usr/bin/env node 'use strict';var chunkT46FQGVA_js=require('./chunk-T46FQGVA.js'),commander=require('commander'),r=require('path'),a=require('fs'),l=require('readline');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var r__namespace=/*#__PURE__*/_interopNamespace(r);var a__namespace=/*#__PURE__*/_interopNamespace(a);var l__namespace=/*#__PURE__*/_interopNamespace(l);var n=new commander.Command;function d(){return l__namespace.createInterface({input:process.stdin,output:process.stdout})}async function f(e){let t=d();return new Promise(o=>{t.question(`File already exists: ${e} Do you want to overwrite it? (y/N): `,s=>{t.close(),o(s.toLowerCase()==="y");});})}n.name("notion-cms").description("CLI for generating TypeScript types from Notion databases");n.command("generate").description("Generate TypeScript types from a Notion database").option("-d, --database <id>","Notion database ID (for single database)").option("--databases <ids>","Multiple Notion database IDs separated by commas").option("-o, --output <path>","Output path","./notion").requiredOption("-t, --token <token>","Notion API token").option("-f, --force","Force overwrite existing files without asking",false).action(async e=>{try{!e.database&&!e.databases&&(console.error("Error: Either --database or --databases must be provided"),process.exit(1)),e.database&&e.databases&&(console.error("Error: Cannot use both --database and --databases options"),process.exit(1));let t=r__namespace.resolve(process.cwd(),e.output),o=e.databases?e.databases.split(",").map(s=>s.trim()):[e.database];if(console.log(`Generating types for ${o.length===1?"database":"databases"}: ${o.join(", ")}`),console.log(`Output path: ${t}`),a__namespace.existsSync(t)||a__namespace.mkdirSync(t,{recursive:!0}),o.length>1)await chunkT46FQGVA_js.h(o,t,e.token,e.force);else {let s=r__namespace.join(t,"notion-types.ts");a__namespace.existsSync(s)&&!e.force?await f(s)?(a__namespace.unlinkSync(s),console.log("Overwriting existing notion-types.ts file.")):console.log("Keeping existing notion-types.ts file."):a__namespace.existsSync(s)&&e.force&&(a__namespace.unlinkSync(s),console.log("Force overwriting existing notion-types.ts file.")),await chunkT46FQGVA_js.a(o[0],t,e.token,e.force);}console.log("Types generated successfully!");}catch(t){console.error("Error generating types:",t),process.exit(1);}});n.parse(process.argv);