Address misc review

This commit is contained in:
Matthew Bauer 2020-07-30 15:18:48 -05:00
parent 1a705637ce
commit 22fcfdf18a

View file

@ -9,7 +9,7 @@ using namespace nix;
struct CmdBundle : InstallableCommand struct CmdBundle : InstallableCommand
{ {
std::string bundler = "github:matthewbauer/nix-bundle"; std::string bundler = "github:matthewbauer/nix-bundle";
Path outLink; std::optional<Path> outLink;
CmdBundle() CmdBundle()
{ {
@ -92,18 +92,18 @@ struct CmdBundle : InstallableCommand
if (!evalState->isDerivation(*vRes)) if (!evalState->isDerivation(*vRes))
throw Error("the bundler '%s' does not produce a derivation", bundler.what()); throw Error("the bundler '%s' does not produce a derivation", bundler.what());
Bindings::iterator i = vRes->attrs->find(evalState->sDrvPath); auto attr1 = vRes->attrs->find(evalState->sDrvPath);
if (i == vRes->attrs->end()) if (!attr1)
throw Error("the bundler '%s' does not produce a bderivation", bundler.what());
PathSet context2;
StorePath drvPath = store->parseStorePath(evalState->coerceToPath(*i->pos, *i->value, context2));
i = vRes->attrs->find(evalState->sOutPath);
if (i == vRes->attrs->end())
throw Error("the bundler '%s' does not produce a derivation", bundler.what()); throw Error("the bundler '%s' does not produce a derivation", bundler.what());
StorePath outPath = store->parseStorePath(evalState->coerceToPath(*i->pos, *i->value, context2)); PathSet context2;
StorePath drvPath = store->parseStorePath(evalState->coerceToPath(*attr1->pos, *attr1->value, context2));
auto attr2 = vRes->attrs->find(evalState->sOutPath);
if (!attr2)
throw Error("the bundler '%s' does not produce a derivation", bundler.what());
StorePath outPath = store->parseStorePath(evalState->coerceToPath(*attr2->pos, *attr2->value, context2));
store->buildPaths({{drvPath}}); store->buildPaths({{drvPath}});
@ -113,10 +113,10 @@ struct CmdBundle : InstallableCommand
if (!info->references.empty()) if (!info->references.empty())
throw Error("'%s' has references; a bundler must not leave any references", outPathS); throw Error("'%s' has references; a bundler must not leave any references", outPathS);
if (outLink == "") if (!outLink)
outLink = baseNameOf(app.program); outLink = baseNameOf(app.program);
store.dynamic_pointer_cast<LocalFSStore>()->addPermRoot(outPath, absPath(outLink), true); store.dynamic_pointer_cast<LocalFSStore>()->addPermRoot(outPath, absPath(*outLink), true);
} }
}; };