#include <dds/util/algo.hpp> | #include <dds/util/algo.hpp> | ||||
#include <range/v3/view/filter.hpp> | |||||
#include <range/v3/view/concat.hpp> | #include <range/v3/view/concat.hpp> | ||||
#include <range/v3/view/filter.hpp> | |||||
#include <spdlog/spdlog.h> | #include <spdlog/spdlog.h> | ||||
using namespace dds; | using namespace dds; | ||||
} | } | ||||
} | } | ||||
auto compile_rules = lib.base_compile_rules(); | |||||
auto compile_rules = lib.base_compile_rules(); | |||||
compile_rules.enable_warnings() = params.enable_warnings; | compile_rules.enable_warnings() = params.enable_warnings; | ||||
for (const auto& use : lib.manifest().uses) { | for (const auto& use : lib.manifest().uses) { | ||||
ureqs.apply(compile_rules, use.namespace_, use.name); | ureqs.apply(compile_rules, use.namespace_, use.name); | ||||
} | } | ||||
for (const source_file& source : ranges::views::concat(app_sources, test_sources)) { | for (const source_file& source : ranges::views::concat(app_sources, test_sources)) { | ||||
auto subdir = source.kind == source_kind::test ? params.out_subdir / "test" : params.out_subdir; | |||||
auto subdir | |||||
= source.kind == source_kind::test ? params.out_subdir / "test" : params.out_subdir; | |||||
link_executables.emplace_back(in_libs, | link_executables.emplace_back(in_libs, | ||||
compile_file_plan(compile_rules, | compile_file_plan(compile_rules, | ||||
source, | source, |
int run() { | int run() { | ||||
auto repo_dir = repo_where.Get(); | auto repo_dir = repo_where.Get(); | ||||
// TODO: Generate a unique name to avoid conflicts | // TODO: Generate a unique name to avoid conflicts | ||||
auto tmp_sdist = repo_dir / ".tmp.sdist"; | |||||
auto tmp_sdist = repo_dir / ".tmp.sdist"; | |||||
if (dds::fs::exists(tmp_sdist)) { | if (dds::fs::exists(tmp_sdist)) { | ||||
dds::fs::remove_all(tmp_sdist); | dds::fs::remove_all(tmp_sdist); | ||||
} | } |
throw std::runtime_error( | throw std::runtime_error( | ||||
fmt::format("'Version' field in [{}] may not be an empty string", fpath.string())); | fmt::format("'Version' field in [{}] may not be an empty string", fpath.string())); | ||||
} | } | ||||
if (ret.namespace_.empty()) { | |||||
ret.namespace_ = ret.name; | |||||
} | |||||
ret.version = semver::version::parse(version_str); | ret.version = semver::version::parse(version_str); | ||||
read_accumulate("Links", links_strs), | read_accumulate("Links", links_strs), | ||||
read_accumulate("Special-Uses", ret.special_uses)); | read_accumulate("Special-Uses", ret.special_uses)); | ||||
auto split_req = [](auto&& str) {}; | |||||
for (auto&& uses_str : uses_strs) { | for (auto&& uses_str : uses_strs) { | ||||
ret.uses.push_back(split_usage_string(uses_str)); | ret.uses.push_back(split_usage_string(uses_str)); | ||||
} | } |