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
|
||||
|
||||
```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
|
||||
|
||||
```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:
|
||||
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="") =
|
||||
withFile(file):
|
||||
if search == "":
|
||||
|
|
@ -588,7 +595,7 @@ proc runFile(file: string, cfgin: OrderedTableRef) =
|
|||
if action == "create":
|
||||
createDir(file.splitPath().head)
|
||||
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 srch != "":
|
||||
prepend(sfile, cfg[act], cfg[srch])
|
||||
|
|
@ -613,6 +620,8 @@ proc runFile(file: string, cfgin: OrderedTableRef) =
|
|||
c2nimConfig.dynlib.add(cfg[act])
|
||||
elif action == "pragma":
|
||||
c2nimConfig.pragma.add(cfg[act])
|
||||
elif action == "pipe":
|
||||
pipe(sfile, cfg[act])
|
||||
srch = ""
|
||||
elif action == "search":
|
||||
srch = act
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue