fix setCommand so it behaves like regular nim invocation (#18555)

This commit is contained in:
Timothee Cour
2021-07-21 23:00:29 -07:00
committed by GitHub
parent 01fc9e58ca
commit d5b5827bc2
3 changed files with 12 additions and 18 deletions

View File

@@ -44,14 +44,7 @@ proc processCmdLineAndProjectPath*(self: NimProg, conf: ConfigRef) =
elif self.supportsStdinFile and conf.projectName == "-":
handleStdinInput(conf)
elif conf.projectName != "":
try:
conf.projectFull = canonicalizePath(conf, AbsoluteFile conf.projectName)
except OSError:
conf.projectFull = AbsoluteFile conf.projectName
let p = splitFile(conf.projectFull)
let dir = if p.dir.isEmpty: AbsoluteDir getCurrentDir() else: p.dir
conf.projectPath = AbsoluteDir canonicalizePath(conf, AbsoluteFile dir)
conf.projectName = p.name
setFromProjectName(conf, conf.projectName)
else:
conf.projectPath = AbsoluteDir canonicalizePath(conf, AbsoluteFile getCurrentDir())

View File

@@ -695,6 +695,16 @@ proc setDefaultLibpath*(conf: ConfigRef) =
proc canonicalizePath*(conf: ConfigRef; path: AbsoluteFile): AbsoluteFile =
result = AbsoluteFile path.string.expandFilename
proc setFromProjectName*(conf: ConfigRef; projectName: string) =
try:
conf.projectFull = canonicalizePath(conf, AbsoluteFile projectName)
except OSError:
conf.projectFull = AbsoluteFile projectName
let p = splitFile(conf.projectFull)
let dir = if p.dir.isEmpty: AbsoluteDir getCurrentDir() else: p.dir
conf.projectPath = AbsoluteDir canonicalizePath(conf, AbsoluteFile dir)
conf.projectName = p.name
proc removeTrailingDirSep*(path: string): string =
if (path.len > 0) and (path[^1] == DirSep):
result = substr(path, 0, path.len - 2)

View File

@@ -151,18 +151,9 @@ proc setupVM*(module: PSym; cache: IdentCache; scriptName: string;
setResult(a, strutils.cmpIgnoreCase(a.getString 0, a.getString 1))
cbconf setCommand:
conf.setCommandEarly(a.getString 0)
# xxx move remaining logic to commands.nim or other
let arg = a.getString 1
incl(conf.globalOptions, optWasNimscript)
if arg.len > 0:
conf.projectName = arg
let path =
if conf.projectName.isAbsolute: AbsoluteFile(conf.projectName)
else: conf.projectPath / RelativeFile(conf.projectName)
try:
conf.projectFull = canonicalizePath(conf, path)
except OSError:
conf.projectFull = path
if arg.len > 0: setFromProjectName(conf, arg)
cbconf getCommand:
setResult(a, conf.command)
cbconf switch: