nm3clol-express-app/index/build-meetings-dir.js

116 lines
3.7 KiB
JavaScript

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---");
// });