Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wip #39

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

wip #39

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
163 changes: 81 additions & 82 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,58 +87,58 @@ pub fn fetch_license_infos(lockfile_or_prefix: LockfileOrPrefix) -> Result<Licen
const IGNORE_PYPI_DEFAULT: bool = false;

fn get_lockfile_or_prefix(
lockfile: Vec<PathBuf>,
prefix: Vec<PathBuf>,
platforms: Option<Vec<Platform>>,
environments: Option<Vec<String>>,
ignore_pypi: Option<bool>,
cli_config: CondaDenyCliConfig,
toml_config: CondaDenyTomlConfig,
) -> Result<LockfileOrPrefix> {
if lockfile.is_empty() && prefix.is_empty() {
// test if pixi.lock exists next to config file, otherwise error
let default_lockfile_path = env::current_dir()?.join("pixi.lock");
if !default_lockfile_path.is_file() {
Err(anyhow::anyhow!("No lockfiles or conda prefixes provided"))
} else {
Ok(LockfileOrPrefix::Lockfile(LockfileSpec {
lockfiles: vec![default_lockfile_path],
platforms,
environments,
ignore_pypi: ignore_pypi.unwrap_or(IGNORE_PYPI_DEFAULT),
}))
}
} else if !lockfile.is_empty() && !prefix.is_empty() {
// TODO: Specified prefixes override lockfiles
Err(anyhow::anyhow!(
"Both lockfiles and conda prefixes provided. Please only provide either or."
))
} else if !lockfile.is_empty() {
Ok(LockfileOrPrefix::Lockfile(LockfileSpec {
lockfiles: lockfile.iter().map(|s| s.into()).collect(),
platforms,
environments,
ignore_pypi: ignore_pypi.unwrap_or(IGNORE_PYPI_DEFAULT),
}))
} else {
assert!(!prefix.is_empty());
// cli overrides toml configuration

if platforms.is_some() {
Err(anyhow::anyhow!(
"Cannot specify platforms and conda prefixes at the same time"
))
} else if environments.is_some() {
Err(anyhow::anyhow!(
"Cannot specify pixi environments and conda prefixes at the same time"
))
} else if ignore_pypi.is_some() {
Err(anyhow::anyhow!(
"Cannot specify ignore-pypi and conda prefixes at the same time"
))
} else {
Ok(LockfileOrPrefix::Prefix(
prefix.iter().map(|s| s.into()).collect(),
))
}
}
Ok(LockfileOrPrefix::Prefix(vec!["adwd".into()]))
// if lockfile.is_empty() && prefix.is_empty() {
// // test if pixi.lock exists next to config file, otherwise error
// let default_lockfile_path = env::current_dir()?.join("pixi.lock");
// if !default_lockfile_path.is_file() {
// Err(anyhow::anyhow!("No lockfiles or conda prefixes provided"))
// } else {
// Ok(LockfileOrPrefix::Lockfile(LockfileSpec {
// lockfiles: vec![default_lockfile_path],
// platforms,
// environments,
// ignore_pypi: ignore_pypi.unwrap_or(IGNORE_PYPI_DEFAULT),
// }))
// }
// } else if !lockfile.is_empty() && !prefix.is_empty() {
// // TODO: Specified prefixes override lockfiles
// Err(anyhow::anyhow!(
// "Both lockfiles and conda prefixes provided. Please only provide either or."
// ))
// } else if !lockfile.is_empty() {
// Ok(LockfileOrPrefix::Lockfile(LockfileSpec {
// lockfiles: lockfile.iter().map(|s| s.into()).collect(),
// platforms,
// environments,
// ignore_pypi: ignore_pypi.unwrap_or(IGNORE_PYPI_DEFAULT),
// }))
// } else {
// assert!(!prefix.is_empty());

// if platforms.is_some() {
// Err(anyhow::anyhow!(
// "Cannot specify platforms and conda prefixes at the same time"
// ))
// } else if environments.is_some() {
// Err(anyhow::anyhow!(
// "Cannot specify pixi environments and conda prefixes at the same time"
// ))
// } else if ignore_pypi.is_some() {
// Err(anyhow::anyhow!(
// "Cannot specify ignore-pypi and conda prefixes at the same time"
// ))
// } else {
// Ok(LockfileOrPrefix::Prefix(
// prefix.iter().map(|s| s.into()).collect(),
// ))
// }
// }
}

pub fn get_config_options(
Expand Down Expand Up @@ -183,43 +183,42 @@ pub fn get_config_options(
debug!("Parsed TOML config: {:?}", toml_config);

// cli overrides toml configuration
let lockfile = cli_config
.lockfile()
.unwrap_or(toml_config.get_lockfile_spec());
let prefix = cli_config.prefix().unwrap_or_default();
// let lockfile = cli_config
// .lockfile()
// .unwrap_or(toml_config.get_lockfile_spec());
// let prefix = cli_config.prefix().unwrap_or_default();

let platforms = if cli_config.platform().is_some() {
cli_config.platform()
} else {
toml_config.get_platform_spec()
};
if platforms.is_some() && !prefix.is_empty() {
return Err(anyhow::anyhow!(
"Cannot specify platforms and conda prefixes at the same time"
));
}
// let platforms = if cli_config.platform().is_some() {
// cli_config.platform()
// } else {
// toml_config.get_platform_spec()
// };
// if platforms.is_some() && !prefix.is_empty() {
// return Err(anyhow::anyhow!(
// "Cannot specify platforms and conda prefixes at the same time"
// ));
// }

let environments = if cli_config.environment().is_some() {
cli_config.environment()
} else {
toml_config.get_environment_spec()
};
if environments.is_some() && !prefix.is_empty() {
return Err(anyhow::anyhow!(
"Cannot specify environments and conda prefixes at the same time"
));
}
// let environments = if cli_config.environment().is_some() {
// cli_config.environment()
// } else {
// toml_config.get_environment_spec()
// };
// if environments.is_some() && !prefix.is_empty() {
// return Err(anyhow::anyhow!(
// "Cannot specify environments and conda prefixes at the same time"
// ));
// }

let ignore_pypi = if cli_config.ignore_pypi().is_some() {
cli_config.ignore_pypi()
} else {
toml_config.get_ignore_pypi()
};
// let ignore_pypi = if cli_config.ignore_pypi().is_some() {
// cli_config.ignore_pypi()
// } else {
// toml_config.get_ignore_pypi()
// };

let output_format = cli_config.output_format().unwrap_or_default();
// let output_format = cli_config.output_format().unwrap_or_default();

let lockfile_or_prefix =
get_lockfile_or_prefix(lockfile, prefix, platforms, environments, ignore_pypi)?;
let lockfile_or_prefix = get_lockfile_or_prefix(cli_config, toml_config)?;

let config = match cli_config {
CondaDenyCliConfig::Check { osi, .. } => {
Expand Down
Loading