Files snapshot from new-header

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
a8328f Tucker McKnight
a8328f Tucker McKnight
14e3d3 Tucker McKnight
99f634 Tucker McKnight
14e3d3 Tucker McKnight
b1c071 Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
99f634 Tucker McKnight
14e3d3 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
ff4185 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
f72d85 Tucker McKnight
a8328f Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
a8328f Tucker McKnight
f72d85 Tucker McKnight
f72d85 Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
f72d85 Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
a8328f Tucker McKnight
14e3d3 Tucker McKnight
14e3d3 Tucker McKnight
import m from 'mithril'
import render from 'mithril-node-render'
import { type Repository } from '../src/dataTypes.ts'
import getFlatRefs from '../src/flatRefs.ts'
import { dateToRfc3339 } from '@11ty/eleventy-plugin-rss'
import { flatPatches } from '../src/flatPatches.ts'

export default async (
  eleventyConfig: any,
) => {
  return (data) => {
    const flatRef: ReturnType<typeof getFlatRefs>[0] = data.flatRef
    const currentRepo: Repository = data.currentRepo
    const currentRef: Repository['branches'][0] = data.currentRef
    const currentRefCommits: Awaited<ReturnType<typeof flatPatches>> = data.currentRefCommits

    const slugify = eleventyConfig.getFilter("slugify")

    return render([
      m.trust('<?xml version="1.0" encoding="utf-8"?>'),
      m('feed', {xmlns: "http://www.w3.org/2005/Atom"}, [
        m('title', `Commits in ${flatRef.repoName} / ${flatRef.refName}`),
        m.trust(`<link href="${ data.reposConfig.baseUrl + '/repos/' + slugify(flatRef.repoName) + `/${flatRef.type}/` + slugify(flatRef.refName) + '/commits.xml'}" rel="self" />`),
        m.trust(`<link href="${data.reposConfig.baseUrl + '/repos/' + slugify(flatRef.repoName) + `/${flatRef.type}/` + slugify(flatRef.refName)}" />`),
        m('updated', dateToRfc3339(currentRepo.commits.get(currentRef.sha).date)),
        m('id', data.reposConfig.baseUrl),
        m('author',
          m('name', `${currentRepo.name} contributors`)
        ),
        currentRefCommits.map((commit) => {
          const commitUrl = data.reposConfig.baseUrl + '/repos/' + slugify(flatRef.repoName) + `/${flatRef.type}/` + slugify(flatRef.refName) + '/commits/' + commit.commit.hash
          return m('entry', [
            m('title', commit.commit.message.split('\n')[0]),
            m('author', m('name', commit.commit.author)),
            m.trust(`<link href="${commitUrl}" />`),
            m('updated', dateToRfc3339(commit.commit.date)),
            m('id', commitUrl),
            m('content', {type: "text"}, commit.commit.message),
          ])
        })
      ])
    ])
  }
}