diff options
Diffstat (limited to 'tools/officialpackages.nim')
-rw-r--r-- | tools/officialpackages.nim | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/officialpackages.nim b/tools/officialpackages.nim new file mode 100644 index 000000000..633944a14 --- /dev/null +++ b/tools/officialpackages.nim @@ -0,0 +1,21 @@ +import std/[strformat, paths, dirs, envvars] +from std/os import execShellCmd + +proc exec*(cmd: string, errorcode: int = QuitFailure, additionalPath = "") = + let prevPath = getEnv("PATH") + if additionalPath.len > 0: + var absolute = Path(additionalPath) + if not absolute.isAbsolute: + absolute = getCurrentDir() / absolute + echo("Adding to $PATH: ", string(absolute)) + putEnv("PATH", (if prevPath.len > 0: prevPath & PathSep else: "") & string(absolute)) + echo(cmd) + if execShellCmd(cmd) != 0: quit("FAILURE", errorcode) + putEnv("PATH", prevPath) + +proc gitClonePackages*(names: seq[string]) = + if not dirExists(Path"pkgs"): + createDir(Path"pkgs") + for name in names: + if not dirExists(Path"pkgs" / Path(name)): + exec fmt"git clone https://github.com/nim-lang/{name} pkgs/{name}" |