diff options
Diffstat (limited to 'src/create_pkg.cc')
| -rw-r--r-- | src/create_pkg.cc | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/create_pkg.cc b/src/create_pkg.cc index a6b78e9..1792d24 100644 --- a/src/create_pkg.cc +++ b/src/create_pkg.cc @@ -3,34 +3,47 @@ #include <filesystem> #include "create_pkg.hh" +#include "lua_state.hh" #include "name_from_url.hh" #include "vars.hh" -Pkg create_pkg(std::string arg) { +Pkg create_pkg(std::string arg, const char* target) { Pkg pkg; + pkg.target = target; + pkg.ver = "HEAD"; bool is_in_repos = false; + bool is_local = false; - for (auto repo : repos) { + init_lua_state(); + cache_repos(); + for (auto repo : cached_repos) { if (arg == repo.first) { is_in_repos = true; } } if (arg.rfind("http", 0) == 0) { pkg.url = arg; pkg.name = name_from_url(arg); - } else if (arg == ".") { + } else if (std::filesystem::exists(arg) || arg == ".") { pkg.url = ""; - pkg.name = name_from_url(std::filesystem::current_path().string()); + if (std::filesystem::exists(arg)) { + pkg.src = arg; + } else { + pkg.src = std::filesystem::current_path().string(); + } + pkg.name = name_from_url(arg); + is_local = true; } else if (is_in_repos) { - pkg.url = repos[arg]; + pkg.url = cached_repos[arg].source.value; pkg.name = arg; } else { std::cout << print_error << "'" << arg << "'" << " is not a valid package" << std::endl; exit(1); } - pkg.ver = "HEAD"; - - pkg.src = install_directories["pkgblds"] + "/" + pkg.name + "/" + pkg.ver; + cache_install_directories(); + if (!is_local) { + pkg.src = install_directories["src"] + "/" + pkg.name + "/" + pkg.ver; + } return pkg; } |
