mirror of
https://github.com/pesde-pkg/pesde.git
synced 2024-12-12 11:00:36 +00:00
fix: set deep dependencies' index urls
This commit is contained in:
parent
6442030f93
commit
3272f8aa88
9 changed files with 175 additions and 176 deletions
144
Cargo.lock
generated
144
Cargo.lock
generated
|
@ -198,9 +198,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "actix-web"
|
name = "actix-web"
|
||||||
version = "4.8.0"
|
version = "4.9.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1988c02af8d2b718c05bc4aeb6a66395b7cdf32858c2c71131e5637a8c05a9ff"
|
checksum = "9180d76e5cc7ccbc4d60a506f2c727730b154010262df5b910eb17dbe4b8cb38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"actix-codec",
|
"actix-codec",
|
||||||
"actix-http",
|
"actix-http",
|
||||||
|
@ -220,6 +220,7 @@ dependencies = [
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
"impl-more",
|
||||||
"itoa",
|
"itoa",
|
||||||
"language-tags",
|
"language-tags",
|
||||||
"log",
|
"log",
|
||||||
|
@ -249,54 +250,6 @@ dependencies = [
|
||||||
"syn 2.0.72",
|
"syn 2.0.72",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "actix-web-lab"
|
|
||||||
version = "0.21.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "993cb5477d926300f11d7daede86368dbf797ccae3564aadfb41cb5b3aee2d23"
|
|
||||||
dependencies = [
|
|
||||||
"actix-http",
|
|
||||||
"actix-router",
|
|
||||||
"actix-service",
|
|
||||||
"actix-utils",
|
|
||||||
"actix-web",
|
|
||||||
"actix-web-lab-derive",
|
|
||||||
"ahash",
|
|
||||||
"arc-swap",
|
|
||||||
"bytes",
|
|
||||||
"bytestring",
|
|
||||||
"csv",
|
|
||||||
"derive_more",
|
|
||||||
"futures-core",
|
|
||||||
"futures-util",
|
|
||||||
"http 0.2.12",
|
|
||||||
"impl-more",
|
|
||||||
"itertools 0.13.0",
|
|
||||||
"local-channel",
|
|
||||||
"mediatype",
|
|
||||||
"mime",
|
|
||||||
"once_cell",
|
|
||||||
"pin-project-lite",
|
|
||||||
"regex",
|
|
||||||
"serde",
|
|
||||||
"serde_html_form",
|
|
||||||
"serde_json",
|
|
||||||
"tokio",
|
|
||||||
"tokio-stream",
|
|
||||||
"tracing",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "actix-web-lab-derive"
|
|
||||||
version = "0.21.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5aa1bc8506ff10e35419d82d2502e182b94bafa1a68f5651e8e1e6c6717fe1d3"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.72",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "addr2line"
|
name = "addr2line"
|
||||||
version = "0.22.0"
|
version = "0.22.0"
|
||||||
|
@ -1041,27 +994,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "csv"
|
|
||||||
version = "1.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
|
|
||||||
dependencies = [
|
|
||||||
"csv-core",
|
|
||||||
"itoa",
|
|
||||||
"ryu",
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "csv-core"
|
|
||||||
version = "0.1.11"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "darling"
|
name = "darling"
|
||||||
version = "0.20.10"
|
version = "0.20.10"
|
||||||
|
@ -2867,15 +2799,6 @@ dependencies = [
|
||||||
"either",
|
"either",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "itertools"
|
|
||||||
version = "0.13.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.11"
|
version = "1.0.11"
|
||||||
|
@ -3124,12 +3047,6 @@ dependencies = [
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mediatype"
|
|
||||||
version = "0.19.18"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8878cd8d1b3c8c8ae4b2ba0a36652b7cf192f618a599a7fbdfa25cffd4ea72dd"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.4"
|
version = "2.7.4"
|
||||||
|
@ -3604,10 +3521,10 @@ dependencies = [
|
||||||
"actix-governor",
|
"actix-governor",
|
||||||
"actix-multipart",
|
"actix-multipart",
|
||||||
"actix-web",
|
"actix-web",
|
||||||
"actix-web-lab",
|
|
||||||
"chrono",
|
"chrono",
|
||||||
"dotenvy",
|
"dotenvy",
|
||||||
"flate2",
|
"flate2",
|
||||||
|
"futures",
|
||||||
"git2",
|
"git2",
|
||||||
"gix",
|
"gix",
|
||||||
"log",
|
"log",
|
||||||
|
@ -3625,6 +3542,7 @@ dependencies = [
|
||||||
"tar",
|
"tar",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"toml",
|
"toml",
|
||||||
|
"url",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4348,42 +4266,29 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.205"
|
version = "1.0.206"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150"
|
checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.205"
|
version = "1.0.206"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1"
|
checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.72",
|
"syn 2.0.72",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_html_form"
|
|
||||||
version = "0.2.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8de514ef58196f1fc96dcaef80fe6170a1ce6215df9687a93fe8300e773fefc5"
|
|
||||||
dependencies = [
|
|
||||||
"form_urlencoded",
|
|
||||||
"indexmap 2.3.0",
|
|
||||||
"itoa",
|
|
||||||
"ryu",
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.122"
|
version = "1.0.124"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
|
checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"memchr",
|
"memchr",
|
||||||
|
@ -4682,7 +4587,7 @@ dependencies = [
|
||||||
"fnv",
|
"fnv",
|
||||||
"fs4",
|
"fs4",
|
||||||
"htmlescape",
|
"htmlescape",
|
||||||
"itertools 0.12.1",
|
"itertools",
|
||||||
"levenshtein_automata",
|
"levenshtein_automata",
|
||||||
"log",
|
"log",
|
||||||
"lru",
|
"lru",
|
||||||
|
@ -4731,7 +4636,7 @@ checksum = "12722224ffbe346c7fec3275c699e508fd0d4710e629e933d5736ec524a1f44e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"downcast-rs",
|
"downcast-rs",
|
||||||
"fastdivide",
|
"fastdivide",
|
||||||
"itertools 0.12.1",
|
"itertools",
|
||||||
"serde",
|
"serde",
|
||||||
"tantivy-bitpacker",
|
"tantivy-bitpacker",
|
||||||
"tantivy-common",
|
"tantivy-common",
|
||||||
|
@ -4938,21 +4843,9 @@ dependencies = [
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
"socket2",
|
"socket2",
|
||||||
"tokio-macros",
|
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tokio-macros"
|
|
||||||
version = "2.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.72",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-native-tls"
|
name = "tokio-native-tls"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
|
@ -4974,17 +4867,6 @@ dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tokio-stream"
|
|
||||||
version = "0.1.15"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
|
|
||||||
dependencies = [
|
|
||||||
"futures-core",
|
|
||||||
"pin-project-lite",
|
|
||||||
"tokio",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-util"
|
name = "tokio-util"
|
||||||
version = "0.7.11"
|
version = "0.7.11"
|
||||||
|
|
|
@ -6,8 +6,7 @@ repository = "https://github.com/daimond113/pesde-index"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
actix-web = "4.8.0"
|
actix-web = "4.9.0"
|
||||||
actix-web-lab = "0.21.0"
|
|
||||||
actix-multipart = "0.7.2"
|
actix-multipart = "0.7.2"
|
||||||
actix-cors = "0.7.0"
|
actix-cors = "0.7.0"
|
||||||
actix-governor = "0.5.0"
|
actix-governor = "0.5.0"
|
||||||
|
@ -16,12 +15,14 @@ thiserror = "1.0.63"
|
||||||
tantivy = "0.22.0"
|
tantivy = "0.22.0"
|
||||||
semver = "1.0.23"
|
semver = "1.0.23"
|
||||||
chrono = { version = "0.4.38", features = ["serde"] }
|
chrono = { version = "0.4.38", features = ["serde"] }
|
||||||
|
url = "2.5.2"
|
||||||
|
futures = "0.3.30"
|
||||||
|
|
||||||
git2 = "0.19.0"
|
git2 = "0.19.0"
|
||||||
gix = { version = "0.64.0", default-features = false, features = ["blocking-http-transport-reqwest-rust-tls", "credentials"] }
|
gix = { version = "0.64.0", default-features = false, features = ["blocking-http-transport-reqwest-rust-tls", "credentials"] }
|
||||||
|
|
||||||
serde = "1.0.204"
|
serde = "1.0.206"
|
||||||
serde_json = "1.0.121"
|
serde_json = "1.0.124"
|
||||||
toml = "0.8.16"
|
toml = "0.8.16"
|
||||||
|
|
||||||
rusty-s3 = "0.5.0"
|
rusty-s3 = "0.5.0"
|
||||||
|
|
|
@ -5,9 +5,9 @@ use actix_web::{
|
||||||
dev::{ServiceRequest, ServiceResponse},
|
dev::{ServiceRequest, ServiceResponse},
|
||||||
error::Error as ActixError,
|
error::Error as ActixError,
|
||||||
http::header::AUTHORIZATION,
|
http::header::AUTHORIZATION,
|
||||||
|
middleware::Next,
|
||||||
web, HttpMessage, HttpResponse,
|
web, HttpMessage, HttpResponse,
|
||||||
};
|
};
|
||||||
use actix_web_lab::middleware::Next;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, PartialOrd, PartialEq, Eq, Ord)]
|
#[derive(Debug, Copy, Clone, Hash, PartialOrd, PartialEq, Eq, Ord)]
|
||||||
|
|
|
@ -5,8 +5,8 @@ use std::{
|
||||||
|
|
||||||
use actix_multipart::Multipart;
|
use actix_multipart::Multipart;
|
||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use actix_web_lab::__reexports::futures_util::StreamExt;
|
|
||||||
use flate2::read::GzDecoder;
|
use flate2::read::GzDecoder;
|
||||||
|
use futures::StreamExt;
|
||||||
use git2::{Remote, Repository, Signature};
|
use git2::{Remote, Repository, Signature};
|
||||||
use rusty_s3::{actions::PutObject, S3Action};
|
use rusty_s3::{actions::PutObject, S3Action};
|
||||||
use tar::Archive;
|
use tar::Archive;
|
||||||
|
@ -20,7 +20,7 @@ use pesde::{
|
||||||
version_id::VersionId,
|
version_id::VersionId,
|
||||||
IGNORED_DIRS, IGNORED_FILES,
|
IGNORED_DIRS, IGNORED_FILES,
|
||||||
},
|
},
|
||||||
DEFAULT_INDEX_NAME, MANIFEST_FILE_NAME,
|
MANIFEST_FILE_NAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -120,15 +120,6 @@ pub async fn publish_package(
|
||||||
source.refresh(&app_state.project).map_err(Box::new)?;
|
source.refresh(&app_state.project).map_err(Box::new)?;
|
||||||
let config = source.config(&app_state.project)?;
|
let config = source.config(&app_state.project)?;
|
||||||
|
|
||||||
if manifest
|
|
||||||
.indices
|
|
||||||
.get(DEFAULT_INDEX_NAME)
|
|
||||||
.filter(|index_url| *index_url == source.repo_url())
|
|
||||||
.is_none()
|
|
||||||
{
|
|
||||||
return Err(Error::InvalidArchive);
|
|
||||||
}
|
|
||||||
|
|
||||||
let dependencies = manifest
|
let dependencies = manifest
|
||||||
.all_dependencies()
|
.all_dependencies()
|
||||||
.map_err(|_| Error::InvalidArchive)?;
|
.map_err(|_| Error::InvalidArchive)?;
|
||||||
|
@ -139,8 +130,12 @@ pub async fn publish_package(
|
||||||
if specifier
|
if specifier
|
||||||
.index
|
.index
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.is_some_and(|index| index != DEFAULT_INDEX_NAME)
|
.filter(|index| match index.parse::<url::Url>() {
|
||||||
&& !config.other_registries_allowed
|
Ok(_) if config.other_registries_allowed => true,
|
||||||
|
Ok(url) => url == env!("CARGO_PKG_REPOSITORY").parse().unwrap(),
|
||||||
|
Err(_) => false,
|
||||||
|
})
|
||||||
|
.is_none()
|
||||||
{
|
{
|
||||||
return Err(Error::InvalidArchive);
|
return Err(Error::InvalidArchive);
|
||||||
}
|
}
|
||||||
|
@ -153,10 +148,19 @@ pub async fn publish_package(
|
||||||
return Err(Error::InvalidArchive);
|
return Err(Error::InvalidArchive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DependencySpecifiers::Wally(_) => {
|
DependencySpecifiers::Wally(specifier) => {
|
||||||
if !config.wally_allowed {
|
if !config.wally_allowed {
|
||||||
return Err(Error::InvalidArchive);
|
return Err(Error::InvalidArchive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if specifier
|
||||||
|
.index
|
||||||
|
.as_ref()
|
||||||
|
.filter(|index| index.parse::<url::Url>().is_ok())
|
||||||
|
.is_none()
|
||||||
|
{
|
||||||
|
return Err(Error::InvalidArchive);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
DependencySpecifiers::Git(_) => {
|
DependencySpecifiers::Git(_) => {
|
||||||
if !config.git_allowed {
|
if !config.git_allowed {
|
||||||
|
|
|
@ -3,11 +3,10 @@ use std::{env::current_dir, fs::create_dir_all, sync::Mutex};
|
||||||
use actix_cors::Cors;
|
use actix_cors::Cors;
|
||||||
use actix_governor::{Governor, GovernorConfigBuilder};
|
use actix_governor::{Governor, GovernorConfigBuilder};
|
||||||
use actix_web::{
|
use actix_web::{
|
||||||
middleware::{Compress, Condition, Logger, NormalizePath, TrailingSlash},
|
middleware::{from_fn, Compress, Condition, Logger, NormalizePath, TrailingSlash},
|
||||||
rt::System,
|
rt::System,
|
||||||
web, App, HttpServer,
|
web, App, HttpServer,
|
||||||
};
|
};
|
||||||
use actix_web_lab::middleware::from_fn;
|
|
||||||
use log::info;
|
use log::info;
|
||||||
use rusty_s3::{Bucket, Credentials, UrlStyle};
|
use rusty_s3::{Bucket, Credentials, UrlStyle};
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
use crate::cli::config::{read_config, write_config, CliConfig};
|
use crate::cli::{
|
||||||
|
config::{read_config, write_config, CliConfig},
|
||||||
|
home_dir,
|
||||||
|
};
|
||||||
|
use anyhow::Context;
|
||||||
use clap::Args;
|
use clap::Args;
|
||||||
|
|
||||||
#[derive(Debug, Args)]
|
#[derive(Debug, Args)]
|
||||||
|
@ -26,6 +30,10 @@ impl ScriptsRepoCommand {
|
||||||
Some(repo) => {
|
Some(repo) => {
|
||||||
config.scripts_repo = repo.clone();
|
config.scripts_repo = repo.clone();
|
||||||
write_config(&config)?;
|
write_config(&config)?;
|
||||||
|
|
||||||
|
std::fs::remove_dir_all(home_dir()?.join("scripts"))
|
||||||
|
.context("failed to remove scripts directory")?;
|
||||||
|
|
||||||
println!("scripts repo set to: {repo}");
|
println!("scripts repo set to: {repo}");
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
|
|
@ -227,6 +227,56 @@ impl PublishCommand {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "wally-compat")]
|
||||||
|
let mut has_wally = false;
|
||||||
|
let mut has_git = false;
|
||||||
|
|
||||||
|
for specifier in manifest
|
||||||
|
.dependencies
|
||||||
|
.values_mut()
|
||||||
|
.chain(manifest.dev_dependencies.values_mut())
|
||||||
|
.chain(manifest.peer_dependencies.values_mut())
|
||||||
|
{
|
||||||
|
match specifier {
|
||||||
|
DependencySpecifiers::Pesde(specifier) => {
|
||||||
|
let index_name = specifier
|
||||||
|
.index
|
||||||
|
.as_deref()
|
||||||
|
.unwrap_or(DEFAULT_INDEX_NAME)
|
||||||
|
.to_string();
|
||||||
|
specifier.index = Some(
|
||||||
|
manifest
|
||||||
|
.indices
|
||||||
|
.get(&index_name)
|
||||||
|
.context(format!("index {index_name} not found in indices field"))?
|
||||||
|
.to_string(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
#[cfg(feature = "wally-compat")]
|
||||||
|
DependencySpecifiers::Wally(specifier) => {
|
||||||
|
has_wally = true;
|
||||||
|
|
||||||
|
let index_name = specifier
|
||||||
|
.index
|
||||||
|
.as_deref()
|
||||||
|
.unwrap_or(DEFAULT_INDEX_NAME)
|
||||||
|
.to_string();
|
||||||
|
specifier.index = Some(
|
||||||
|
manifest
|
||||||
|
.wally_indices
|
||||||
|
.get(&index_name)
|
||||||
|
.context(format!(
|
||||||
|
"index {index_name} not found in wally_indices field"
|
||||||
|
))?
|
||||||
|
.to_string(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
DependencySpecifiers::Git(_) => {
|
||||||
|
has_git = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
println!("\n{}", "please confirm the following information:".bold());
|
println!("\n{}", "please confirm the following information:".bold());
|
||||||
println!("name: {}", manifest.name);
|
println!("name: {}", manifest.name);
|
||||||
|
@ -334,23 +384,14 @@ impl PublishCommand {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let dependencies = manifest
|
manifest.all_dependencies().context("dependency conflict")?;
|
||||||
.all_dependencies()
|
|
||||||
.context("failed to get dependencies")?;
|
if !config.git_allowed && has_git {
|
||||||
if !config.git_allowed
|
|
||||||
&& dependencies
|
|
||||||
.iter()
|
|
||||||
.any(|(_, (spec, _))| matches!(spec, DependencySpecifiers::Git(_)))
|
|
||||||
{
|
|
||||||
anyhow::bail!("git dependencies are not allowed on this index");
|
anyhow::bail!("git dependencies are not allowed on this index");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "wally-compat")]
|
#[cfg(feature = "wally-compat")]
|
||||||
if !config.wally_allowed
|
if !config.wally_allowed && has_wally {
|
||||||
&& dependencies
|
|
||||||
.iter()
|
|
||||||
.any(|(_, (spec, _))| matches!(spec, DependencySpecifiers::Wally(_)))
|
|
||||||
{
|
|
||||||
anyhow::bail!("wally dependencies are not allowed on this index");
|
anyhow::bail!("wally dependencies are not allowed on this index");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
use std::{collections::BTreeMap, fmt::Debug, hash::Hash, path::PathBuf};
|
use std::{collections::BTreeMap, fmt::Debug, hash::Hash, path::PathBuf};
|
||||||
|
|
||||||
|
use gix::{bstr::BStr, traverse::tree::Recorder, Url};
|
||||||
|
use relative_path::RelativePathBuf;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
manifest::{
|
manifest::{
|
||||||
target::{Target, TargetKind},
|
target::{Target, TargetKind},
|
||||||
|
@ -10,13 +13,12 @@ use crate::{
|
||||||
fs::{store_in_cas, FSEntry, PackageFS},
|
fs::{store_in_cas, FSEntry, PackageFS},
|
||||||
git::{pkg_ref::GitPackageRef, specifier::GitDependencySpecifier},
|
git::{pkg_ref::GitPackageRef, specifier::GitDependencySpecifier},
|
||||||
git_index::GitBasedSource,
|
git_index::GitBasedSource,
|
||||||
|
specifiers::DependencySpecifiers,
|
||||||
PackageSource, ResolveResult, VersionId, IGNORED_DIRS, IGNORED_FILES,
|
PackageSource, ResolveResult, VersionId, IGNORED_DIRS, IGNORED_FILES,
|
||||||
},
|
},
|
||||||
util::hash,
|
util::hash,
|
||||||
Project, MANIFEST_FILE_NAME,
|
Project, DEFAULT_INDEX_NAME, MANIFEST_FILE_NAME,
|
||||||
};
|
};
|
||||||
use gix::{bstr::BStr, traverse::tree::Recorder, Url};
|
|
||||||
use relative_path::RelativePathBuf;
|
|
||||||
|
|
||||||
/// The Git package reference
|
/// The Git package reference
|
||||||
pub mod pkg_ref;
|
pub mod pkg_ref;
|
||||||
|
@ -109,9 +111,62 @@ impl PackageSource for GitPackageSource {
|
||||||
|
|
||||||
let (name, version_id, dependencies) = match manifest {
|
let (name, version_id, dependencies) = match manifest {
|
||||||
Some(manifest) => {
|
Some(manifest) => {
|
||||||
let dependencies = manifest.all_dependencies().map_err(|e| {
|
let dependencies = manifest
|
||||||
errors::ResolveError::CollectDependencies(Box::new(self.repo_url.clone()), e)
|
.all_dependencies()
|
||||||
})?;
|
.map_err(|e| {
|
||||||
|
errors::ResolveError::CollectDependencies(
|
||||||
|
Box::new(self.repo_url.clone()),
|
||||||
|
e,
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.into_iter()
|
||||||
|
.map(|(alias, (mut spec, ty))| {
|
||||||
|
match &mut spec {
|
||||||
|
DependencySpecifiers::Pesde(specifier) => {
|
||||||
|
let index_name = specifier
|
||||||
|
.index
|
||||||
|
.as_deref()
|
||||||
|
.unwrap_or(DEFAULT_INDEX_NAME)
|
||||||
|
.to_string();
|
||||||
|
specifier.index = Some(
|
||||||
|
manifest
|
||||||
|
.indices
|
||||||
|
.get(&index_name)
|
||||||
|
.ok_or_else(|| {
|
||||||
|
errors::ResolveError::PesdeIndexNotFound(
|
||||||
|
index_name.clone(),
|
||||||
|
Box::new(self.repo_url.clone()),
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.to_string(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
#[cfg(feature = "wally-compat")]
|
||||||
|
DependencySpecifiers::Wally(specifier) => {
|
||||||
|
let index_name = specifier
|
||||||
|
.index
|
||||||
|
.as_deref()
|
||||||
|
.unwrap_or(DEFAULT_INDEX_NAME)
|
||||||
|
.to_string();
|
||||||
|
specifier.index = Some(
|
||||||
|
manifest
|
||||||
|
.wally_indices
|
||||||
|
.get(&index_name)
|
||||||
|
.ok_or_else(|| {
|
||||||
|
errors::ResolveError::WallyIndexNotFound(
|
||||||
|
index_name.clone(),
|
||||||
|
Box::new(self.repo_url.clone()),
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.to_string(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
DependencySpecifiers::Git(_) => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok((alias, (spec, ty)))
|
||||||
|
})
|
||||||
|
.collect::<Result<_, errors::ResolveError>>()?;
|
||||||
let name = PackageNames::Pesde(manifest.name);
|
let name = PackageNames::Pesde(manifest.name);
|
||||||
let version_id = VersionId(manifest.version, manifest.target.kind());
|
let version_id = VersionId(manifest.version, manifest.target.kind());
|
||||||
|
|
||||||
|
@ -409,6 +464,14 @@ pub mod errors {
|
||||||
/// No manifest was found
|
/// No manifest was found
|
||||||
#[error("no manifest found in repository {0}")]
|
#[error("no manifest found in repository {0}")]
|
||||||
NoManifest(Box<gix::Url>),
|
NoManifest(Box<gix::Url>),
|
||||||
|
|
||||||
|
/// A pesde index was not found in the manifest
|
||||||
|
#[error("pesde index {0} not found in manifest for repository {1}")]
|
||||||
|
PesdeIndexNotFound(String, Box<gix::Url>),
|
||||||
|
|
||||||
|
/// A Wally index was not found in the manifest
|
||||||
|
#[error("wally index {0} not found in manifest for repository {1}")]
|
||||||
|
WallyIndexNotFound(String, Box<gix::Url>),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Errors that can occur when downloading a package from a Git package source
|
/// Errors that can occur when downloading a package from a Git package source
|
||||||
|
|
|
@ -14,6 +14,7 @@ use crate::{
|
||||||
pub struct WallyPackage {
|
pub struct WallyPackage {
|
||||||
pub name: WallyPackageName,
|
pub name: WallyPackageName,
|
||||||
pub version: Version,
|
pub version: Version,
|
||||||
|
pub registry: url::Url,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn deserialize_specifiers<'de, D: Deserializer<'de>>(
|
pub fn deserialize_specifiers<'de, D: Deserializer<'de>>(
|
||||||
|
@ -67,11 +68,11 @@ impl WallyManifest {
|
||||||
(&self.dev_dependencies, DependencyType::Dev),
|
(&self.dev_dependencies, DependencyType::Dev),
|
||||||
] {
|
] {
|
||||||
for (alias, spec) in deps {
|
for (alias, spec) in deps {
|
||||||
|
let mut spec = spec.clone();
|
||||||
|
spec.index = Some(self.package.registry.to_string());
|
||||||
|
|
||||||
if all_deps
|
if all_deps
|
||||||
.insert(
|
.insert(alias.clone(), (DependencySpecifiers::Wally(spec), ty))
|
||||||
alias.clone(),
|
|
||||||
(DependencySpecifiers::Wally(spec.clone()), ty),
|
|
||||||
)
|
|
||||||
.is_some()
|
.is_some()
|
||||||
{
|
{
|
||||||
return Err(errors::AllDependenciesError::AliasConflict(alias.clone()));
|
return Err(errors::AllDependenciesError::AliasConflict(alias.clone()));
|
||||||
|
|
Loading…
Reference in a new issue