44import std/ strutils
55
66import compiler/ [ast, idents, msgs, syntaxes, options, pathutils, lineinfos]
7- import version, packageinfotypes, packageinfo, options, packageparser
8- import std/ [tables, sequtils, strscans, strformat]
7+ import version, packageinfotypes, packageinfo, options, packageparser, cli
8+ import std/ [tables, sequtils, strscans, strformat, os ]
99
1010type NimbleFileInfo * = object
1111 nimbleFile* : string
@@ -207,25 +207,27 @@ iterator tokenizeRequires*(s: string): string =
207207 yield tok
208208
209209
210- proc parseRequiresWithFeatures (require: string ): (PkgTuple , seq [string ]) =
210+ proc parseRequiresWithFeatures (require: string ): seq [ (PkgTuple , seq [string ])] =
211211 # features are expressed like this: require[feature1, feature2]
212- var featuresStr: string
213- var requireStr: string
214- var features = newSeq [string ]()
215- if scanf (require, " $*[$*]" , requireStr, featuresStr):
216- features = featuresStr.split (" ," )
217- return (parseRequires (requireStr), features)
218- else :
219- return (parseRequires (require), @ [])
212+ result = newSeq [(PkgTuple , seq [string ])]()
213+ for req in require.split (" ," ).mapIt (it.strip):
214+ var featuresStr: string
215+ var requireStr: string
216+ var features = newSeq [string ]()
217+ if scanf (req, " $*[$*]" , requireStr, featuresStr):
218+ features = featuresStr.split (" ," )
219+ result .add ((parseRequires (requireStr), features))
220+ else :
221+ result .add ((parseRequires (req), @ []))
220222
221223proc getRequires * (nimbleFileInfo: NimbleFileInfo , pkgActiveFeatures: var Table [PkgTuple , seq [string ]]): seq [PkgTuple ] =
222224 for require in nimbleFileInfo.requires:
223- let (pkgTuple, activeFeatures) = parseRequiresWithFeatures (require)
224- if activeFeatures.len > 0 :
225- # displayInfo &"Package {nimbleFileInfo.nimbleFile} Found active features {activeFeatures} for {pkgTuple}", priority = HighPriority
226- pkgActiveFeatures[pkgTuple] = activeFeatures
225+ for (pkgTuple, activeFeatures) in parseRequiresWithFeatures (require):
226+ if activeFeatures.len > 0 :
227+ # displayInfo &"Package {nimbleFileInfo.nimbleFile} Found active features {activeFeatures} for {pkgTuple}", priority = HighPriority
228+ pkgActiveFeatures[pkgTuple] = activeFeatures
227229
228- result .add (pkgTuple)
230+ result .add (pkgTuple)
229231
230232proc getFeatures * (nimbleFileInfo: NimbleFileInfo ): Table [string , seq [PkgTuple ]] =
231233 result = initTable [string , seq [PkgTuple ]]()
@@ -238,6 +240,10 @@ proc toRequiresInfo*(pkgInfo: PackageInfo, options: Options): PackageInfo =
238240 if pkgInfo.basicInfo.name.isNim:
239241 return pkgInfo.toFullInfo (options)
240242
243+ if pkgInfo.myPath.splitFile.ext == " .babel" :
244+ displayWarning & " Package { pkgInfo.basicInfo.name} is a babel package, skipping declarative parser " , priority = HighPriority
245+ return pkgInfo.toFullInfo (options)
246+
241247 let nimbleFileInfo = extractRequiresInfo (pkgInfo.myPath)
242248 result = pkgInfo
243249 result .requires = getRequires (nimbleFileInfo, result .activeFeatures)
0 commit comments