const fs = require("fs"); const path = require("path"); const csv = require("csv-parser"); const React = require("react"); const dotenv = require("dotenv"); const ReactDOMServer = require("react-dom/server"); const TemplatePageModule = require("./build/components/jamtracks/JKJamTracksLandingTemplatePage"); var csvFilePath = `jam_tracks_for_jam_ui.${process.env.USER}.csv` const init = () => { const node_env = process.env.NODE_ENV || 'development'; const environment = process.env.ENVIRONMENT || 'development'; console.log(`environment=${environment} node_env=${node_env}`); console.log(dotenv.config({ path: `../.env.${environment}` })); if (environment === "production" || environment === "staging") { csvFilePath = `jam_tracks_for_jam_ui.${environment}.csv`; } console.log("using csv file", csvFilePath); if (!process.env.PUBLIC_URL) { console.log("setting public url", process.env.REACT_APP_BASE_URL); process.env.PUBLIC_URL = ""; } //const __dirname = path.resolve(path.dirname('')); console.log("init done successfully") } const generatePages = async (render) => { const rows = []; const OUTPUT_DIR = path.join(__dirname, "..", "public", "backing-tracks"); if (!fs.existsSync(OUTPUT_DIR)) { fs.mkdirSync(OUTPUT_DIR, { recursive: true }); } console.log("generatPages starting") const TemplatePage = TemplatePageModule.default; fs.createReadStream(csvFilePath) .pipe(csv()) .on("data", (row) => rows.push(row)) .on("end", async () => { console.log(`Processing ${rows.length} rows...`); for (const row of rows) { // id, original_artist, name, original_artist_slug, name_slug, plan_code, slug, URL, licensor, vendor_id const { id, original_artist, name, original_artist_slug, name_slug, plan_code, slug } = row; const artist = original_artist; const song = name; const location = `/backing-tracks/${original_artist_slug}/${name_slug}`; const fullPath = process.env.REACT_APP_BASE_URL + location; const logoPath = process.env.REACT_APP_BASE_URL + "/favicon.svg"; console.log(`Generating ${artist} - ${song}`); const html = render ? ReactDOMServer.renderToStaticMarkup( React.createElement(TemplatePage, { id, plan_code, slug, artist, song, location }) ) : ""; const fullHtml = `