经过长时间的搜索而无果后,我计划为“.gitignore”文件创建一个预处理器。
- .gitignore 不支持 regEx,但支持 glob。我希望能够使用 regEx,或者两者兼而有之(regEx 和 glob)。
- .gitignore 支持子文件夹(包括文件)的白名单,
!subFolder/**
两行(!subFolder
和!subFolder/**
)。我只想使用!SubFolder/
,这很容易理解。
因此,我认为是时候开始为 gitignore 文件编写一个小的预处理器了。欢迎任何帮助!
我应该使用哪种语言?我从脚本语言开始 - Autohotkey 和 node.js。也许在某个地方有类似的预处理器?使用 Autohotkey,我发现现在创建起来更容易、更快。从长远来看,Node.js 可能更有用。我也尝试使用 Kotline 来生成 NodeJS-Script(但不幸的是收到了错误消息)。尝试从这个例子开始:hello_node.zip 94(188 KB)
原型:
index.js:
#!/usr/bin/env node
const fs = require('fs')
try {
const data = fs.readFileSync('.gitignore', 'utf8')
var newString = data.replace(/\n(\!(\w+)\/\*\*)[\r\n]/g, '\n!$2\n$1\n');
console.log(newString)
} catch (err) {
console.error(err)
}
软件包.json:
{
"name": "snippet",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"bin": {
"gitignore": "./index.js"
}
}
Autohotkey(仅适用于 WinOS):
#SingleInstance,Force
Loop,9999
{
FileReadLine, thisLine , .gitignore, %A_Index%
if ErrorLevel
break
newString .= RegExReplace(thisLine,"^(\!(\w+)\/\*\*)$", "!$2`n$1") "`n"
}
MsgBox, '%newString%' = newString `n`n (line:%A_LineNumber%) `n`n`n The end of the file has been reached or there was a problem
Reload