From 8413f1a37608e3a27d609663932b11f14f0f28d3 Mon Sep 17 00:00:00 2001 From: PhilipDeegan Date: Mon, 12 Aug 2024 21:37:46 +0200 Subject: [PATCH 1/5] next --- .github/workflows/ubuntu_latest.yml | 4 +- .gitignore | 1 + .sublime-project | 6 ++ .travis.yml | 37 ---------- README.md | 5 +- mod.cpp | 109 ++++++++++++++-------------- 6 files changed, 64 insertions(+), 98 deletions(-) delete mode 100644 .travis.yml diff --git a/.github/workflows/ubuntu_latest.yml b/.github/workflows/ubuntu_latest.yml index 033ad7f..650fafc 100644 --- a/.github/workflows/ubuntu_latest.yml +++ b/.github/workflows/ubuntu_latest.yml @@ -10,12 +10,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - run: sudo apt-get install iwyu - run: | curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_nix chmod +x mkn - KLOG=3 ./mkn clean build -dtOp iwyu -a "-std=c++17 -fPIC" + KLOG=3 ./mkn clean build -dtOp iwyu -a "-std=c++20 -fPIC" diff --git a/.gitignore b/.gitignore index 34d04f5..ef5af5b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bin .mkn +.clangd diff --git a/.sublime-project b/.sublime-project index 7ae0fc0..aee86ad 100644 --- a/.sublime-project +++ b/.sublime-project @@ -7,6 +7,12 @@ ], "settings": { + "ClangFormat" : + { + "binary" : "clang-format", + "format_on_save" : true, + "style" : "file" + } } } diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7616ede..0000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -language: generic -branches: - only: - - master -matrix: - include: - - os: linux - dist: bionic - sudo: required - compiler: gcc - addons: - apt: - sources: - - sourceline: 'ppa:ubuntu-toolchain-r/test' - packages: - - g++-8 - - clang++-8 - - iwyu - env: - - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" - - os: osx - compiler: clang - osx_image: xcode11 - -before_install: - - | - git clone https://github.com/Dekken/maiken --depth 10 -b master maiken - [[ "${TRAVIS_OS_NAME}" == "osx" ]] && make bsd -C maiken CXX="clang++" - [[ "${TRAVIS_OS_NAME}" == "linux" ]] && eval "${MATRIX_EVAL}" - [[ "${TRAVIS_OS_NAME}" == "linux" ]] && make nix -C maiken CXX="$CXX" - mv maiken/mkn . - -script: - - | - export MKN_LIB_LINK_LIB="1" KUL_GIT_CO="--depth 3" KLOG="3" CC CXX - ./mkn build -dtOa "-fPIC -std=c++17" - ./mkn build -p iwyu diff --git a/README.md b/README.md index 8f745d4..6bf9b53 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ ** Compile stage plugin to to run include-what-you-use on all applicable files ** -[![Travis](https://travis-ci.org/mkn-mod/cpp.iwyu.svg?branch=master)](https://travis-ci.org/mkn-mod/cpp.iwyu) - ## Prerequisites [maiken](https://github.com/Dekken/maiken) @@ -18,8 +16,7 @@ mod: inc: inc/1 inc/2 # additional include directories paths: search/dir # scan directories ignore: src/python3 # if file found has path that contains string ignore - - + types: cpp hpp cc # file types checked default: {"cpp", "cxx", "cc", "cc", "h", "hpp"} ``` diff --git a/mod.cpp b/mod.cpp index ad7f717..905b65e 100644 --- a/mod.cpp +++ b/mod.cpp @@ -28,40 +28,36 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include // for uint16_t -#include // for string, allocator, operator+, basic_... -#include // for unordered_set -#include // for pair -#include // for vector -#include "mkn/kul/cli.hpp" // for asArgs -#include "mkn/kul/defs.hpp" // for KUL_PUBLISH -#include "mkn/kul/except.hpp" // for Exception, KEXCEPT, KTHROW -#include "mkn/kul/log.hpp" // for KLOG, KLOG_INF, KLOG_DBG -#include "mkn/kul/map.hpp" // for Map -#include "mkn/kul/os.hpp" // for Dir, File, WHICH, Exception, PushDir -#include "mkn/kul/proc.hpp" // for Process, AProcess, ExitException -#include "mkn/kul/string.hpp" // for String -#include "mkn/kul/yaml.hpp" // for NodeValidator, Validator, yaml -#include "maiken/app.hpp" // for Application -#include "maiken/module.hpp" // for Module -#include "maiken/module/init.hpp"// IWYU pragma: keep -#include "maiken/project.hpp" // for Project -#include "maiken/source.hpp" // for Source -#include "yaml-cpp/node/impl.h" // for Node::operator[], Node::Scalar -#include "yaml-cpp/node/node.h" // for Node - -namespace mkn::mod::iwyu { - -class Exception : public mkn::kul::Exception { +#include // for uint16_t +#include // for string, allocator, operator+, basic_... +#include // for unordered_set +#include // for pair +#include // for vector +#include "mkn/kul/cli.hpp" // for asArgs +#include "mkn/kul/defs.hpp" // for KUL_PUBLISH +#include "mkn/kul/except.hpp" // for Exception, KEXCEPT, KTHROW +#include "mkn/kul/log.hpp" // for KLOG, KLOG_INF, KLOG_DBG +#include "mkn/kul/map.hpp" // for Map +#include "mkn/kul/os.hpp" // for Dir, File, WHICH, Exception, PushDir +#include "mkn/kul/proc.hpp" // for Process, AProcess, ExitException +#include "mkn/kul/string.hpp" // for String +#include "mkn/kul/yaml.hpp" // for NodeValidator, Validator, yaml +#include "maiken/app.hpp" // for Application +#include "maiken/module.hpp" // for Module +#include "maiken/module/init.hpp" // IWYU pragma: keep +#include "maiken/project.hpp" // for Project +#include "maiken/source.hpp" // for Source +#include "yaml-cpp/node/impl.h" // for Node::operator[], Node::Scalar +#include "yaml-cpp/node/node.h" // for Node + +namespace mkn::mod::cpp::iwyu { + +class Exception : public kul::Exception { public: - Exception(char const* f, uint16_t const& l, std::string const& s) - : mkn::kul::Exception(f, l, s) {} + Exception(char const* f, uint16_t const& l, std::string const& s) : kul::Exception(f, l, s) {} }; -} - -namespace mkn { -class CPP_IWYU_Module : public maiken::Module { +class Module : public maiken::Module { public: void compile(maiken::Application& a, YAML::Node const& node) KTHROW(std::exception) override { run(a, node); @@ -70,46 +66,48 @@ class CPP_IWYU_Module : public maiken::Module { protected: using App = maiken::Application&; - static std::string find_iwyu(){ + static std::string find_iwyu() { std::vector iwyu{"iwyu", "include-what-you-use"}; - for(auto const& str : iwyu) - if(mkn::kul::env::WHICH(str)) return str; - KEXCEPT(mkn::mod::iwyu::Exception, "Failed to find valid iwyu binary, check PATH"); + for (auto const& str : iwyu) + if (kul::env::WHICH(str)) return str; + KEXCEPT(Exception, "Failed to find valid iwyu binary, check PATH"); } static void VALIDATE_NODE(YAML::Node const& node) { - using namespace mkn::kul::yaml; + using namespace kul::yaml; Validator({NodeValidator("inc"), NodeValidator("args"), NodeValidator("ignore"), - NodeValidator("headers"), - NodeValidator("paths"), NodeValidator("types")}) + NodeValidator("headers"), NodeValidator("paths"), NodeValidator("types")}) .validate(node); } template - void CHECK(std::string const& proc, C_Unit c_unit, mkn::kul::File&& f, YAML::Node const& node) { - if (node["ignore"]) if(f.escm().find(node["ignore"].Scalar()) != std::string::npos) return; + void CHECK(std::string const& proc, C_Unit c_unit, kul::File&& f, YAML::Node const& node) { + if (node["ignore"]) + if (f.escm().find(node["ignore"].Scalar()) != std::string::npos) return; - mkn::kul::Process p(proc); + kul::Process p(proc); auto compileStr = c_unit.compileString().substr(c_unit.compiler.size()); p << compileStr.substr(0, compileStr.rfind(" -o")); if (node["args"]) p << node["args"].Scalar(); - if (node["inc"]) for (const auto& inc : node["inc"].Scalar()) p << std::string{"-I"}+inc; + if (node["inc"]) + for (const auto& inc : node["inc"].Scalar()) p << std::string{"-I"} + inc; if (node["headers"]) p << node["headers"].Scalar(); p << f.escm(); KLOG(DBG) << p; - try{ + try { p.start(); - }catch(mkn::kul::proc::ExitException const& e){} + } catch (kul::proc::ExitException const& e) { + } } void run(App& a, YAML::Node const& node) KTHROW(std::exception) { VALIDATE_NODE(node); - mkn::kul::os::PushDir pushd(a.project().dir()); + kul::os::PushDir pushd(a.project().dir()); std::unordered_set types; if (!node["types"]) { types = {"cpp", "cxx", "cc", "cc", "h", "hpp"}; } else - for (const auto& s : mkn::kul::String::SPLIT(node["types"].Scalar(), ":")) types.insert(s); + for (const auto& s : kul::String::SPLIT(node["types"].Scalar(), ":")) types.insert(s); std::unordered_set files; @@ -119,10 +117,10 @@ class CPP_IWYU_Module : public maiken::Module { for (const auto& p2 : p1.second) for (const auto& p3 : p2.second) files.insert(p3.in()); - if (node["paths"]){ - for (const auto& path : mkn::kul::cli::asArgs(node["paths"].Scalar())) { - mkn::kul::Dir d(path); - if (!d) KEXCEPT(mkn::kul::fs::Exception, "Directory does not exist: ") << d.path(); + if (node["paths"]) { + for (const auto& path : kul::cli::asArgs(node["paths"].Scalar())) { + kul::Dir d(path); + if (!d) KEXCEPT(kul::fs::Exception, "Directory does not exist: ") << d.path(); for (const auto& file : d.files(1)) { const std::string name = file.name(); if (name.find(".") == std::string::npos) continue; @@ -136,14 +134,15 @@ class CPP_IWYU_Module : public maiken::Module { maiken::ThreadingCompiler tc(a); using Pair = std::pair; for (const auto& file : files) - CHECK(proc, tc.compilationUnit(Pair{mkn::kul::File(file).escm()+".cpp", "obj"}), mkn::kul::File(file), node); + CHECK(proc, tc.compilationUnit(Pair{kul::File(file).escm() + ".cpp", "obj"}), kul::File(file), + node); } }; -} // namespace mkn +} // namespace mkn::mod::cpp::iwyu -extern "C" KUL_PUBLISH maiken::Module *maiken_module_construct() { - return new mkn::CPP_IWYU_Module; +extern "C" KUL_PUBLISH maiken::Module* maiken_module_construct() { + return new mkn::mod::cpp::iwyu::Module; } -extern "C" KUL_PUBLISH void maiken_module_destruct(maiken::Module *p) { delete p; } +extern "C" KUL_PUBLISH void maiken_module_destruct(maiken::Module* p) { delete p; } From e292515ee5db048b1fe0df2066422cf842cfeefc Mon Sep 17 00:00:00 2001 From: PhilipDeegan Date: Tue, 17 Sep 2024 22:08:05 +0200 Subject: [PATCH 2/5] incs --- mod.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mod.cpp b/mod.cpp index 905b65e..0c1d7bd 100644 --- a/mod.cpp +++ b/mod.cpp @@ -90,7 +90,8 @@ class Module : public maiken::Module { p << compileStr.substr(0, compileStr.rfind(" -o")); if (node["args"]) p << node["args"].Scalar(); if (node["inc"]) - for (const auto& inc : node["inc"].Scalar()) p << std::string{"-I"} + inc; + for (const auto& inc : mkn::kul::cli::asArgs(node["inc"].Scalar())) + p << std::string{"-I"} + inc; if (node["headers"]) p << node["headers"].Scalar(); p << f.escm(); KLOG(DBG) << p; From 40a005f523f14088a7ffb39ffacd35db205a06fc Mon Sep 17 00:00:00 2001 From: PhilipDeegan Date: Sun, 6 Sep 2026 21:29:08 +0200 Subject: [PATCH 3/5] ++ --- .github/workflows/ubuntu_latest.yml | 8 ++- README.md | 2 +- mkn.yaml | 2 +- mod.cpp | 87 ++++++++++++----------------- 4 files changed, 45 insertions(+), 54 deletions(-) diff --git a/.github/workflows/ubuntu_latest.yml b/.github/workflows/ubuntu_latest.yml index 650fafc..5e6bc75 100644 --- a/.github/workflows/ubuntu_latest.yml +++ b/.github/workflows/ubuntu_latest.yml @@ -6,16 +6,20 @@ on: pull_request: branches: [ master ] +env: + CURL_GET: curl -fL --retry 3 --retry-delay 2 + PATH_GET: https://github.com/mkn/mkn/releases/download/latest + jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - run: sudo apt-get install iwyu - run: | - curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_nix + $CURL_GET -o mkn ${PATH_GET}/mkn_nix chmod +x mkn KLOG=3 ./mkn clean build -dtOp iwyu -a "-std=c++20 -fPIC" diff --git a/README.md b/README.md index 6bf9b53..4b8582c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ** Compile stage plugin to to run include-what-you-use on all applicable files ** ## Prerequisites - [maiken](https://github.com/Dekken/maiken) + [maiken](https://github.com/mkn/mkn) ## Usage diff --git a/mkn.yaml b/mkn.yaml index ac2ec0c..074122d 100644 --- a/mkn.yaml +++ b/mkn.yaml @@ -11,7 +11,7 @@ mode: shared profile: - name: base - dep: mkn#${version}&${maiken_location}(${maiken_scm})[mod] + dep: mkn.mod mkn#${version}&${maiken_location}(${maiken_scm})[headers] if_arg: win_shared: -DYAML_CPP_DLL shared: -DKUL_SHARED diff --git a/mod.cpp b/mod.cpp index 0c1d7bd..74c3c0e 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,5 +1,5 @@ /** -Copyright (c) 2013, Philip Deegan. +Copyright (c) 2026, Philip Deegan. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,44 +28,31 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include // for uint16_t -#include // for string, allocator, operator+, basic_... -#include // for unordered_set -#include // for pair -#include // for vector -#include "mkn/kul/cli.hpp" // for asArgs -#include "mkn/kul/defs.hpp" // for KUL_PUBLISH -#include "mkn/kul/except.hpp" // for Exception, KEXCEPT, KTHROW -#include "mkn/kul/log.hpp" // for KLOG, KLOG_INF, KLOG_DBG -#include "mkn/kul/map.hpp" // for Map -#include "mkn/kul/os.hpp" // for Dir, File, WHICH, Exception, PushDir -#include "mkn/kul/proc.hpp" // for Process, AProcess, ExitException -#include "mkn/kul/string.hpp" // for String -#include "mkn/kul/yaml.hpp" // for NodeValidator, Validator, yaml -#include "maiken/app.hpp" // for Application -#include "maiken/module.hpp" // for Module -#include "maiken/module/init.hpp" // IWYU pragma: keep -#include "maiken/project.hpp" // for Project -#include "maiken/source.hpp" // for Source -#include "yaml-cpp/node/impl.h" // for Node::operator[], Node::Scalar -#include "yaml-cpp/node/node.h" // for Node +#include // for uint16_t +#include // for string, allocator, operator+, basic_... +#include // for unordered_set +#include // for pair +#include // for vector +#include "mkn/kul/cli.hpp" // for asArgs +#include "mkn/kul/defs.hpp" // for MKN_KUL_PUBLISH +#include "mkn/kul/except.hpp" // for Exception, KEXCEPT, KTHROW +#include "mkn/kul/log.hpp" // for KLOG, KLOG_INF, KLOG_DBG +#include "mkn/kul/map.hpp" // for Map +#include "mkn/kul/os.hpp" // for Dir, File, WHICH, Exception, PushDir +#include "mkn/kul/proc.hpp" // for Process, AProcess, ExitException +#include "mkn/kul/string.hpp" // for String +#include "mkn/kul/yaml.hpp" // for NodeValidator, Validator, yaml +#include "mkn/mod/init.hpp" // IWYU pragma: keep +#include "yaml-cpp/node/impl.h" // for Node::operator[], Node::Scalar +#include "yaml-cpp/node/node.h" // for Node namespace mkn::mod::cpp::iwyu { -class Exception : public kul::Exception { +class Module : public mkn::mod::Module { public: - Exception(char const* f, uint16_t const& l, std::string const& s) : kul::Exception(f, l, s) {} -}; - -class Module : public maiken::Module { - public: - void compile(maiken::Application& a, YAML::Node const& node) KTHROW(std::exception) override { - run(a, node); - } + void compile(mkn::mod::Context& ctx, YAML::Node const& node) override { run(ctx, node); } protected: - using App = maiken::Application&; - static std::string find_iwyu() { std::vector iwyu{"iwyu", "include-what-you-use"}; for (auto const& str : iwyu) @@ -80,13 +67,15 @@ class Module : public maiken::Module { .validate(node); } - template - void CHECK(std::string const& proc, C_Unit c_unit, kul::File&& f, YAML::Node const& node) { + void CHECK(std::string const& proc, std::string const& compileCmd, kul::File&& f, + YAML::Node const& node) { if (node["ignore"]) if (f.escm().find(node["ignore"].Scalar()) != std::string::npos) return; kul::Process p(proc); - auto compileStr = c_unit.compileString().substr(c_unit.compiler.size()); + auto const firstSpace = compileCmd.find(' '); + auto compileStr = + firstSpace == std::string::npos ? std::string() : compileCmd.substr(firstSpace + 1); p << compileStr.substr(0, compileStr.rfind(" -o")); if (node["args"]) p << node["args"].Scalar(); if (node["inc"]) @@ -100,9 +89,10 @@ class Module : public maiken::Module { } catch (kul::proc::ExitException const& e) { } } - void run(App& a, YAML::Node const& node) KTHROW(std::exception) { + void run(mkn::mod::Context& ctx, YAML::Node const& node) KTHROW(std::exception) { VALIDATE_NODE(node); - kul::os::PushDir pushd(a.project().dir()); + auto const state = ctx.state(); + kul::os::PushDir pushd(state.projectDir); std::unordered_set types; if (!node["types"]) { @@ -112,16 +102,16 @@ class Module : public maiken::Module { std::unordered_set files; - const auto sources = a.sourceMap(); - for (const auto& p1 : sources) - if (types.count(p1.first)) - for (const auto& p2 : p1.second) - for (const auto& p3 : p2.second) files.insert(p3.in()); + for (const auto& f : state.sourceFiles) { + auto const dot = f.rfind("."); + if (dot == std::string::npos) continue; + if (types.count(f.substr(dot + 1))) files.insert(f); + } if (node["paths"]) { for (const auto& path : kul::cli::asArgs(node["paths"].Scalar())) { kul::Dir d(path); - if (!d) KEXCEPT(kul::fs::Exception, "Directory does not exist: ") << d.path(); + if (!d) KEXCEPT(kul::fs::Exception, "Directory does not exist: ", d.path()); for (const auto& file : d.files(1)) { const std::string name = file.name(); if (name.find(".") == std::string::npos) continue; @@ -132,18 +122,15 @@ class Module : public maiken::Module { } auto proc = find_iwyu(); - maiken::ThreadingCompiler tc(a); - using Pair = std::pair; for (const auto& file : files) - CHECK(proc, tc.compilationUnit(Pair{kul::File(file).escm() + ".cpp", "obj"}), kul::File(file), - node); + CHECK(proc, ctx.compileCommandFor(kul::File(file).escm() + ".cpp"), kul::File(file), node); } }; } // namespace mkn::mod::cpp::iwyu -extern "C" KUL_PUBLISH maiken::Module* maiken_module_construct() { +extern "C" MKN_KUL_PUBLISH mkn::mod::Module* maiken_module_construct() { return new mkn::mod::cpp::iwyu::Module; } -extern "C" KUL_PUBLISH void maiken_module_destruct(maiken::Module* p) { delete p; } +extern "C" MKN_KUL_PUBLISH void maiken_module_destruct(mkn::mod::Module* p) { delete p; } From 8a267d4390e30d96732d5ed150f832c80153a7c7 Mon Sep 17 00:00:00 2001 From: PhilipDeegan Date: Sun, 6 Sep 2026 21:31:00 +0200 Subject: [PATCH 4/5] ++ --- mkn.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkn.yaml b/mkn.yaml index 074122d..a734786 100644 --- a/mkn.yaml +++ b/mkn.yaml @@ -14,7 +14,7 @@ profile: dep: mkn.mod mkn#${version}&${maiken_location}(${maiken_scm})[headers] if_arg: win_shared: -DYAML_CPP_DLL - shared: -DKUL_SHARED + shared: -DMKN_KUL_SHARED - name: format mod: | From 2d78ffe11d22611f9842884eaf390edd4c0542f7 Mon Sep 17 00:00:00 2001 From: PhilipDeegan Date: Sun, 6 Sep 2026 21:32:54 +0200 Subject: [PATCH 5/5] ++ --- mod.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/mod.cpp b/mod.cpp index 74c3c0e..9c33eec 100644 --- a/mod.cpp +++ b/mod.cpp @@ -28,21 +28,23 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include // for uint16_t -#include // for string, allocator, operator+, basic_... -#include // for unordered_set -#include // for pair -#include // for vector -#include "mkn/kul/cli.hpp" // for asArgs -#include "mkn/kul/defs.hpp" // for MKN_KUL_PUBLISH -#include "mkn/kul/except.hpp" // for Exception, KEXCEPT, KTHROW -#include "mkn/kul/log.hpp" // for KLOG, KLOG_INF, KLOG_DBG -#include "mkn/kul/map.hpp" // for Map -#include "mkn/kul/os.hpp" // for Dir, File, WHICH, Exception, PushDir -#include "mkn/kul/proc.hpp" // for Process, AProcess, ExitException -#include "mkn/kul/string.hpp" // for String -#include "mkn/kul/yaml.hpp" // for NodeValidator, Validator, yaml -#include "mkn/mod/init.hpp" // IWYU pragma: keep + +#include "mkn/mod/init.hpp" // IWYU pragma: keep + +#include // for uint16_t +#include // for string, allocator, operator+, basic_... +#include // for unordered_set +#include // for pair +#include // for vector +#include "mkn/kul/cli.hpp" // for asArgs +#include "mkn/kul/defs.hpp" // for MKN_KUL_PUBLISH +#include "mkn/kul/except.hpp" // for Exception, KEXCEPT, KTHROW +#include "mkn/kul/log.hpp" // for KLOG, KLOG_INF, KLOG_DBG +#include "mkn/kul/map.hpp" // for Map +#include "mkn/kul/os.hpp" // for Dir, File, WHICH, Exception, PushDir +#include "mkn/kul/proc.hpp" // for Process, AProcess, ExitException +#include "mkn/kul/string.hpp" // for String +#include "mkn/kul/yaml.hpp" // for NodeValidator, Validator, yaml #include "yaml-cpp/node/impl.h" // for Node::operator[], Node::Scalar #include "yaml-cpp/node/node.h" // for Node @@ -68,7 +70,7 @@ class Module : public mkn::mod::Module { } void CHECK(std::string const& proc, std::string const& compileCmd, kul::File&& f, - YAML::Node const& node) { + YAML::Node const& node) { if (node["ignore"]) if (f.escm().find(node["ignore"].Scalar()) != std::string::npos) return;