.gitignore 文件的预处理器(由 git 使用)用于 RegEx 支持等

.gitignore 文件的预处理器(由 git 使用)用于 RegEx 支持等

经过长时间的搜索而无果后,我计划为“.gitignore”文件创建一个预处理器。

  1. .gitignore 不支持 regEx,但支持 glob。我希望能够使用 regEx,或者两者兼而有之(regEx 和 glob)。
  2. .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

相关内容