Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ trycmd = "0.14"

[dependencies]
#qpm
qpm_package = { git = "https://github.com/QuestPackageManager/QPM.Package.git", tag = "v0.3.0"}
qpm_package = { git = "https://github.com/QuestPackageManager/QPM.Package.git"}
qpm_qmod = { git = "https://github.com/QuestPackageManager/QPM.Qmod.git" }
qpm_arg_tokenizer = { git = "https://github.com/QuestPackageManager/QPM.arg_tokenizer.git" }
templatr = { git = "https://github.com/QuestPackageManager/templatr.git", optional = true }
Expand Down
79 changes: 26 additions & 53 deletions src/commands/install.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
use std::path::PathBuf;

use clap::Args;
use color_eyre::eyre::Context;
use qpm_package::{models::{dependency::SharedPackageConfig, package::PackageConfig}, extensions::package_metadata::PackageMetadataExtensions};

use qpm_package::models::{dependency::SharedPackageConfig, package::PackageConfig};

use crate::{
models::{
package::{PackageConfigExtensions, SharedPackageConfigExtensions}
},
models::package::{PackageConfigExtensions, SharedPackageConfigExtensions},
repository::{local::FileRepository, multi::MultiDependencyRepository},
};

Expand All @@ -17,10 +15,6 @@ use super::Command;
pub struct InstallCommand {
pub binary_path: Option<PathBuf>,
pub static_path: Option<PathBuf>,
pub debug_binary_path: Option<PathBuf>,

#[clap(long)]
pub cmake_build: Option<bool>,

#[clap(default_value = "false", long, short)]
pub locked: bool, // pub additional_folders: Vec<String> // todo
Expand Down Expand Up @@ -50,9 +44,22 @@ impl Command for InstallCommand {
println!("Using lock file");
}

let mut binary_path = self.binary_path;
let mut static_path = self.static_path;
let mut debug_binary_path = self.debug_binary_path;
let binary_pathbuf = self.binary_path.or_else(|| {
shared_package
.config
.info
.additional_data
.dynamic_lib_out
.clone()
});
let static_pathbuf = self.static_path.or_else(|| {
shared_package
.config
.info
.additional_data
.static_lib_out
.clone()
});

let header_only = shared_package
.config
Expand All @@ -62,57 +69,23 @@ impl Command for InstallCommand {
.unwrap_or(false);
#[cfg(debug_assertions)]
println!("Header only: {header_only}");

if !header_only {
if binary_path.is_none() && self.cmake_build.unwrap_or(true) {
binary_path = Some(
PathBuf::from(format!(
"./build/{}",
shared_package.config.info.get_so_name().file_name().unwrap().to_string_lossy()
))
.canonicalize().context("Failed to retrieve release binary for publishing since it is not header only")?,
);
}
if static_path.is_none() && self.cmake_build.unwrap_or(true) {
static_path = Some(
PathBuf::from(format!(
"./build/{}",
shared_package.config.info.get_static_name().file_name().unwrap().to_string_lossy()
))
.canonicalize().context("Failed to retrieve release binary for publishing since it is not header only")?,
);
}

if debug_binary_path.is_none() && self.cmake_build.unwrap_or(true) {
debug_binary_path = Some(
PathBuf::from(format!(
"./build/debug/{}",
shared_package.config.info.get_so_name().file_name().unwrap().to_string_lossy()
))
.canonicalize().context("Failed to retrieve debug binary for publishing since it is not header only")?,
);
}
}

if let Some(p) = &debug_binary_path {
if !p.exists() {
println!("Could not find debug binary {p:?}, skipping")
}
}

if let Some(p) = &binary_path {
if let Some(p) = &binary_pathbuf {
if !p.exists() {
println!("Could not find binary {p:?}, skipping")
}
}

let mut file_repo = FileRepository::read()?;

let binary_path = binary_pathbuf.as_deref();
let static_binary_path = static_pathbuf.as_deref();

file_repo.add_artifact_and_cache(
shared_package,
PathBuf::from(".").canonicalize()?,
&PathBuf::from(".").canonicalize()?,
binary_path,
debug_binary_path,
static_path,
static_binary_path,
true,
true,
)?;
Expand Down
14 changes: 1 addition & 13 deletions src/commands/package/create.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use clap::Args;
use owo_colors::OwoColorize;
use qpm_package::models::{
extra::AdditionalPackageMetadata,
package::{PackageConfig, PackageMetadata, self},
package::{self, PackageConfig, PackageMetadata},
};
use semver::Version;

Expand All @@ -26,18 +26,9 @@ pub struct PackageOperationCreateArgs {
/// Specify that this package is headers only and does not contain a .so or .a file
#[clap(long = "headersOnly")]
pub headers_only: Option<bool>,
/// Specify that this package is static linking
#[clap(long = "staticLinking")]
pub static_linking: Option<bool>,
/// Specify the download link for a release .so or .a file
#[clap(long = "soLink")]
pub so_link: Option<String>,
/// Specify the download link for a debug .so or .a files (usually from the obj folder)
#[clap(long = "debugSoLink")]
pub debug_so_link: Option<String>,
/// Override the downloaded .so or .a filename with this name instead.
#[clap(long = "overrideSoName")]
pub override_so_name: Option<String>,
}

impl Command for PackageOperationCreateArgs {
Expand All @@ -54,10 +45,7 @@ impl Command for PackageOperationCreateArgs {
let additional_data = AdditionalPackageMetadata {
branch_name: self.branch_name,
headers_only: self.headers_only,
static_linking: self.static_linking,
so_link: self.so_link,
debug_so_link: self.debug_so_link,
override_so_name: self.override_so_name,
..Default::default()
};

Expand Down
27 changes: 0 additions & 27 deletions src/commands/package/edit_extra.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,26 +93,14 @@ impl Command for EditExtraArgs {
package_edit_extra_headers_only(&mut package, headers_only.into());
any_changed = true;
}
if let Some(static_linking) = self.static_linking {
package_edit_extra_static_linking(&mut package, static_linking.into());
any_changed = true;
}
if let Some(so_link) = self.so_link {
package_edit_extra_so_link(&mut package, so_link);
any_changed = true;
}
if let Some(debug_so_link) = self.debug_so_link {
package_edit_extra_debug_so_link(&mut package, debug_so_link);
any_changed = true;
}
if let Some(mod_link) = self.mod_link {
package_edit_extra_mod_link(&mut package, mod_link);
any_changed = true;
}
if let Some(override_so_name) = self.override_so_name {
package_edit_extra_override_so_name(&mut package, override_so_name);
any_changed = true;
}
if let Some(sub_folder) = self.sub_folder {
package_edit_extra_sub_folder(&mut package, sub_folder);
any_changed = true;
Expand Down Expand Up @@ -145,11 +133,6 @@ pub fn package_edit_extra_headers_only(package: &mut PackageConfig, headers_only
package.info.additional_data.headers_only = Some(headers_only);
}

pub fn package_edit_extra_static_linking(package: &mut PackageConfig, static_linking: bool) {
println!("Setting static_linking: {static_linking:#?}");
package.info.additional_data.static_linking = Some(static_linking);
}

pub fn package_edit_extra_so_link(package: &mut PackageConfig, so_link: String) {
println!("Setting so_link: {so_link:#?}");
package.info.additional_data.so_link = Some(so_link);
Expand All @@ -160,16 +143,6 @@ pub fn package_edit_extra_mod_link(package: &mut PackageConfig, mod_link: String
package.info.additional_data.mod_link = Some(mod_link);
}

pub fn package_edit_extra_debug_so_link(package: &mut PackageConfig, debug_so_link: String) {
println!("Setting debug_so_link: {debug_so_link:#?}");
package.info.additional_data.debug_so_link = Some(debug_so_link);
}

pub fn package_edit_extra_override_so_name(package: &mut PackageConfig, override_so_name: String) {
println!("Setting override_so_name: {override_so_name:#?}");
package.info.additional_data.override_so_name = Some(override_so_name);
}

pub fn package_edit_extra_sub_folder(package: &mut PackageConfig, sub_folder: String) {
println!("Setting sub_folder: {sub_folder:#?}");
package.info.additional_data.sub_folder = Some(sub_folder);
Expand Down
31 changes: 19 additions & 12 deletions src/commands/qmod/mod.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
use std::{
collections::{HashMap, HashSet},
path::PathBuf,
};
use std::path::PathBuf;

use clap::{Args, Subcommand};
use color_eyre::{eyre::ensure, Result};
use itertools::Itertools;
use qpm_package::{
extensions::package_metadata::PackageMetadataExtensions,
models::{dependency::SharedPackageConfig, package::PackageConfig},
};
use qpm_qmod::models::mod_json::{ModDependency, ModJson};

use qpm_package::models::{dependency::SharedPackageConfig, package::PackageConfig};
use qpm_qmod::models::mod_json::ModJson;
use semver::{Version, VersionReq};

use crate::models::{
Expand Down Expand Up @@ -153,10 +147,23 @@ fn execute_qmod_build_operation(build_parameters: BuildQmodOperationArgs) -> Res
.headers_only
.unwrap_or(false);
let binary = (!is_header_only).then(|| {
shared_package
let dynamic_lib = shared_package
.config
.info
.get_so_name()
.additional_data
.dynamic_lib_out
.as_ref();

let static_lib = shared_package
.config
.info
.additional_data
.static_lib_out
.as_ref();

dynamic_lib
.or(static_lib)
.expect("No static or binary lib out path defined")
.file_name()
.unwrap()
.to_str()
Expand Down
Loading