-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbanner.ts
More file actions
31 lines (26 loc) · 1.06 KB
/
Copy pathbanner.ts
File metadata and controls
31 lines (26 loc) · 1.06 KB
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
import metadata from '../monkey.config'
const paddingLength = 1 + Object.keys(metadata).reduce((prev, curr) => (curr.length > prev ? curr.length : prev), 0)
const prefix = (arr: string[]): string[] => {
const newArr = arr.map((it) => `// ${it}`)
newArr.push('')
return newArr
}
const wrapMeta = (arr: string[]): string[] => arr.map((it) => (it.length ? `@${it}` : it))
const sign = (arr: string[]): string[] => {
arr.push('==/UserScript==')
return ['==UserScript=='].concat(arr)
}
export default (dev: boolean = false): string => {
const metas: string[] = []
if (dev) {
if (!metadata.require) metadata.require = []
metadata.require.push('file://' + __dirname + '\\build\\' + metadata.name.toLowerCase().replace(' ', '-') + '.user.js')
}
for (const [key, value] of Object.entries(metadata)) {
if (Array.isArray(value) && value.length) {
metas.push('')
for (const element of value) metas.push(key.padEnd(paddingLength) + element)
} else metas.push(key.padEnd(paddingLength) + value)
}
return prefix(sign(wrapMeta(metas))).join('\n')
}