From c3f76188794ef0020e405ff44a6045ffc639abc3 Mon Sep 17 00:00:00 2001 From: Simon Kagstrom Date: Tue, 9 Jul 2024 16:35:06 +0200 Subject: [PATCH] configuration/main: Set content hash filename for bash in a single place --- src/configuration.cc | 23 ++++++++++++++++++----- src/main.cc | 10 ---------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/configuration.cc b/src/configuration.cc index 10964de4..d81126f1 100644 --- a/src/configuration.cc +++ b/src/configuration.cc @@ -493,11 +493,26 @@ class Configuration : public IConfiguration setKey("binary-path", tmp.first); binaryName = tmp.second; + setKey("binary-name", binaryName); + if (!keyAsInt("cobertura-only")) { - setKey("target-directory", - fmt("%s/%s.%08zx", outDirectory.c_str(), binaryName.c_str(), - (size_t)hash_file(get_real_path(binaryPath)))); + IFileParser *parser = IParserManager::getInstance().matchParser(binaryPath); + + if (parser && (parser->getParserType() == "bash" || + parser->getParserType() == "python")) + { + // Use the path as the hash for non-compiled languages + setKey("target-directory", + fmt("%s/%s.%08zx", keyAsString("out-directory").c_str(), keyAsString("binary-name").c_str(), + std::hash()(keyAsString("binary-name").c_str()))); + } + else + { + setKey("target-directory", + fmt("%s/%s.%08zx", outDirectory.c_str(), binaryName.c_str(), + (size_t)hash_file(get_real_path(binaryPath)))); + } } else { @@ -511,8 +526,6 @@ class Configuration : public IConfiguration return usage(); } - setKey("binary-name", binaryName); - if (keyAsString("command-name") == "") setKey("command-name", binaryName); } diff --git a/src/main.cc b/src/main.cc index 20f8b477..baf3b739 100644 --- a/src/main.cc +++ b/src/main.cc @@ -224,16 +224,6 @@ static int runKcov(IConfiguration::RunMode_t runningMode) return 1; } - if ((parser->getParserType() == "bash" || - parser->getParserType() == "python") && - !conf.keyAsInt("cobertura-only")) - { - // Use the path as the hash for non-compiled languages - conf.setKey("target-directory", - fmt("%s/%s.%08zx", conf.keyAsString("out-directory").c_str(), conf.keyAsString("binary-name").c_str(), - std::hash()(conf.keyAsString("binary-name").c_str()))); - } - // Match and create an engine IEngineFactory::IEngineCreator &engineCreator = IEngineFactory::getInstance().matchEngine(file);