aboutsummaryrefslogtreecommitdiff
path: root/src/nix-prefetch-url/nix-prefetch-url.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-prefetch-url/nix-prefetch-url.cc')
-rw-r--r--src/nix-prefetch-url/nix-prefetch-url.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/nix-prefetch-url/nix-prefetch-url.cc b/src/nix-prefetch-url/nix-prefetch-url.cc
index a3b025723..f54706a8a 100644
--- a/src/nix-prefetch-url/nix-prefetch-url.cc
+++ b/src/nix-prefetch-url/nix-prefetch-url.cc
@@ -6,6 +6,9 @@
#include "eval-inline.hh"
#include "common-eval-args.hh"
#include "attr-path.hh"
+#include "legacy.hh"
+#include "finally.hh"
+#include "progress-bar.hh"
#include <iostream>
@@ -44,12 +47,9 @@ string resolveMirrorUri(EvalState & state, string uri)
}
-int main(int argc, char * * argv)
+static int _main(int argc, char * * argv)
{
- return handleExceptions(argv[0], [&]() {
- initNix();
- initGC();
-
+ {
HashType ht = htSHA256;
std::vector<string> args;
bool printPath = getEnv("PRINT_PATH") != "";
@@ -98,6 +98,11 @@ int main(int argc, char * * argv)
if (args.size() > 2)
throw UsageError("too many arguments");
+ Finally f([]() { stopProgressBar(); });
+
+ if (isatty(STDERR_FILENO))
+ startProgressBar();
+
auto store = openStore();
auto state = std::make_unique<EvalState>(myArgs.searchPath, store);
@@ -215,11 +220,17 @@ int main(int argc, char * * argv)
assert(storePath == store->makeFixedOutputPath(unpack, hash, name));
}
+ stopProgressBar();
+
if (!printPath)
printInfo(format("path is '%1%'") % storePath);
std::cout << printHash16or32(hash) << std::endl;
if (printPath)
std::cout << storePath << std::endl;
- });
+
+ return 0;
+ }
}
+
+static RegisterLegacyCommand s1("nix-prefetch-url", _main);