Skip to content

Commit 7bc69e7

Browse files
authored
Merge pull request #7201 from Turbo87/url-fields
publish: Use `homepage`, `documentation` and `repository` fields from embedded `Cargo.toml` file
2 parents d1f21e6 + 31f1548 commit 7bc69e7

8 files changed

+16
-20
lines changed

src/controllers/krate/publish.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
122122
let description = package.description.map(|it| it.as_local().unwrap());
123123
let mut license = package.license.map(|it| it.as_local().unwrap());
124124
let license_file = package.license_file.map(|it| it.as_local().unwrap());
125+
let homepage = package.homepage.map(|it| it.as_local().unwrap());
126+
let documentation = package.documentation.map(|it| it.as_local().unwrap());
127+
let repository = package.repository.map(|it| it.as_local().unwrap());
125128

126129
// Make sure required fields are provided
127130
fn empty(s: Option<&String>) -> bool {
@@ -150,13 +153,16 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
150153
license = Some(String::from("non-standard"));
151154
}
152155

156+
validate_url(homepage.as_deref(), "homepage")?;
157+
validate_url(documentation.as_deref(), "documentation")?;
158+
validate_url(repository.as_deref(), "repository")?;
159+
153160
// Create a transaction on the database, if there are no errors,
154161
// commit the transactions to record a new or updated crate.
155162
conn.transaction(|conn| {
156163
let name = metadata.name;
157164
let vers = &*metadata.vers;
158165
let links = metadata.links;
159-
let repo = metadata.repository;
160166
let features = metadata
161167
.features
162168
.into_iter()
@@ -177,17 +183,13 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
177183
let persist = NewCrate {
178184
name: &name,
179185
description: description.as_deref(),
180-
homepage: metadata.homepage.as_deref(),
181-
documentation: metadata.documentation.as_deref(),
186+
homepage: homepage.as_deref(),
187+
documentation: documentation.as_deref(),
182188
readme: metadata.readme.as_deref(),
183-
repository: repo.as_deref(),
189+
repository: repository.as_deref(),
184190
max_upload_size: None,
185191
};
186192

187-
validate_url(persist.homepage, "homepage")?;
188-
validate_url(persist.documentation, "documentation")?;
189-
validate_url(persist.repository, "repository")?;
190-
191193
if is_reserved_name(persist.name, conn)? {
192194
return Err(cargo_err("cannot upload a crate with a reserved name"));
193195
}
@@ -271,7 +273,7 @@ pub async fn publish(app: AppState, req: BytesRequest) -> AppResult<Json<GoodCra
271273
metadata
272274
.readme_file
273275
.unwrap_or_else(|| String::from("README.md")),
274-
repo,
276+
repository,
275277
pkg_path_in_vcs,
276278
)
277279
.enqueue_with_priority(conn, PRIORITY_RENDER_README)?;

src/tests/builders/publish.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,6 @@ impl PublishBuilder {
142142
vers: u::EncodableCrateVersion(self.version.clone()),
143143
features: self.features.clone(),
144144
deps: self.deps.clone(),
145-
homepage: None,
146-
documentation: self.doc_url.clone(),
147145
readme: self.readme,
148146
readme_file: None,
149147
keywords: u::EncodableKeywordList(
@@ -160,7 +158,6 @@ impl PublishBuilder {
160158
.map(u::EncodableCategory)
161159
.collect(),
162160
),
163-
repository: None,
164161
links: None,
165162
};
166163

src/tests/krate/publish/snapshots/all__krate__publish__categories__too_many_categories.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ expression: response.into_json()
55
{
66
"errors": [
77
{
8-
"detail": "invalid upload request: invalid length 6, expected at most 5 categories per crate at line 1 column 191"
8+
"detail": "invalid upload request: invalid length 6, expected at most 5 categories per crate at line 1 column 154"
99
}
1010
]
1111
}

src/tests/krate/publish/snapshots/all__krate__publish__keywords__bad_keywords-2.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ expression: response.into_json()
55
{
66
"errors": [
77
{
8-
"detail": "invalid upload request: invalid value: string \"?@?%\", expected a valid keyword specifier at line 1 column 150"
8+
"detail": "invalid upload request: invalid value: string \"?@?%\", expected a valid keyword specifier at line 1 column 113"
99
}
1010
]
1111
}

src/tests/krate/publish/snapshots/all__krate__publish__keywords__bad_keywords-3.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ expression: response.into_json()
55
{
66
"errors": [
77
{
8-
"detail": "invalid upload request: invalid value: string \"áccênts\", expected a valid keyword specifier at line 1 column 155"
8+
"detail": "invalid upload request: invalid value: string \"áccênts\", expected a valid keyword specifier at line 1 column 118"
99
}
1010
]
1111
}

src/tests/krate/publish/snapshots/all__krate__publish__keywords__bad_keywords.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ expression: response.into_json()
55
{
66
"errors": [
77
{
8-
"detail": "invalid upload request: invalid length 29, expected a keyword with less than 20 characters at line 1 column 175"
8+
"detail": "invalid upload request: invalid length 29, expected a keyword with less than 20 characters at line 1 column 138"
99
}
1010
]
1111
}

src/tests/krate/publish/snapshots/all__krate__publish__keywords__too_many_keywords.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ expression: response.into_json()
55
{
66
"errors": [
77
{
8-
"detail": "invalid upload request: invalid length 6, expected at most 5 keywords per crate at line 1 column 175"
8+
"detail": "invalid upload request: invalid length 6, expected at most 5 keywords per crate at line 1 column 138"
99
}
1010
]
1111
}

src/views/krate_publish.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,12 @@ pub struct PublishMetadata {
1818
pub vers: EncodableCrateVersion,
1919
pub deps: Vec<EncodableCrateDependency>,
2020
pub features: BTreeMap<EncodableFeatureName, Vec<EncodableFeature>>,
21-
pub homepage: Option<String>,
22-
pub documentation: Option<String>,
2321
pub readme: Option<String>,
2422
pub readme_file: Option<String>,
2523
#[serde(default)]
2624
pub keywords: EncodableKeywordList,
2725
#[serde(default)]
2826
pub categories: EncodableCategoryList,
29-
pub repository: Option<String>,
3027
#[serde(default)]
3128
pub links: Option<String>,
3229
}

0 commit comments

Comments
 (0)