aboutsummaryrefslogtreecommitdiff
path: root/src/create_pkg.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/create_pkg.cc')
-rw-r--r--src/create_pkg.cc29
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;
}