const path = require('path'); let meetingDocs = require('../bos-tourism-meetings.json'); let meetings = []; let meetingsFiles = []; const yaml = require('js-yaml'); const cheerio = require('cheerio'); function convertTimeStr(hh_mm_ampm) { if (!hh_mm_ampm) return ""; let space_parts = hh_mm_ampm.split(" "); let time_parts = space_parts[0].split(":"); time_parts = time_parts.map((time_part) => { return parseInt(time_part); }) if (space_parts[1] == "PM") time_parts[0] += 12; return (time_parts[0]<10?"0":"") + time_parts[0] + "_" + (time_parts[1]<10?"0":"") + time_parts[1]; } function getAgencyLongName(agency) { switch (agency) { case "Russell_BOS": return "Russell County Board of Supervisors"; case "Russell_Tourism": return "Russell County Tourism Advisory Committee"; } } function getKeyName(doc) { if (doc.Agency == "BOS") doc.Agency = "Russell_BOS"; else if (doc.Agency == "Tourism") doc.Agency = "Russell_Tourism"; return doc["MeetingDate"] + "_" + convertTimeStr(doc["MeetingTime"])+ "-" + doc["Agency"] + "-" + doc["MeetingName"].replaceAll(" ", "_"); } function getMeetingFilePath(keyName) { return path.join("..", "astro", "src", "content", "meetings", keyName + ".md"); } // create meetings dictionary meetingDocs.forEach(doc => { let keyName = getKeyName(doc); let fileName = getMeetingFilePath(keyName); if (meetingsFiles.indexOf(keyName) == -1) { meetingsFiles.push({ fileName, mdContent: { frontMatter: { title: getAgencyLongName(doc.Agency) + " - " + doc.MeetingName + " - " + doc.MeetingDate + " @ " + doc.MeetingTime + "", meetingDate: doc.MeetingDate, attachments: [], }, content: "", } }); } }); // go back through and add all of the documents to the meetings in the files meetingsFiles = meetingsFiles.map(file => { meetingDocs.forEach(doc => { let keyName = getKeyName(doc); let fileName = getMeetingFilePath(keyName); if (fileName == file.fileName) { file.mdContent.frontMatter.attachments.push({ title: doc.DocumentCategory, relativePath: doc.Host + doc.AgendaPath + doc.AgendaFile.replace('\'', ''), }); } }); return file; }); const trimSlashes = (str) => str.replace(/^\/|\/$/g, ''); function getFileExt(file) { let ext = path.extname(file.replaceAll('\'', '')); if (!ext) { if (file.endsWith("RC Tourism Committee Meeting Minutes - July 18 2017 Regular")) { return ".pdf"; } if (file.endsWith('_05222023-162') || file.endsWith('_03062023-33') || file.endsWith('_03062023-157')) { return ".docx"; } } return ext; } console.log("@echo off"); meetingDocs.forEach(doc => { let keyName = getKeyName(doc); let fileName = getMeetingFilePath(keyName); console.log( "copy " + " \"" + path.join( "..", "..", "Web_Site_Archives", "Russell_County_Web_Site-latest", "russellcountyva.us", doc.Host, trimSlashes(doc.AgendaPath).replaceAll("/", path.sep), doc.AgendaFile.replaceAll('\'', ''), ) + "\" \"" + getKeyName(doc) + "-" + doc.DocumentCategory.replaceAll(" ", "_") + getFileExt(doc.AgendaFile) + "\" " + " >> copy-files.log" ); }); // meetingsFiles.forEach(file => { // //console.log("cp " file.fileName); // // console.log("---\n"+yaml.dump(file.mdContent.frontMatter)+"\n---"); // });