Files snapshot from file-caching-stash-mistaken-branch-idea
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
2a54fe Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
c945a9 Tucker McKnight
c945a9 Tucker McKnight
c945a9 Tucker McKnight
c945a9 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
c945a9 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
99f634 Tucker McKnight
c945a9 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
4f267d Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
7db57c Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
eafb15 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
99f634 Tucker McKnight
4f267d Tucker McKnight
99f634 Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
4f267d Tucker McKnight
import { type SortedFileList } from '../../src/dataTypes.ts'
import { type ReposConfiguration } from "../../src/configTypes.ts"
/**
* Returns links to various pages used by the default template. Will return a link
* that assumes you want to stay on the current ref, unless you give a new ref in
* the function argument. E.g if you are currently at /tags/v-1-0/, and you call
* the commits() function, it'll give you /tag/v-1-0/commits, unless you pass in
* an argument like commits({refName: 'main', refType: 'branch'}), in which case
* it'll give you /branch/main/commits.
*/
type CurrentRefArgs = {
reposConfig: ReposConfiguration,
slugify: Function,
currentRepoName: string,
currentRefName: string,
currentRefType: 'branch' | 'tag'
}
export const NavHelper = (args: CurrentRefArgs) => {
const reposPath = args.reposConfig.path || ""
// These two aren't actually used by any pages, but they're in almost
// every page URL. E.g. all of them start with 'repos/my-repo-name'
// or 'repos/my-repo-name/branches.'
const repoBasePath = `${reposPath}/${args.slugify(args.currentRepoName)}`
const refPath = (refName, refType) => `${repoBasePath}/${refType}/${args.slugify(refName)}`
type RefArgument = {
refName: string,
refType: 'branch' | 'tag'
}
return {
rootPath: () => {
if (reposPath === "") {
return "/"
}
else {
return reposPath
}
},
repoHomePath: () => {
return repoBasePath
},
refHome: (newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return (refType === 'branch' && refName === args.reposConfig.repos[args.currentRepoName].defaultBranch)
? repoBasePath
: refPath(refName, refType)
},
file: (file: SortedFileList[0], newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/files/${file.fullPath.split('/')
.map((pathPart) => {
return pathPart.split('.').map((subPart) => {
return args.slugify(subPart)
}).join('.')
}).join('/')}.html`
},
files: (newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/files`
},
commit: (hash: string, newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/commits/${hash}`
},
commits: (newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/commits/page1`
},
branches: (newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/branches`
},
tags: (newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/tags`
},
rssFeed: (newRef: RefArgument = null) => {
const refName = newRef?.refName || args.currentRefName
const refType = newRef?.refType || args.currentRefType
return `${refPath(refName, refType)}/commits.xml`
},
homepageButtons: args.reposConfig.repos[args.currentRepoName].defaultTemplateConfiguration?.homepageButtons || []
}
}