aboutsummaryrefslogtreecommitdiff
path: root/src/build_pkg.cc
blob: 67c67b80cad5b3f4d540f2730e129b2f7a9e56e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <functional>

#include "build_systems.cc"

const std::map<std::string, std::function<void()>> builds = {
  {"bldit",           bldit_build},
  {"compile.sh",      compilesh_build},
  {"build.sh",        buildsh_build},
  {"autogen.sh",      autogen_build},
  {"configure",       autotools_build},
  {"configure.ac",    autotools_build},
  {"Makefile",        make_build},
  {"Makefile.am",     make_build},
  {"CMakeLists.txt",  cmake_build},
  {"meson.build",     meson_build},
  {"build.ninja",     ninja_build},
  {"Cargo.toml",      cargo_build},
  {"go.mod",          go_build},
  {"gradle.build",    gradle_build},
  {"pnpm-lock.yaml",  pnpm_build},
  {"pyproject.toml",  python_build},
  {"build.zig",       zig_build}
};

void build_pkg(std::filesystem::path build_dir) {
  if (build_dir != fs::current_path().string()) {
    fs::current_path(build_dir);
  }
  for (auto const& dir_entry : fs::directory_iterator(fs::current_path().string())) {
    for (auto build : builds) {
      if (dir_entry.path().filename() == build.first) {
        build.second();
      }
    } 
  }
}