Clean up `app.cc` (#9201)

- Rename `expected` to `expectedType`

- Use early `return` and `continue` to reduce nesting
This commit is contained in:
Кирилл Трофимов 2023-10-23 01:56:46 +03:00 committed by GitHub
parent edc07588ec
commit 201a4af9a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 18 deletions

2
.gitignore vendored
View File

@ -138,7 +138,9 @@ nix-rust/target
result
# IDE
.vscode/
.idea/
# clangd and possibly more
.cache/

View File

@ -20,20 +20,24 @@ StringPairs resolveRewrites(
const std::vector<BuiltPathWithResult> & dependencies)
{
StringPairs res;
if (experimentalFeatureSettings.isEnabled(Xp::CaDerivations)) {
for (auto & dep : dependencies) {
if (auto drvDep = std::get_if<BuiltPathBuilt>(&dep.path)) {
for (auto & [ outputName, outputPath ] : drvDep->outputs) {
res.emplace(
DownstreamPlaceholder::fromSingleDerivedPathBuilt(
SingleDerivedPath::Built {
.drvPath = make_ref<SingleDerivedPath>(drvDep->drvPath->discardOutputPath()),
.output = outputName,
}).render(),
store.printStorePath(outputPath)
);
}
}
if (!experimentalFeatureSettings.isEnabled(Xp::CaDerivations)) {
return res;
}
for (auto &dep: dependencies) {
auto drvDep = std::get_if<BuiltPathBuilt>(&dep.path);
if (!drvDep) {
continue;
}
for (const auto & [ outputName, outputPath ] : drvDep->outputs) {
res.emplace(
DownstreamPlaceholder::fromSingleDerivedPathBuilt(
SingleDerivedPath::Built {
.drvPath = make_ref<SingleDerivedPath>(drvDep->drvPath->discardOutputPath()),
.output = outputName,
}).render(),
store.printStorePath(outputPath)
);
}
}
return res;
@ -58,11 +62,11 @@ UnresolvedApp InstallableValue::toApp(EvalState & state)
auto type = cursor->getAttr("type")->getString();
std::string expected = !attrPath.empty() &&
std::string expectedType = !attrPath.empty() &&
(state.symbols[attrPath[0]] == "apps" || state.symbols[attrPath[0]] == "defaultApp")
? "app" : "derivation";
if (type != expected)
throw Error("attribute '%s' should have type '%s'", cursor->getAttrPathStr(), expected);
if (type != expectedType)
throw Error("attribute '%s' should have type '%s'", cursor->getAttrPathStr(), expectedType);
if (type == "app") {
auto [program, context] = cursor->getAttr("program")->getStringWithContext();
@ -91,7 +95,7 @@ UnresolvedApp InstallableValue::toApp(EvalState & state)
}, c.raw));
}
return UnresolvedApp{App {
return UnresolvedApp { App {
.context = std::move(context2),
.program = program,
}};