From adbc30c22e2883c5f9468f12e657ae39d897267f Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sat, 11 Oct 2014 22:38:44 +0100 Subject: [PATCH] Renamed babel to nimble. --- src/babel.nim | 234 +++++++++++--------- src/babelpkg/compat.nim | 29 --- src/nimblepkg/compat.nim | 29 +++ src/{babelpkg => nimblepkg}/config.nim | 21 +- src/{babelpkg => nimblepkg}/download.nim | 8 +- src/{babelpkg => nimblepkg}/packageinfo.nim | 76 ++++--- src/{babelpkg => nimblepkg}/tools.nim | 8 +- src/nimblepkg/version | Bin 0 -> 254611 bytes src/{babelpkg => nimblepkg}/version.nim | 1 - 9 files changed, 216 insertions(+), 190 deletions(-) delete mode 100644 src/babelpkg/compat.nim create mode 100644 src/nimblepkg/compat.nim rename src/{babelpkg => nimblepkg}/config.nim (55%) rename src/{babelpkg => nimblepkg}/download.nim (97%) rename src/{babelpkg => nimblepkg}/packageinfo.nim (81%) rename src/{babelpkg => nimblepkg}/tools.nim (93%) create mode 100755 src/nimblepkg/version rename src/{babelpkg => nimblepkg}/version.nim (99%) diff --git a/src/babel.nim b/src/babel.nim index 386bfc1..8a96312 100644 --- a/src/babel.nim +++ b/src/babel.nim @@ -6,8 +6,8 @@ import httpclient, parseopt, os, strutils, osproc, pegs, tables, parseutils, from sequtils import toSeq -import babelpkg/packageinfo, babelpkg/version, babelpkg/tools, - babelpkg/download, babelpkg/config, babelpkg/compat +import nimblepkg/packageinfo, nimblepkg/version, nimblepkg/tools, + nimblepkg/download, nimblepkg/config, nimblepkg/compat when not defined(windows): from posix import getpid @@ -18,7 +18,7 @@ type queryVersions: bool action: TAction config: TConfig - babelData: PJsonNode ## Babeldata.json + nimbleData: PJsonNode ## Nimbledata.json TActionType = enum ActionNil, ActionUpdate, ActionInit, ActionInstall, ActionSearch, @@ -43,11 +43,11 @@ type const help = """ -Usage: babel COMMAND [opts] +Usage: nimble COMMAND [opts] Commands: install [pkgname, ...] Installs a list of packages. - init [pkgname] Initializes a new Babel project. + init [pkgname] Initializes a new Nimble project. uninstall [pkgname, ...] Uninstalls a list of packages. build Builds a package. update [url] Updates package list. A package list URL can @@ -66,7 +66,7 @@ Options: --ver Query remote server for package version information when searching or listing packages """ - babelVersion = "0.4.0" + nimbleVersion = "0.4.0" defaultPackageURL = "https://github.com/nimrod-code/packages/raw/master/packages.json" proc writeHelp() = @@ -74,17 +74,51 @@ proc writeHelp() = quit(QuitSuccess) proc writeVersion() = - echo("babel v$# compiled at $# $#" % [babelVersion, CompileDate, CompileTime]) + echo("nimble v$# compiled at $# $#" % [nimbleVersion, CompileDate, CompileTime]) quit(QuitSuccess) -proc getBabelDir(options: TOptions): string = - options.config.babelDir +proc getNimbleDir(options: TOptions): string = + options.config.nimbleDir proc getPkgsDir(options: TOptions): string = - options.config.babelDir / "pkgs" + options.config.nimbleDir / "pkgs" proc getBinDir(options: TOptions): string = - options.config.babelDir / "bin" + options.config.nimbleDir / "bin" + +proc prompt(options: TOptions, question: string): bool = + ## Asks an interactive question and returns the result. + ## + ## The proc will return immediately without asking the user if the global + ## forcePrompts has a value different than DontForcePrompt. + case options.forcePrompts + of ForcePromptYes: + echo(question & " -> [forced yes]") + return true + of ForcePromptNo: + echo(question & " -> [forced no]") + return false + of DontForcePrompt: + echo(question & " [y/N]") + let yn = stdin.readLine() + case yn.normalize + of "y", "yes": + return true + of "n", "no": + return false + else: + return false + +proc renameBabelToNimble(options: TOptions) {.deprecated.} = + let babelDir = getHomeDir() / ".babel" + let nimbleDir = getHomeDir() / ".nimble" + if dirExists(babelDir): + if options.prompt("Found deprecated babel package directory, would you like to rename it to nimble?"): + copyDir(babelDir, nimbleDir) + removeDir(babelDir) + + copyFile(nimbleDir / "babeldata.json", nimbleDir / "nimbledata.json") + removeFile(nimbleDir / "babeldata.json") proc parseCmdLine(): TOptions = result.action.typ = ActionNil @@ -136,7 +170,7 @@ proc parseCmdLine(): TOptions = result.action.search.add(key) of ActionInit: if result.action.projName != "": - raise newException(EBabel, "Can only initialize one package at a time.") + raise newException(ENimble, "Can only initialize one package at a time.") result.action.projName = key of ActionList, ActionBuild: writeHelp() @@ -151,35 +185,15 @@ proc parseCmdLine(): TOptions = if result.action.typ == ActionNil: writeHelp() - # Load babeldata.json - let babeldataFilename = result.getBabelDir() / "babeldata.json" - if fileExists(babeldataFilename): - result.babelData = parseFile(babeldataFilename) - else: - result.babelData = %{"reverseDeps": newJObject()} + # Rename deprecated babel dir. + renameBabelToNimble(result) -proc prompt(options: TOptions, question: string): bool = - ## Asks an interactive question and returns the result. - ## - ## The proc will return immediately without asking the user if the global - ## forcePrompts has a value different than DontForcePrompt. - case options.forcePrompts - of ForcePromptYes: - echo(question & " -> [forced yes]") - return true - of ForcePromptNo: - echo(question & " -> [forced no]") - return false - of DontForcePrompt: - echo(question & " [y/N]") - let yn = stdin.readLine() - case yn.normalize - of "y", "yes": - return true - of "n", "no": - return false - else: - return false + # Load nimbledata.json + let nimbledataFilename = result.getNimbleDir() / "nimbledata.json" + if fileExists(nimbledataFilename): + result.nimbleData = parseFile(nimbledataFilename) + else: + result.nimbleData = %{"reverseDeps": newJObject()} proc update(options: TOptions) = ## Downloads the package list from the specified URL. @@ -192,7 +206,7 @@ proc update(options: TOptions) = else: defaultPackageURL echo("Downloading package list from " & url) - downloadFile(url, options.getBabelDir() / "packages.json") + downloadFile(url, options.getNimbleDir() / "packages.json") echo("Done.") proc checkInstallFile(pkgInfo: TPackageInfo, @@ -201,8 +215,8 @@ proc checkInstallFile(pkgInfo: TPackageInfo, ## ``True`` means file should be skipped. for ignoreFile in pkgInfo.skipFiles: - if ignoreFile.endswith("babel"): - raise newException(EBabel, ignoreFile & " must be installed.") + if ignoreFile.endswith("nimble"): + raise newException(ENimble, ignoreFile & " must be installed.") if samePaths(file, origDir / ignoreFile): result = true break @@ -244,7 +258,7 @@ proc copyWithExt(origDir, currentDir, dest: string, proc copyFilesRec(origDir, currentDir, dest: string, options: TOptions, pkgInfo: TPackageInfo): TSet[string] = - ## Copies all the required files, skips files specified in the .babel file + ## Copies all the required files, skips files specified in the .nimble file ## (TPackageInfo). ## Returns a list of filepaths to files which have been installed. result = initSet[string]() @@ -294,19 +308,19 @@ proc copyFilesRec(origDir, currentDir, dest: string, result.incl copyFileD(pkgInfo.mypath, changeRoot(pkgInfo.mypath.splitFile.dir, dest, pkgInfo.mypath)) -proc saveBabelData(options: TOptions) = +proc saveNimbleData(options: TOptions) = # TODO: This file should probably be locked. - writeFile(options.getBabelDir() / "babeldata.json", pretty(options.babelData)) + writeFile(options.getNimbleDir() / "nimbledata.json", pretty(options.nimbleData)) proc addRevDep(options: TOptions, dep: tuple[name, version: string], pkg: TPackageInfo) = let depNameVer = dep.name & '-' & dep.version - if not options.babelData["reverseDeps"].hasKey(dep.name): - options.babelData["reverseDeps"][dep.name] = newJObject() - if not options.babelData["reverseDeps"][dep.name].hasKey(dep.version): - options.babelData["reverseDeps"][dep.name][dep.version] = newJArray() + if not options.nimbleData["reverseDeps"].hasKey(dep.name): + options.nimbleData["reverseDeps"][dep.name] = newJObject() + if not options.nimbleData["reverseDeps"][dep.name].hasKey(dep.version): + options.nimbleData["reverseDeps"][dep.name][dep.version] = newJArray() let revDep = %{ "name": %pkg.name, "version": %pkg.version} - let thisDep = options.babelData["reverseDeps"][dep.name][dep.version] + let thisDep = options.nimbleData["reverseDeps"][dep.name][dep.version] if revDep notin thisDep: thisDep.add revDep @@ -326,16 +340,16 @@ proc removeRevDep(options: TOptions, pkg: TPackageInfo) = for depTup in pkg.requires: if depTup.name.isURL(): # We sadly must go through everything in this case... - for key, val in options.babelData["reverseDeps"]: + for key, val in options.nimbleData["reverseDeps"]: options.remove(pkg, depTup, val) else: - let thisDep = options.babelData["reverseDeps"][depTup.name] + let thisDep = options.nimbleData["reverseDeps"][depTup.name] if thisDep.isNil: continue options.remove(pkg, depTup, thisDep) # Clean up empty objects/arrays var newData = newJObject() - for key, val in options.babelData["reverseDeps"]: + for key, val in options.nimbleData["reverseDeps"]: if val.len != 0: var newVal = newJObject() for ver, elem in val: @@ -343,9 +357,9 @@ proc removeRevDep(options: TOptions, pkg: TPackageInfo) = newVal[ver] = elem if newVal.len != 0: newData[key] = newVal - options.babelData["reverseDeps"] = newData + options.nimbleData["reverseDeps"] = newData - saveBabelData(options) + saveNimbleData(options) proc install(packages: seq[TPkgTuple], options: TOptions, @@ -384,7 +398,7 @@ proc processDeps(pkginfo: TPackageInfo, options: TOptions): seq[string] = for p in result: let (name, version) = getNameVersion(p) if pkgsInPath.hasKey(name) and pkgsInPath[name] != version: - raise newException(EBabel, + raise newException(ENimble, "Cannot satisfy the dependency on $1 $2 and $1 $3" % [name, version, pkgsInPath[name]]) pkgsInPath[name] = version @@ -394,7 +408,7 @@ proc processDeps(pkginfo: TPackageInfo, options: TOptions): seq[string] = # (unsatisfiable dependendencies). for i in reverseDeps: addRevDep(options, i, pkginfo) - saveBabelData(options) + saveNimbleData(options) proc buildFromDir(pkgInfo: TPackageInfo, paths: seq[string]) = ## Builds a package as specified by ``pkgInfo``. @@ -404,36 +418,36 @@ proc buildFromDir(pkgInfo: TPackageInfo, paths: seq[string]) = for bin in pkgInfo.bin: echo("Building ", pkginfo.name, "/", bin, " using ", pkgInfo.backend, " backend...") - doCmd(getNimBin() & " $# -d:release --noBabelPath $# \"$#\"" % + doCmd(getNimBin() & " $# -d:release --noNimblePath $# \"$#\"" % [pkgInfo.backend, args, realDir / bin.changeFileExt("nim")]) -proc saveBabelMeta(pkgDestDir, url: string, filesInstalled: TSet[string]) = - var babelmeta = %{"url": %url} - babelmeta["files"] = newJArray() +proc saveNimbleMeta(pkgDestDir, url: string, filesInstalled: TSet[string]) = + var nimblemeta = %{"url": %url} + nimblemeta["files"] = newJArray() for file in filesInstalled: - babelmeta["files"].add(%changeRoot(pkgDestDir, "", file)) - writeFile(pkgDestDir / "babelmeta.json", $babelmeta) + nimblemeta["files"].add(%changeRoot(pkgDestDir, "", file)) + writeFile(pkgDestDir / "nimblemeta.json", $nimblemeta) proc removePkgDir(dir: string, options: TOptions) = ## Removes files belonging to the package in ``dir``. try: - var babelmeta = parseFile(dir / "babelmeta.json") - if not babelmeta.hasKey("files"): + var nimblemeta = parseFile(dir / "nimblemeta.json") + if not nimblemeta.hasKey("files"): raise newException(EJsonParsingError, "Meta data does not contain required info.") - for file in babelmeta["files"]: + for file in nimblemeta["files"]: removeFile(dir / file.str) - removeFile(dir / "babelmeta.json") + removeFile(dir / "nimblemeta.json") # If there are no files left in the directory, remove the directory. if toSeq(walkDirRec(dir)).len == 0: removeDir(dir) else: echo("WARNING: Cannot completely remove " & dir & - ". Files not installed by babel are present.") + ". Files not installed by nimble are present.") except EOS, EJsonParsingError: - echo("Error: Unable to read babelmeta.json: ", getCurrentExceptionMsg()) + echo("Error: Unable to read nimblemeta.json: ", getCurrentExceptionMsg()) if not options.prompt("Would you like to COMPLETELY remove ALL files " & "in " & dir & "?"): quit(QuitSuccess) @@ -460,7 +474,7 @@ proc installFromDir(dir: string, latest: bool, options: TOptions, let versionStr = (if latest: "" else: '-' & pkgInfo.version) let pkgDestDir = pkgsDir / (pkgInfo.name & versionStr) - if existsDir(pkgDestDir) and existsFile(pkgDestDir / "babelmeta.json"): + if existsDir(pkgDestDir) and existsFile(pkgDestDir / "nimblemeta.json"): if not options.prompt(pkgInfo.name & versionStr & " already exists. Overwrite?"): quit(QuitSuccess) removePkgDir(pkgDestDir, options) @@ -482,7 +496,7 @@ proc installFromDir(dir: string, latest: bool, options: TOptions, filesInstalled = copyFilesRec(realDir, realDir, pkgDestDir, options, pkgInfo) # Set file permissions to +x for all binaries built, - # and symlink them on *nix OS' to $babelDir/bin/ + # and symlink them on *nix OS' to $nimbleDir/bin/ for bin in pkgInfo.bin: if not existsFile(pkgDestDir / bin): filesInstalled.incl copyFileD(realDir / bin, pkgDestDir / bin) @@ -506,8 +520,8 @@ proc installFromDir(dir: string, latest: bool, options: TOptions, filesInstalled = copyFilesRec(realDir, realDir, pkgDestDir, options, pkgInfo) - # Save a babelmeta.json file. - saveBabelMeta(pkgDestDir, url, filesInstalled) + # Save a nimblemeta.json file. + saveNimbleMeta(pkgDestDir, url, filesInstalled) # Return the paths to the dependencies of this package. result.paths.add pkgDestDir @@ -515,14 +529,14 @@ proc installFromDir(dir: string, latest: bool, options: TOptions, echo(pkgInfo.name & " installed successfully.") -proc getBabelTempDir(): string = +proc getNimbleTempDir(): string = ## Returns a path to a temporary directory. ## ## The returned path will be the same for the duration of the process but ## different for different runs of it. You have to make sure to create it - ## first. In release builds the directory will be removed when babel finishes + ## first. In release builds the directory will be removed when nimble finishes ## its work. - result = getTempDir() / "babel_" + result = getTempDir() / "nimble_" when defined(windows): proc GetCurrentProcessId(): int32 {.stdcall, dynlib: "kernel32", importc: "GetCurrentProcessId".} @@ -532,14 +546,14 @@ proc getBabelTempDir(): string = proc downloadPkg(url: string, verRange: PVersionRange, downMethod: TDownloadMethod): string = - let downloadDir = (getBabelTempDir() / getDownloadDirName(url, verRange)) + let downloadDir = (getNimbleTempDir() / getDownloadDirName(url, verRange)) createDir(downloadDir) echo("Downloading ", url, " into ", downloadDir, " using ", downMethod, "...") doDownload(url, downloadDir, verRange, downMethod) result = downloadDir proc downloadPkg(pkg: TPackage, verRange: PVersionRange): string = - let downloadDir = (getBabelTempDir() / getDownloadDirName(pkg, verRange)) + let downloadDir = (getNimbleTempDir() / getDownloadDirName(pkg, verRange)) let downMethod = pkg.downloadMethod.getDownloadMethod() createDir(downloadDir) echo("Downloading ", pkg.name, " into ", downloadDir, " using ", downMethod, "...") @@ -553,12 +567,12 @@ proc install(packages: seq[TPkgTuple], result = installFromDir(getCurrentDir(), false, options, "") else: # If packages.json is not present ask the user if they want to download it. - if not existsFile(options.getBabelDir / "packages.json"): + if not existsFile(options.getNimbleDir / "packages.json"): if doPrompt and options.prompt("Local packages.json not found, download it from internet?"): update(options) else: - quit("Please run babel update.", QuitFailure) + quit("Please run nimble update.", QuitFailure) # Install each package. for pv in packages: @@ -568,7 +582,7 @@ proc install(packages: seq[TPkgTuple], result = installFromDir(downloadDir, false, options, pv.name) else: var pkg: TPackage - if getPackage(pv.name, options.getBabelDir() / "packages.json", pkg): + if getPackage(pv.name, options.getNimbleDir() / "packages.json", pkg): let downloadDir = downloadPkg(pkg, pv.ver) result = installFromDir(downloadDir, false, options, pkg.url) else: @@ -579,7 +593,7 @@ proc install(packages: seq[TPkgTuple], update(options) result = install(@[pv], options, false) else: - raise newException(EBabel, "Package not found.") + raise newException(ENimble, "Package not found.") proc build(options: TOptions) = var pkgInfo = getPkgInfo(getCurrentDir()) @@ -592,10 +606,10 @@ proc search(options: TOptions) = ## Searches are done in a case insensitive way making all strings lower case. assert options.action.typ == ActionSearch if options.action.search == @[]: - raise newException(EBabel, "Please specify a search string.") - if not existsFile(options.getBabelDir() / "packages.json"): - raise newException(EBabel, "Please run babel update.") - let pkgList = getPackageList(options.getBabelDir() / "packages.json") + raise newException(ENimble, "Please specify a search string.") + if not existsFile(options.getNimbleDir() / "packages.json"): + raise newException(ENimble, "Please run nimble update.") + let pkgList = getPackageList(options.getNimbleDir() / "packages.json") var found = false template onFound: stmt = echoPackage(pkg) @@ -619,9 +633,9 @@ proc search(options: TOptions) = echo("No package found.") proc list(options: TOptions) = - if not existsFile(options.getBabelDir() / "packages.json"): - raise newException(EBabel, "Please run babel update.") - let pkgList = getPackageList(options.getBabelDir() / "packages.json") + if not existsFile(options.getNimbleDir() / "packages.json"): + raise newException(ENimble, "Please run nimble update.") + let pkgList = getPackageList(options.getNimbleDir() / "packages.json") for pkg in pkgList: echoPackage(pkg) if options.queryVersions: @@ -647,15 +661,15 @@ proc listPaths(options: TOptions) = if kind != pcDir or not path.startsWith(options.getPkgsDir / name): continue - let babelFile = path / name.addFileExt("babel") - if existsFile(babelFile): + let nimbleFile = path / name.addFileExt("nimble") + if existsFile(nimbleFile): var pkgInfo = getPkgInfo(path) var v: VersionAndPath v.version = newVersion(pkgInfo.version) v.path = options.getPkgsDir / (pkgInfo.name & '-' & pkgInfo.version) installed.add(v) else: - echo "Warning: No .babel file found for ", path + echo "Warning: No .nimble file found for ", path if installed.len > 0: sort(installed, system.cmp[VersionAndPath], Descending) @@ -664,36 +678,36 @@ proc listPaths(options: TOptions) = echo "Warning: Package '" & name & "' not installed" errors += 1 if errors > 0: - raise newException(EBabel, "At least one of the specified packages was not found") + raise newException(ENimble, "At least one of the specified packages was not found") proc init(options: TOptions) = - echo("Initializing new Babel project!") + echo("Initializing new Nimble project!") var pkgName, fName: string = "" outFile: TFile if (options.action.projName != ""): pkgName = options.action.projName - fName = pkgName & ".babel" + fName = pkgName & ".nimble" if ( existsFile( os.getCurrentDir() / fName ) ): - raise newException(EBabel, "Already have a babel file.") + raise newException(ENimble, "Already have a nimble file.") else: echo("Enter a project name for this (blank to use working directory), Ctrl-C to abort:") pkgName = readline(stdin) if (pkgName == ""): pkgName = os.getCurrentDir().splitPath.tail if (pkgName == ""): - raise newException(EBabel, "Could not get default file path.") - fName = pkgName & ".babel" + raise newException(ENimble, "Could not get default file path.") + fName = pkgName & ".nimble" - # Now need to write out .babel file with projName and other details + # Now need to write out .nimble file with projName and other details if (not existsFile(os.getCurrentDir() / fName) and open(f=outFile, filename = fName, mode = fmWrite)): outFile.writeln("[Package]") outFile.writeln("name = \"" & pkgName & "\"") outFile.writeln("version = \"0.01\"") outFile.writeln("author = \"Anonymous\"") - outFile.writeln("description = \"New Babel project for Nimrod\"") + outFile.writeln("description = \"New Nimble project for Nimrod\"") outFile.writeln("license = \"BSD\"") outFile.writeln("") outFile.writeln("[Deps]") @@ -701,7 +715,7 @@ proc init(options: TOptions) = close(outFile) else: - raise newException(EBabel, "Unable to open file " & fName & " for writing: " & osErrorMsg()) + raise newException(ENimble, "Unable to open file " & fName & " for writing: " & osErrorMsg()) proc uninstall(options: TOptions) = var pkgsToDelete: seq[TPackageInfo] = @[] @@ -711,14 +725,14 @@ proc uninstall(options: TOptions) = let installedPkgs = getInstalledPkgs(options.getPkgsDir()) var pkgList = findAllPkgs(installedPkgs, pkgTup) if pkgList.len == 0: - raise newException(EBabel, "Package not found") + raise newException(ENimble, "Package not found") echo("Checking reverse dependencies...") var errors: seq[string] = @[] for pkg in pkgList: # Check whether any packages depend on the ones the user is trying to # uninstall. - let thisPkgsDep = options.babelData["reverseDeps"]{pkg.name}{pkg.version} + let thisPkgsDep = options.nimbleData["reverseDeps"]{pkg.name}{pkg.version} if not thisPkgsDep.isNil: var reason = "" if thisPkgsDep.len == 1: @@ -737,7 +751,7 @@ proc uninstall(options: TOptions) = pkgsToDelete.add pkg if pkgsToDelete.len == 0: - raise newException(EBabel, "\n " & errors.join("\n ")) + raise newException(ENimble, "\n " & errors.join("\n ")) var pkgNames = "" for i in 0 .. = 5): - when not defined(`{}`): - proc `{}`*(node: PJsonNode, key: string): PJsonNode = - ## Transverses the node and gets the given value. If any of the - ## names does not exist, returns nil - result = node - if isNil(node): return nil - result = result[key] - - when not defined(`{}=`): - proc `{}=`*(node: PJsonNode, names: varargs[string], value: PJsonNode) = - ## Transverses the node and tries to set the value at the given location - ## to `value` If any of the names are missing, they are added - var node = node - for i in 0..(names.len-2): - if isNil(node[names[i]]): - node[names[i]] = newJObject() - node = node[names[i]] - node[names[names.len-1]] = value diff --git a/src/nimblepkg/compat.nim b/src/nimblepkg/compat.nim new file mode 100644 index 0000000..f0b8db1 --- /dev/null +++ b/src/nimblepkg/compat.nim @@ -0,0 +1,29 @@ +# Copyright (C) Dominik Picheta. All rights reserved. +# BSD License. Look at license.txt for more info. + +## This module contains additional code from the development version of +## Nimrod's standard library. These procs are required to be able to compile +## against the last stable release 0.9.4. Once 0.9.6 is release these procs +## will disappear. + +import json +when false: + when not (NimrodPatch >= 5): + when not defined(`{}`): + proc `{}`*(node: PJsonNode, key: string): PJsonNode = + ## Transverses the node and gets the given value. If any of the + ## names does not exist, returns nil + result = node + if isNil(node): return nil + result = result[key] + + when not defined(`{}=`): + proc `{}=`*(node: PJsonNode, names: varargs[string], value: PJsonNode) = + ## Transverses the node and tries to set the value at the given location + ## to `value` If any of the names are missing, they are added + var node = node + for i in 0..(names.len-2): + if isNil(node[names[i]]): + node[names[i]] = newJObject() + node = node[names[i]] + node[names[names.len-1]] = value diff --git a/src/babelpkg/config.nim b/src/nimblepkg/config.nim similarity index 55% rename from src/babelpkg/config.nim rename to src/nimblepkg/config.nim index 3e42476..b24825a 100644 --- a/src/babelpkg/config.nim +++ b/src/nimblepkg/config.nim @@ -6,16 +6,23 @@ import tools type TConfig* = object - babelDir*: string + nimbleDir*: string proc initConfig(): TConfig = - result.babelDir = getHomeDir() / ".babel" + result.nimbleDir = getHomeDir() / ".nimble" proc parseConfig*(): TConfig = result = initConfig() - let confFile = getConfigDir() / "babel" / "babel.ini" + var confFile = getConfigDir() / "nimble" / "nimble.ini" var f = newFileStream(confFile, fmRead) + if f == nil: + # Try the old deprecated babel.ini + confFile = getConfigDir() / "babel" / "babel.ini" + f = newFileStream(confFile, fmRead) + if f != nil: + echo("[Warning] Using deprecated config file at ", confFile) + if f != nil: echo("Reading from config file at ", confFile) var p: TCfgParser @@ -28,11 +35,11 @@ proc parseConfig*(): TConfig = of cfgSectionStart: discard of cfgKeyValuePair, cfgOption: case e.key.normalize - of "babeldir": - result.babelDir = e.value + of "nimbledir": + result.nimbleDir = e.value else: - raise newException(EBabel, "Unable to parse config file:" & + raise newException(ENimble, "Unable to parse config file:" & " Unknown key: " & e.key) of cfgError: - raise newException(EBabel, "Unable to parse config file: " & e.msg) + raise newException(ENimble, "Unable to parse config file: " & e.msg) close(p) diff --git a/src/babelpkg/download.nim b/src/nimblepkg/download.nim similarity index 97% rename from src/babelpkg/download.nim rename to src/nimblepkg/download.nim index 9562edb..230ecde 100644 --- a/src/babelpkg/download.nim +++ b/src/nimblepkg/download.nim @@ -111,7 +111,7 @@ proc getDownloadMethod*(meth: string): TDownloadMethod = of "git": return TDownloadMethod.Git of "hg", "mercurial": return TDownloadMethod.Hg else: - raise newException(EBabel, "Invalid download method: " & meth) + raise newException(ENimble, "Invalid download method: " & meth) proc getHeadName*(meth: TDownloadMethod): string = ## Returns the name of the download method specific head. i.e. for git @@ -127,7 +127,7 @@ proc checkUrlType*(url: string): TDownloadMethod = elif doCmdEx("hg identify " & url).exitCode == QuitSuccess: return TDownloadMethod.Hg else: - raise newException(EBabel, "Unable to identify url.") + raise newException(ENimble, "Unable to identify url.") proc isURL*(name: string): bool = name.startsWith(peg" @'://' ") @@ -143,7 +143,7 @@ proc doDownload*(url: string, downloadDir: string, verRange: PVersionRange, # If no tagged versions satisfy our range latest.tag will be "". # We still clone in that scenario because we want to try HEAD in that case. - # https://github.com/nimrod-code/babel/issues/22 + # https://github.com/nimrod-code/nimble/issues/22 meth proc verifyClone() = @@ -151,7 +151,7 @@ proc doDownload*(url: string, downloadDir: string, verRange: PVersionRange, ## version range. let pkginfo = getPkgInfo(downloadDir) if pkginfo.version.newVersion notin verRange: - raise newException(EBabel, + raise newException(ENimble, "Downloaded package's version does not satisfy requested version " & "range: wanted $1 got $2." % [$verRange, $pkginfo.version]) diff --git a/src/babelpkg/packageinfo.nim b/src/nimblepkg/packageinfo.nim similarity index 81% rename from src/babelpkg/packageinfo.nim rename to src/nimblepkg/packageinfo.nim index ad56d8c..8b3056e 100644 --- a/src/babelpkg/packageinfo.nim +++ b/src/nimblepkg/packageinfo.nim @@ -7,7 +7,7 @@ type TPkgTuple* = tuple[name: string, ver: PVersionRange] TPackageInfo* = object - mypath*: string ## The path of this .babel file + mypath*: string ## The path of this .nimble file name*: string version*: string author*: string @@ -60,25 +60,25 @@ proc initPackageInfo(): TPackageInfo = proc validatePackageInfo(pkgInfo: TPackageInfo, path: string) = if pkgInfo.name == "": - raise newException(EBabel, "Incorrect .babel file: " & path & + raise newException(ENimble, "Incorrect .nimble file: " & path & " does not contain a name field.") if pkgInfo.version == "": - raise newException(EBabel, "Incorrect .babel file: " & path & + raise newException(ENimble, "Incorrect .nimble file: " & path & " does not contain a version field.") if pkgInfo.author == "": - raise newException(EBabel, "Incorrect .babel file: " & path & + raise newException(ENimble, "Incorrect .nimble file: " & path & " does not contain an author field.") if pkgInfo.description == "": - raise newException(EBabel, "Incorrect .babel file: " & path & + raise newException(ENimble, "Incorrect .nimble file: " & path & " does not contain a description field.") if pkgInfo.license == "": - raise newException(EBabel, "Incorrect .babel file: " & path & + raise newException(ENimble, "Incorrect .nimble file: " & path & " does not contain a license field.") if pkgInfo.backend notin ["c", "cc", "objc", "cpp", "js"]: - raise newException(EBabel, "'" & pkgInfo.backend & "' is an invalid backend.") + raise newException(ENimble, "'" & pkgInfo.backend & "' is an invalid backend.") for c in pkgInfo.version: if c notin ({'.'} + Digits): - raise newException(EBabel, + raise newException(ENimble, "Version may only consist of numbers and the '.' character " & "but found '" & c & "'.") @@ -96,7 +96,7 @@ proc parseRequires(req: string): TPkgTuple = result.name = req.strip result.ver = PVersionRange(kind: verAny) except EParseVersion: - raise newException(EBabel, "Unable to parse dependency version range: " & + raise newException(ENimble, "Unable to parse dependency version range: " & getCurrentExceptionMsg()) proc multiSplit(s: string): seq[string] = @@ -160,18 +160,18 @@ proc readPackageInfo*(path: string): TPackageInfo = case result.backend.normalize of "javascript": result.backend = "js" else: - raise newException(EBabel, "Invalid field: " & ev.key) + raise newException(ENimble, "Invalid field: " & ev.key) of "deps", "dependencies": case ev.key.normalize of "requires": for v in ev.value.multiSplit: result.requires.add(parseRequires(v.strip)) else: - raise newException(EBabel, "Invalid field: " & ev.key) - else: raise newException(EBabel, "Invalid section: " & currentSection) - of cfgOption: raise newException(EBabel, "Invalid package info, should not contain --" & ev.value) + raise newException(ENimble, "Invalid field: " & ev.key) + else: raise newException(ENimble, "Invalid section: " & currentSection) + of cfgOption: raise newException(ENimble, "Invalid package info, should not contain --" & ev.value) of cfgError: - raise newException(EBabel, "Error parsing .babel file: " & ev.msg) + raise newException(ENimble, "Error parsing .nimble file: " & ev.msg) close(p) else: raise newException(EInvalidValue, "Cannot open package info: " & path) @@ -187,7 +187,7 @@ proc optionalField(obj: PJsonNode, name: string, default = ""): string = if obj[name].kind == JString: return obj[name].str else: - raise newException(EBabel, "Corrupted packages.json file. " & name & " field is of unexpected type.") + raise newException(ENimble, "Corrupted packages.json file. " & name & " field is of unexpected type.") else: return default proc requiredField(obj: PJsonNode, name: string): string = @@ -196,7 +196,7 @@ proc requiredField(obj: PJsonNode, name: string): string = ## Aborts execution if the field does not exist or is of invalid json type. result = optionalField(obj, name, nil) if result == nil: - raise newException(EBabel, + raise newException(ENimble, "Package in packages.json file does not contain a " & name & " field.") proc fromJson(obj: PJSonNode): TPackage = @@ -216,14 +216,18 @@ proc fromJson(obj: PJSonNode): TPackage = result.web = obj.optionalField("web") proc readMetadata*(path: string): TMetadata = - ## Reads the metadata present in ``~/.babel/pkgs/pkg-0.1/babelmeta.json`` - let bmeta = path / "babelmeta.json" + ## Reads the metadata present in ``~/.nimble/pkgs/pkg-0.1/nimblemeta.json`` + var bmeta = path / "nimblemeta.json" + if not existsFile(bmeta): + bmeta = path / "babelmeta.json" + if existsFile(bmeta): + echo("WARNING: using deprecated babelmeta.json file in " & path) if not existsFile(bmeta): result.url = "" - echo("WARNING: No babelmeta.json file found in " & path) + echo("WARNING: No nimblemeta.json file found in " & path) return # TODO: Make this an error. - let cont = readFile(path / "babelmeta.json") + let cont = readFile(bmeta) let jsonmeta = parseJson(cont) result.url = jsonmeta["url"].str @@ -247,35 +251,35 @@ proc getPackageList*(packagesPath: string): seq[TPackage] = let pkg: TPackage = p.fromJson() result.add(pkg) -proc findBabelFile*(dir: string): string = +proc findNimbleFile*(dir: string): string = result = "" for kind, path in walkDir(dir): - if kind == pcFile and path.splitFile.ext == ".babel": + if kind == pcFile and path.splitFile.ext in [".babel", ".nimble"]: if result != "": - raise newException(EBabel, "Only one .babel file should be present in " & dir) + raise newException(ENimble, "Only one .nimble file should be present in " & dir) result = path proc getPkgInfo*(dir: string): TPackageInfo = - ## Find the .babel file in ``dir`` and parses it, returning a TPackageInfo. - let babelFile = findBabelFile(dir) - if babelFile == "": - raise newException(EBabel, "Specified directory does not contain a .babel file.") - result = readPackageInfo(babelFile) + ## Find the .nimble file in ``dir`` and parses it, returning a TPackageInfo. + let nimbleFile = findNimbleFile(dir) + if nimbleFile == "": + raise newException(ENimble, "Specified directory does not contain a .nimble file.") + result = readPackageInfo(nimbleFile) proc getInstalledPkgs*(libsDir: string): seq[tuple[pkginfo: TPackageInfo, meta: TMetaData]] = ## Gets a list of installed packages. ## - ## ``libsDir`` is in most cases: ~/.babel/pkgs/ + ## ``libsDir`` is in most cases: ~/.nimble/pkgs/ result = @[] for kind, path in walkDir(libsDir): if kind == pcDir: - let babelFile = findBabelFile(path) - if babelFile != "": + let nimbleFile = findNimbleFile(path) + if nimbleFile != "": let meta = readMetadata(path) - result.add((readPackageInfo(babelFile), meta)) + result.add((readPackageInfo(nimbleFile), meta)) else: # TODO: Abstract logging. - echo("WARNING: No .babel file found for ", path) + echo("WARNING: No .nimble file found for ", path) proc findPkg*(pkglist: seq[tuple[pkginfo: TPackageInfo, meta: TMetaData]], dep: TPkgTuple, @@ -315,7 +319,7 @@ proc getRealDir*(pkgInfo: TPackageInfo): string = result = pkgInfo.mypath.splitFile.dir proc getNameVersion*(pkgpath: string): tuple[name, version: string] = - ## Splits ``pkgpath`` in the format ``/home/user/.babel/pkgs/package-0.1`` + ## Splits ``pkgpath`` in the format ``/home/user/.nimble/pkgs/package-0.1`` ## into ``(packagea, 0.1)`` result.name = "" result.version = "" @@ -347,5 +351,5 @@ proc getDownloadDirName*(pkg: TPackage, verRange: PVersionRange): string = result.add verSimple when isMainModule: - doAssert getNameVersion("/home/user/.babel/libs/packagea-0.1") == ("packagea", "0.1") - doAssert getNameVersion("/home/user/.babel/libs/package-a-0.1") == ("package-a", "0.1") + doAssert getNameVersion("/home/user/.nimble/libs/packagea-0.1") == ("packagea", "0.1") + doAssert getNameVersion("/home/user/.nimble/libs/package-a-0.1") == ("package-a", "0.1") diff --git a/src/babelpkg/tools.nim b/src/nimblepkg/tools.nim similarity index 93% rename from src/babelpkg/tools.nim rename to src/nimblepkg/tools.nim index 0381aff..295c0bb 100644 --- a/src/babelpkg/tools.nim +++ b/src/nimblepkg/tools.nim @@ -6,21 +6,21 @@ import osproc, pegs, strutils, os, parseurl, sets, json import version, packageinfo type - EBabel* = object of EBase + ENimble* = object of EBase proc doCmd*(cmd: string) = let bin = cmd.split(' ')[0] if findExe(bin) == "": - raise newException(EBabel, "'" & bin & "' not in PATH.") + raise newException(ENimble, "'" & bin & "' not in PATH.") let exitCode = execCmd(cmd) if exitCode != QuitSuccess: - raise newException(EBabel, "Execution failed with exit code " & $exitCode) + raise newException(ENimble, "Execution failed with exit code " & $exitCode) proc doCmdEx*(cmd: string): tuple[output: TaintedString, exitCode: int] = let bin = cmd.split(' ')[0] if findExe(bin) == "": - raise newException(EBabel, "'" & bin & "' not in PATH.") + raise newException(ENimble, "'" & bin & "' not in PATH.") return execCmdEx(cmd) template cd*(dir: string, body: stmt) = diff --git a/src/nimblepkg/version b/src/nimblepkg/version new file mode 100755 index 0000000000000000000000000000000000000000..c152294bc71b308dfd572e70a8c01273f119c072 GIT binary patch literal 254611 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