Adds method to split and strip input config files.
This allows using triple quote variables specifying comma separated files on different lines.
This commit is contained in:
parent
37ad951b6e
commit
4e2a51bb6b
2 changed files with 29 additions and 9 deletions
|
|
@ -75,6 +75,23 @@ proc parseRequires(req: string): tuple[name: string, ver: PVersionRange] =
|
|||
except EParseVersion:
|
||||
quit("Unable to parse dependency version range: " & getCurrentExceptionMsg())
|
||||
|
||||
proc multiSplit(s: string, sep: char): seq[string] =
|
||||
## Returns ``s`` split by the ``sep`` character.
|
||||
##
|
||||
## Before returning, all individual entries are stripped of whitespace and
|
||||
## also empty entries are purged from the list. If after all the cleanups are
|
||||
## done no entries are found in the list, the proc returns a sequence with
|
||||
## the original string as the only entry.
|
||||
result = split(s, sep)
|
||||
map(result, proc(x: var string) = x = x.strip())
|
||||
for i in countdown(result.len()-1, 0):
|
||||
if len(result[i]) < 1:
|
||||
result.del(i)
|
||||
# Huh, nothing to return? Return given input.
|
||||
if len(result) < 1:
|
||||
return @[s]
|
||||
|
||||
|
||||
proc readPackageInfo*(path: string): TPackageInfo =
|
||||
result = initPackageInfo()
|
||||
result.mypath = path
|
||||
|
|
@ -101,19 +118,19 @@ proc readPackageInfo*(path: string): TPackageInfo =
|
|||
of "license": result.license = ev.value
|
||||
of "srcdir": result.srcDir = ev.value
|
||||
of "skipdirs":
|
||||
result.skipDirs.add(ev.value.split(','))
|
||||
result.skipDirs.add(ev.value.multiSplit(','))
|
||||
of "skipfiles":
|
||||
result.skipFiles.add(ev.value.split(','))
|
||||
result.skipFiles.add(ev.value.multiSplit(','))
|
||||
of "skipext":
|
||||
result.skipExt.add(ev.value.split(','))
|
||||
result.skipExt.add(ev.value.multiSplit(','))
|
||||
of "installdirs":
|
||||
result.installDirs.add(ev.value.split(','))
|
||||
result.installDirs.add(ev.value.multiSplit(','))
|
||||
of "installfiles":
|
||||
result.installFiles.add(ev.value.split(','))
|
||||
result.installFiles.add(ev.value.multiSplit(','))
|
||||
of "installext":
|
||||
result.installExt.add(ev.value.split(','))
|
||||
result.installExt.add(ev.value.multiSplit(','))
|
||||
of "bin":
|
||||
for i in ev.value.split(','):
|
||||
for i in ev.value.multiSplit(','):
|
||||
result.bin.add(i.addFileExt(ExeExt))
|
||||
of "backend":
|
||||
result.backend = ev.value.toLower()
|
||||
|
|
@ -124,7 +141,7 @@ proc readPackageInfo*(path: string): TPackageInfo =
|
|||
of "deps", "dependencies":
|
||||
case ev.key.normalize
|
||||
of "requires":
|
||||
for v in ev.value.split(','):
|
||||
for v in ev.value.multiSplit(','):
|
||||
result.requires.add(parseRequires(v.strip))
|
||||
else:
|
||||
quit("Invalid field: " & ev.key, QuitFailure)
|
||||
|
|
|
|||
|
|
@ -76,7 +76,10 @@ description = "Example .babel file."
|
|||
license = "MIT"
|
||||
|
||||
SkipDirs = "SomeDir" ; ./SomeDir will not be installed
|
||||
SkipFiles = "file.txt,file2.txt" ; ./{file.txt, file2.txt} will not be installed
|
||||
SkipFiles = """
|
||||
file.txt,
|
||||
file2.txt,
|
||||
""" ; ./{file.txt, file2.txt} will not be installed
|
||||
|
||||
[Deps]
|
||||
Requires: "nimrod >= 0.9.2"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue