This commit is contained in:
Eelco Dolstra 2025-04-11 12:32:42 -04:00 committed by GitHub
commit 1907d911f6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 13 deletions

View File

@ -236,7 +236,8 @@ void ParseQuoted::operator()(std::shared_ptr<Parser> &state, Strings & r) {
assert(false);
}
Strings parseShebangContent(std::string_view s) {
Strings parseShebangContent(std::string_view s)
{
Strings result;
std::shared_ptr<Parser> parserState(std::make_shared<ParseUnquoted>(ParseUnquoted(s)));

View File

@ -96,6 +96,19 @@ static bool haveInternet()
#endif
}
static void disableNet()
{
// FIXME: should check for command line overrides only.
if (!settings.useSubstitutes.overridden)
settings.useSubstitutes = false;
if (!settings.tarballTtl.overridden)
settings.tarballTtl = std::numeric_limits<unsigned int>::max();
if (!fileTransferSettings.tries.overridden)
fileTransferSettings.tries = 0;
if (!fileTransferSettings.connectTimeout.overridden)
fileTransferSettings.connectTimeout = 1;
}
std::string programPath;
struct NixArgs : virtual MultiCommand, virtual MixCommonArgs, virtual RootArgs
@ -485,10 +498,16 @@ void mainWrapped(int argc, char * * argv)
}
});
if (getEnv("NIX_GET_COMPLETIONS"))
/* Avoid fetching stuff during tab completion. We have to this
early because we haven't checked `haveInternet()` yet
(below). */
disableNet();
try {
auto isNixCommand = std::regex_search(programName, std::regex("nix$"));
auto allowShebang = isNixCommand && argc > 1;
args.parseCmdline(argvToStrings(argc, argv),allowShebang);
args.parseCmdline(argvToStrings(argc, argv), allowShebang);
} catch (UsageError &) {
if (!args.helpRequested && !args.completions) throw;
}
@ -525,17 +544,8 @@ void mainWrapped(int argc, char * * argv)
args.useNet = false;
}
if (!args.useNet) {
// FIXME: should check for command line overrides only.
if (!settings.useSubstitutes.overridden)
settings.useSubstitutes = false;
if (!settings.tarballTtl.overridden)
settings.tarballTtl = std::numeric_limits<unsigned int>::max();
if (!fileTransferSettings.tries.overridden)
fileTransferSettings.tries = 0;
if (!fileTransferSettings.connectTimeout.overridden)
fileTransferSettings.connectTimeout = 1;
}
if (!args.useNet)
disableNet();
if (args.refresh) {
settings.tarballTtl = 0;