meeting.mjs module is responsible for reading group-specific template files and generating the markdown content for GitHub issues and HackMD meeting minutes.
readMeetingConfig(config)
Reads and parses the meeting configuration from template files for the specified group.
Parameters
The application configuration object. The function reads
config.meetingGroup (the CLI argument) and config.directories.templates (the path to the templates directory).Returns
Promise<MeetingConfig> — an object with the following fields:
Raw contents of the
invited_<group> template file. A markdown-formatted list of invited attendees.Raw contents of the
observers_<group> template file. A markdown-formatted list of observers.Raw contents of the
meeting_base_<group> template file as a string.The
meeting_base_<group> file parsed as dotenv key-value pairs. Common keys include GROUP_NAME, REPO, USER, ICAL_URL, CALENDAR_FILTER, AGENDA_TAG, ISSUE_LABEL, HACKMD_TEAM_NAME, and JOINING_INSTRUCTIONS.generateMeetingTitle(config, meetingConfig, meetingDate)
Builds the canonical meeting title string used for both the GitHub issue title and the HackMD document title.
Parameters
Application configuration. Used as a fallback for
meetingGroup when GROUP_NAME is not set in the template.Meeting configuration returned by
readMeetingConfig. The function reads meetingConfig.properties.HOST and meetingConfig.properties.GROUP_NAME.The date of the upcoming meeting. The UTC date portion (
YYYY-MM-DD) is appended to the title.Returns
string — a title in the format "<HOST> <GROUP_NAME> Meeting <YYYY-MM-DD>". HOST defaults to "Node.js" when not set in the template; GROUP_NAME defaults to the raw meetingGroup shortname.
generateMeetingAgenda(agendaIssues)
Formats a collection of GitHub issues into a markdown agenda section.
Parameters
An object mapping repository paths (e.g.,
"nodejs/node") to arrays of GitHub issue objects. Produced by getAgendaIssues.Returns
string — markdown text. Each repository with at least one issue gets a ### repoName heading followed by a bullet list in the format * title [#number](html_url). Markdown bracket characters in issue titles are escaped. Returns an empty string if there are no issues.
generateMeetingIssue(config, meetingConfig, meetingDate, meetingAgenda, minutesDocLink)
Reads the templates/meeting_issue.md template and substitutes all placeholder variables to produce the full GitHub issue body.
Parameters
Application configuration. Used to resolve the templates directory and meeting group name.
Meeting configuration returned by
readMeetingConfig. Provides invited, observers, and all properties.The date of the meeting. Used to format the UTC time, generate the timezone conversion table, and produce time.anddate.com and Wolfram Alpha links.
The formatted agenda string returned by
generateMeetingAgenda. Falls back to '*No agenda items found.*' when empty.The URL of the HackMD minutes document. Substituted into the template as
MINUTES_DOC. Pass an empty string in --dry-run mode.Returns
Promise<string> — the fully substituted issue body as a markdown string.
The following template variables are substituted:
| Variable | Value |
|---|---|
UTC_TIME | Formatted UTC date/time of the meeting |
TIMEZONE_TABLE | Markdown table of times across 12 timezones |
TIME_AND_DATE_LINK | Link to timeanddate.com converter |
WOLFRAM_ALPHA_LINK | Link to Wolfram Alpha time converter |
AGENDA_LABEL | Issue label used for agenda items (AGENDA_TAG or <group>-agenda) |
GITHUB_ORG | GitHub organisation (USER property or "nodejs") |
AGENDA_CONTENT | Formatted agenda markdown |
INVITEES | Contents of invited_<group> |
JOINING_INSTRUCTIONS | Meeting join link from meeting_base_<group> |
MINUTES_DOC | HackMD document URL |
OBSERVERS | Contents of observers_<group> |
generateMeetingMinutes(config, meetingConfig, meetingTitle, meetingAgenda, minutesDocLink, githubIssueLink)
Reads the templates/minutes_base_<group> template and substitutes all placeholder variables to produce the HackMD minutes document content.
Parameters
Application configuration. Used to resolve the templates directory and the meeting group shortname.
Meeting configuration returned by
readMeetingConfig. Provides invited and observers lists.The meeting title string returned by
generateMeetingTitle. Substituted as TITLE.The formatted agenda string returned by
generateMeetingAgenda. Substituted as AGENDA_CONTENT.The URL of the HackMD document itself. Substituted as
MINUTES_DOC (used for self-referencing within the document).The
html_url of the created or updated GitHub issue. Substituted as GITHUB_ISSUE.Returns
Promise<string> — the fully substituted minutes document content as a markdown string.
The following template variables are substituted:
| Variable | Value |
|---|---|
TITLE | Meeting title |
AGENDA_CONTENT | Formatted agenda markdown |
INVITED | Contents of invited_<group> |
OBSERVERS | Contents of observers_<group> |
MINUTES_DOC | HackMD document URL |
GITHUB_ISSUE | GitHub issue URL |