-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Upload categories specified in the manifest #3301
Conversation
r? @brson (rust_highfive has picked a reviewer for you, use r? to override) |
👍 From my comments on the crates.io PR, we may want to integrate a feedback mechanism here for unknown categories, but we can figure that out on the crates.io side first. |
Wheeee there's some failing tests that are totally my fault |
@@ -147,7 +154,8 @@ impl Registry { | |||
Ok(json::decode::<Users>(&body)?.users) | |||
} | |||
|
|||
pub fn publish(&mut self, krate: &NewCrate, tarball: &File) -> Result<()> { | |||
pub fn publish(&mut self, krate: &NewCrate, tarball: &File) | |||
-> Result<Vec<String>> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps the return value here could be structured, like:
struct Warnings {
category: Vec<String>,
}
(etc)
I... did github change their UI again? I don't understand why the icon on the left is merge-conflict gray. I tried rebasing on master and it says it's up to date... |
It's "you can't merge this PR" gray. In this case, I assume, because you don't have permission to push to master. Bors can, though, so no worries. |
:( that's confusing. |
This looks good to me, just gonna wait to r+ until we merge the crates.io support and deploy it. |
@bors: r+ Oh I meant to r+ this long ago! |
📌 Commit f697b8c has been approved by |
Upload categories specified in the manifest This adds support for uploading categories to crates.io, if they are specified in the manifest. This goes with rust-lang/crates.io#473. It should be fine to merge this PR either before or after that one; crates.io master doesn't care if the categories are in the metadata or not. With that PR, I was able to use this patch with cargo to add categories to a crate!
☀️ Test successful - status-appveyor, status-travis |
Upload Travis CI and Appveyor badge metadata specified in the manifest This goes with rust-lang/crates.io#504. This has cargo upload badge metadata to crates.io on publish, and will print any warnings it gets back from crates.io about unknown badges or missing required badge attributes! This will definitely cause some merge conflicts with #3301, I'll watch and fix whichever one gets merged 2nd :)
Add categories to Cargo.toml Hi! [crates.io now supports categories][categories], which are a curated list of topics aimed at helping an end-user coming to crates.io looking for "a crate to do ______". We're sending pull requests to selected crates to add categories in order to help populate the categories and seed their usefulness. We've made a guess at the best category/categories for this crate; if it doesn't fit, please feel free to take a look at [all the available categories and their descriptions][categories] and [the slug values that should be specified in your Cargo.toml][slugs] and pick different ones. If you have a category in mind that isn't available, you can [send a PR to this file on crates.io][categories.toml] to propose additional categories. Crates can have up to 5 categories, and uploading categories to crates.io currently requires publishing a new version with a cargo nightly from 2017-01-18 or later (it needs to contain [this PR][cargo-pr]). We've [published a blog post][blog-post] with further details about categories. The blog post also talks about the new crates.io support for CI badges, which you may be interested in adding as well. Please let me know if you have any questions! [categories]: https://crates.io/categories [slugs]: https://crates.io/category_slugs [categories.toml]: https://github.com/rust-lang/crates.io/blob/master/src/categories.toml [cargo-pr]: rust-lang/cargo#3301 [blog-post]: http://integer32.com/2017/01/20/categories-and-ci-badges.html
Add categories to Cargo.toml Hi! [crates.io now supports categories][categories], which are a curated list of topics aimed at helping an end-user coming to crates.io looking for "a crate to do ______". We're sending pull requests to selected crates to add categories in order to help populate the categories and seed their usefulness. We've made a guess at the best category/categories for this crate; if it doesn't fit, please feel free to take a look at [all the available categories and their descriptions][categories] and [the slug values that should be specified in your Cargo.toml][slugs] and pick different ones. If you have a category in mind that isn't available, you can [send a PR to this file on crates.io][categories.toml] to propose additional categories. Crates can have up to 5 categories, and uploading categories to crates.io currently requires publishing a new version with a cargo nightly from 2017-01-18 or later (it needs to contain [this PR][cargo-pr]). We've [published a blog post][blog-post] with further details about categories. The blog post also talks about the new crates.io support for CI badges, which you may be interested in adding as well. Please let me know if you have any questions! [categories]: https://crates.io/categories [slugs]: https://crates.io/category_slugs [categories.toml]: https://github.com/rust-lang/crates.io/blob/master/src/categories.toml [cargo-pr]: rust-lang/cargo#3301 [blog-post]: http://integer32.com/2017/01/20/categories-and-ci-badges.html
Add categories to Cargo.toml Hi! [crates.io now supports categories][categories], which are a curated list of topics aimed at helping an end-user coming to crates.io looking for "a crate to do ______". We're sending pull requests to selected crates to add categories in order to help populate the categories and seed their usefulness. We've made a guess at the best category/categories for this crate; if it doesn't fit, please feel free to take a look at [all the available categories and their descriptions][categories] and [the slug values that should be specified in your Cargo.toml][slugs] and pick different ones. If you have a category in mind that isn't available, you can [send a PR to this file on crates.io][categories.toml] to propose additional categories. Crates can have up to 5 categories, and uploading categories to crates.io currently requires publishing a new version with a cargo nightly from 2017-01-18 or later (it needs to contain [this PR][cargo-pr]). We've [published a blog post][blog-post] with further details about categories. The blog post also talks about the new crates.io support for CI badges, which you may be interested in adding as well. Please let me know if you have any questions! [categories]: https://crates.io/categories [slugs]: https://crates.io/category_slugs [categories.toml]: https://github.com/rust-lang/crates.io/blob/master/src/categories.toml [cargo-pr]: rust-lang/cargo#3301 [blog-post]: http://integer32.com/2017/01/20/categories-and-ci-badges.html
Please change the beta channel cargo so that, at a minimum, it doesn't emit a warning when |
Add categories to Cargo.toml Hi! [crates.io now supports categories][categories], which are a curated list of topics aimed at helping an end-user coming to crates.io looking for "a crate to do ______". We're sending pull requests to selected crates to add categories in order to help populate the categories and seed their usefulness. We've made a guess at the best category/categories for this crate; if it doesn't fit, please feel free to take a look at [all the available categories and their descriptions][categories] and [the slug values that should be specified in your Cargo.toml][slugs] and pick different ones. If you have a category in mind that isn't available, you can [send a PR to this file on crates.io][categories.toml] to propose additional categories. Crates can have up to 5 categories, and uploading categories to crates.io currently requires publishing a new version with a cargo nightly from 2017-01-18 or later (it needs to contain [this PR][cargo-pr]). We've [published a blog post][blog-post] with further details about categories. The blog post also talks about the new crates.io support for CI badges, which you may be interested in adding as well. Please let me know if you have any questions! [categories]: https://crates.io/categories [slugs]: https://crates.io/category_slugs [categories.toml]: https://github.com/rust-lang/crates.io/blob/master/src/categories.toml [cargo-pr]: rust-lang/cargo#3301 [blog-post]: http://integer32.com/2017/01/20/categories-and-ci-badges.html
Version 1.16.0 (2017-03-16) =========================== Language -------- * Lifetimes in statics and consts default to `'static`. [RFC 1623] * [The compiler's `dead_code` lint now accounts for type aliases][38051]. * [Uninhabitable enums (those without any variants) no longer permit wildcard match patterns][38069] * [Clean up semantics of `self` in an import list][38313] * [`Self` may appear in `impl` headers][38920] * [`Self` may appear in struct expressions][39282] Compiler -------- * [`rustc` now supports `--emit=metadata`, which causes rustc to emit a `.rmeta` file containing only crate metadata][38571]. This can be used by tools like the Rust Language Service to perform metadata-only builds. * [Levenshtein based typo suggestions now work in most places, while previously they worked only for fields and sometimes for local variables][38927]. Together with the overhaul of "no resolution"/"unexpected resolution" errors (#[38154]) they result in large and systematic improvement in resolution diagnostics. * [Fix `transmute::<T, U>` where `T` requires a bigger alignment than `U`][38670] * [rustc: use -Xlinker when specifying an rpath with ',' in it][38798] * [`rustc` no longer attempts to provide "consider using an explicit lifetime" suggestions][37057]. They were inaccurate. Stabilized APIs --------------- * [`VecDeque::truncate`] * [`VecDeque::resize`] * [`String::insert_str`] * [`Duration::checked_add`] * [`Duration::checked_sub`] * [`Duration::checked_div`] * [`Duration::checked_mul`] * [`str::replacen`] * [`str::repeat`] * [`SocketAddr::is_ipv4`] * [`SocketAddr::is_ipv6`] * [`IpAddr::is_ipv4`] * [`IpAddr::is_ipv6`] * [`Vec::dedup_by`] * [`Vec::dedup_by_key`] * [`Result::unwrap_or_default`] * [`<*const T>::wrapping_offset`] * [`<*mut T>::wrapping_offset`] * `CommandExt::creation_flags` * [`File::set_permissions`] * [`String::split_off`] Libraries --------- * [`[T]::binary_search` and `[T]::binary_search_by_key` now take their argument by `Borrow` parameter][37761] * [All public types in std implement `Debug`][38006] * [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327] * [`Ipv6Addr` implements `From<[u16; 8]>`][38131] * [Ctrl-Z returns from `Stdin.read()` when reading from the console on Windows][38274] * [std: Fix partial writes in `LineWriter`][38062] * [std: Clamp max read/write sizes on Unix][38062] * [Use more specific panic message for `&str` slicing errors][38066] * [`TcpListener::set_only_v6` is deprecated][38304]. This functionality cannot be achieved in std currently. * [`writeln!`, like `println!`, now accepts a form with no string or formatting arguments, to just print a newline][38469] * [Implement `iter::Sum` and `iter::Product` for `Result`][38580] * [Reduce the size of static data in `std_unicode::tables`][38781] * [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`, `CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement `Display`][38909] * [`Duration` implements `Sum`][38712] * [`String` implements `ToSocketAddrs`][39048] Cargo ----- * [The `cargo check` command does a type check of a project without building it][cargo/3296] * [crates.io will display CI badges from Travis and AppVeyor, if specified in Cargo.toml][cargo/3546] * [crates.io will display categories listed in Cargo.toml][cargo/3301] * [Compilation profiles accept integer values for `debug`, in addition to `true` and `false`. These are passed to `rustc` as the value to `-C debuginfo`][cargo/3534] * [Implement `cargo --version --verbose`][cargo/3604] * [All builds now output 'dep-info' build dependencies compatible with make and ninja][cargo/3557] * [Build all workspace members with `build --all`][cargo/3511] * [Document all workspace members with `doc --all`][cargo/3515] * [Path deps outside workspace are not members][cargo/3443] Misc ---- * [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies the path to the Rust implementation][38589] * [The `armv7-linux-androideabi` target no longer enables NEON extensions, per Google's ABI guide][38413] * [The stock standard library can be compiled for Redox OS][38401] * [Rust has initial SPARC support][38726]. Tier 3. No builds available. * [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No builds available. * [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379] Compatibility Notes ------------------- * [Uninhabitable enums (those without any variants) no longer permit wildcard match patterns][38069] * In this release, references to uninhabited types can not be pattern-matched. This was accidentally allowed in 1.15. * [The compiler's `dead_code` lint now accounts for type aliases][38051]. * [Ctrl-Z returns from `Stdin.read()` when reading from the console on Windows][38274] * [Clean up semantics of `self` in an import list][38313] [37057]: rust-lang/rust#37057 [37761]: rust-lang/rust#37761 [38006]: rust-lang/rust#38006 [38051]: rust-lang/rust#38051 [38062]: rust-lang/rust#38062 [38062]: rust-lang/rust#38622 [38066]: rust-lang/rust#38066 [38069]: rust-lang/rust#38069 [38131]: rust-lang/rust#38131 [38154]: rust-lang/rust#38154 [38274]: rust-lang/rust#38274 [38304]: rust-lang/rust#38304 [38313]: rust-lang/rust#38313 [38314]: rust-lang/rust#38314 [38327]: rust-lang/rust#38327 [38401]: rust-lang/rust#38401 [38413]: rust-lang/rust#38413 [38469]: rust-lang/rust#38469 [38559]: rust-lang/rust#38559 [38571]: rust-lang/rust#38571 [38580]: rust-lang/rust#38580 [38589]: rust-lang/rust#38589 [38670]: rust-lang/rust#38670 [38712]: rust-lang/rust#38712 [38726]: rust-lang/rust#38726 [38781]: rust-lang/rust#38781 [38798]: rust-lang/rust#38798 [38909]: rust-lang/rust#38909 [38920]: rust-lang/rust#38920 [38927]: rust-lang/rust#38927 [39048]: rust-lang/rust#39048 [39282]: rust-lang/rust#39282 [39379]: rust-lang/rust#39379 [`<*const T>::wrapping_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset [`<*mut T>::wrapping_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset [`Duration::checked_add`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_add [`Duration::checked_div`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_div [`Duration::checked_mul`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_mul [`Duration::checked_sub`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_sub [`File::set_permissions`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.set_permissions [`IpAddr::is_ipv4`]: https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_ipv4 [`IpAddr::is_ipv6`]: https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_ipv6 [`Result::unwrap_or_default`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_or_default [`SocketAddr::is_ipv4`]: https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv4 [`SocketAddr::is_ipv6`]: https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv6 [`String::insert_str`]: https://doc.rust-lang.org/std/string/struct.String.html#method.insert_str [`String::split_off`]: https://doc.rust-lang.org/std/string/struct.String.html#method.split_off [`Vec::dedup_by_key`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.dedup_by_key [`Vec::dedup_by`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.dedup_by [`VecDeque::resize`]: https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.resize [`VecDeque::truncate`]: https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.truncate [`str::repeat`]: https://doc.rust-lang.org/std/primitive.str.html#method.repeat [`str::replacen`]: https://doc.rust-lang.org/std/primitive.str.html#method.replacen [cargo/3296]: rust-lang/cargo#3296 [cargo/3301]: rust-lang/cargo#3301 [cargo/3443]: rust-lang/cargo#3443 [cargo/3511]: rust-lang/cargo#3511 [cargo/3515]: rust-lang/cargo#3515 [cargo/3534]: rust-lang/cargo#3534 [cargo/3546]: rust-lang/cargo#3546 [cargo/3557]: rust-lang/cargo#3557 [cargo/3604]: rust-lang/cargo#3604 [RFC 1623]: https://github.com/rust-lang/rfcs/blob/master/text/1623-static.md
This adds support for uploading categories to crates.io, if they are specified in the manifest.
This goes with rust-lang/crates.io#473. It should be fine to merge this PR either before or after that one; crates.io master doesn't care if the categories are in the metadata or not. With that PR, I was able to use this patch with cargo to add categories to a crate!