From 2fc3efcd8444004de35d2b2a6adee926c82deb06 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Thu, 14 Feb 2019 11:07:52 +0100 Subject: [PATCH] Add before/after hooks for build action Fixes #606 --- src/nimble.nim | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/nimble.nim b/src/nimble.nim index cd87b84..f1f3e9d 100644 --- a/src/nimble.nim +++ b/src/nimble.nim @@ -223,6 +223,11 @@ proc buildFromDir(pkgInfo: PackageInfo, paths: seq[string], "Nothing to build. Did you specify a module to build using the" & " `bin` key in your .nimble file?") let realDir = pkgInfo.getRealDir() + + cd realDir: + if not execHook(options, true): + raise newException(NimbleError, "Pre-hook prevented further execution.") + for path in paths: args.add("--path:\"" & path & "\" ") for bin in pkgInfo.bin: let outputOpt = "-o:\"" & pkgInfo.getOutputDir(bin) & "\"" @@ -246,6 +251,9 @@ proc buildFromDir(pkgInfo: PackageInfo, paths: seq[string], exc.hint = hint raise exc + cd realDir: + discard execHook(options, false) + proc buildFromDir(pkgInfo: PackageInfo, paths: seq[string], forRelease: bool, options: Options) = var args: seq[string] @@ -360,7 +368,7 @@ proc installFromDir(dir: string, requestedVer: VersionRange, options: Options, # if the build fails then the old package will still be installed. if pkgInfo.bin.len > 0: let paths = result.deps.map(dep => dep.getRealDir()) - let optsCopy = options.briefClone() + var optsCopy = options.briefClone() optsCopy.action.typ = actionBuild buildFromDir(pkgInfo, paths, true, optsCopy)