Merge pull request #6 from jyapayne/add_execute_for_files
Add support for executing a command on a file.
This commit is contained in:
commit
1b645dd5b2
2 changed files with 12 additions and 1 deletions
|
|
@ -143,6 +143,8 @@ The following keys apply to library source code (before processing) and generate
|
||||||
|
|
||||||
```search``` = search string providing context for following prepend/append/replace directives
|
```search``` = search string providing context for following prepend/append/replace directives
|
||||||
|
|
||||||
|
```pipe``` = execute a command on a file and store the output of the command as the new file contents. Ex: pipe = "cat $file | grep 'static inline'"
|
||||||
|
|
||||||
```prepend``` = string value to prepend into file at beginning or before search
|
```prepend``` = string value to prepend into file at beginning or before search
|
||||||
|
|
||||||
```append``` = string value to append into file at the end or after search
|
```append``` = string value to append into file at the end or after search
|
||||||
|
|
|
||||||
11
nimgen.nim
11
nimgen.nim
|
|
@ -229,6 +229,13 @@ proc prepend(file: string, data: string, search="") =
|
||||||
if idx != -1:
|
if idx != -1:
|
||||||
content = content[0..<idx] & data & content[idx..<content.len()]
|
content = content[0..<idx] & data & content[idx..<content.len()]
|
||||||
|
|
||||||
|
proc pipe(file: string, command: string) =
|
||||||
|
let cmd = command % ["file", file]
|
||||||
|
let commandResult = execProc(cmd).strip()
|
||||||
|
if commandResult != "":
|
||||||
|
withFile(file):
|
||||||
|
content = commandResult
|
||||||
|
|
||||||
proc append(file: string, data: string, search="") =
|
proc append(file: string, data: string, search="") =
|
||||||
withFile(file):
|
withFile(file):
|
||||||
if search == "":
|
if search == "":
|
||||||
|
|
@ -588,7 +595,7 @@ proc runFile(file: string, cfgin: OrderedTableRef) =
|
||||||
if action == "create":
|
if action == "create":
|
||||||
createDir(file.splitPath().head)
|
createDir(file.splitPath().head)
|
||||||
writeFile(file, cfg[act])
|
writeFile(file, cfg[act])
|
||||||
elif action in @["prepend", "append", "replace", "comment", "rename", "compile", "dynlib", "pragma"] and sfile != "":
|
elif action in @["prepend", "append", "replace", "comment", "rename", "compile", "dynlib", "pragma", "pipe"] and sfile != "":
|
||||||
if action == "prepend":
|
if action == "prepend":
|
||||||
if srch != "":
|
if srch != "":
|
||||||
prepend(sfile, cfg[act], cfg[srch])
|
prepend(sfile, cfg[act], cfg[srch])
|
||||||
|
|
@ -613,6 +620,8 @@ proc runFile(file: string, cfgin: OrderedTableRef) =
|
||||||
c2nimConfig.dynlib.add(cfg[act])
|
c2nimConfig.dynlib.add(cfg[act])
|
||||||
elif action == "pragma":
|
elif action == "pragma":
|
||||||
c2nimConfig.pragma.add(cfg[act])
|
c2nimConfig.pragma.add(cfg[act])
|
||||||
|
elif action == "pipe":
|
||||||
|
pipe(sfile, cfg[act])
|
||||||
srch = ""
|
srch = ""
|
||||||
elif action == "search":
|
elif action == "search":
|
||||||
srch = act
|
srch = act
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue