it compiled
This commit is contained in:
61
src/readmefile.ts
Normal file
61
src/readmefile.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { readdirSync, readFileSync, writeFileSync } from 'fs'
|
||||
import { UserScriptMetaFull } from './types'
|
||||
|
||||
export interface readmeData {
|
||||
meta: UserScriptMetaFull
|
||||
error: string | null
|
||||
}
|
||||
|
||||
export function updateReadmeFile(fileList: readmeData[]) {
|
||||
let readmeFile = getReadmeFileName()
|
||||
if (readmeFile !== null) {
|
||||
let [readmeStart, readmeEnd] = readReadmeFile(readmeFile)
|
||||
|
||||
let installLinks = fileList.map(readmeDataToString).join('\n')
|
||||
|
||||
let installLinksAll = `
|
||||
<!-- START INSTALL LINKS -->
|
||||
## Installs
|
||||
|
||||
${installLinks}
|
||||
<!-- END INSTALL LINKS -->
|
||||
`
|
||||
|
||||
let content = [readmeStart, installLinksAll, readmeEnd].join('\n')
|
||||
writeFileSync(readmeFile, content)
|
||||
}
|
||||
}
|
||||
|
||||
function readmeDataToString(readmeData: readmeData): string {
|
||||
let { meta, error } = readmeData
|
||||
let errStr = error !== null ? '~~' : ''
|
||||
let errMsg = error !== null ? `\n - ${error}` : ''
|
||||
return `- ${errStr}[${meta.name}](${meta.downloadURL})})${errStr}${errMsg}`
|
||||
}
|
||||
|
||||
function getReadmeFileName(): string | null {
|
||||
let files = readdirSync('.')
|
||||
for (let name of files) {
|
||||
if (/^readme\.md$/i.test(name)) {
|
||||
return name
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
function readReadmeFile(readmeFile: string): [string, string] {
|
||||
let content = readFileSync(readmeFile).toString()
|
||||
const regex =
|
||||
/<!-- START INSTALL LINKS -->(?:.|\n)*?<!-- END INSTALL LINKS -->/
|
||||
const index = regex.exec(content)?.index
|
||||
|
||||
if (index === undefined) {
|
||||
if (!content.endsWith('\n')) {
|
||||
content += '\n'
|
||||
}
|
||||
return [content, '']
|
||||
}
|
||||
|
||||
content = content.replace(regex, '')
|
||||
return [content.slice(0, index), content.slice(index)]
|
||||
}
|
||||
Reference in New Issue
Block a user