mirror of
https://github.com/rust-lang/cargo
synced 2024-10-14 03:32:39 +00:00
5fe8ab57e2
Try to better handle restricted crate names. This attempts to improve handling of restricted crate names, particularly for `cargo new` and `cargo init`. Hopefully the code is straightforward to follow, but in summary the changes are: **General changes** * Add more details to the error messages about why a name is not allowed, and what is allowed. * Change the valid package name check to be restricted to Unicode XID. This brings it in line with non_ascii_idents support in rustc. For the most part, this is pretty much the same as before. Note: this is used for the package name, and registry names. The differences are: * Package names cannot start with numbers. Previously this was only rejected in `cargo new`. crates.io also rejects numbers. Numbers are also not valid crate names. * Package names cannot start with dash `-`. This is a somewhat arbitrary change, but seems like it would stem problems. crates.io also rejects this. * Package names cannot start with these characters that were previously allowed: https://gist.github.com/ehuss/804a797950001b5226e1264b6f65211f#file-not_start_but_alphanumeric-txt * Most of these are wacky numbers or other strange things. * Package names cannot contain these characters that were previously allowed: https://gist.github.com/ehuss/804a797950001b5226e1264b6f65211f#file-not_continue_but_alphanumeric-txt * These are mostly odd things that for whatever reason the Unicode people decided not to include. It seems unlikely to me that someone would want to use one of these. * Display a warning on Windows if a Cargo target is a special Windows filename. The build error tends to be hard to understand, so the hope is the warning will make it evident. * `cargo package/publish`: Warn if a special Windows name is in the package. **cargo new/init specific changes** * Update keyword list to 2018 edition. * Add warning if creating a library that has one of the conflicting names (deps/examples/build/incremental). * Warn about conflicting std names (core/std/alloc/proc-macro). * Windows reserved names: Rejected on windows, warned on other platforms. * Warn about non-ASCII package names. * Only print the `--name` suggestion for `cargo init`. I found the suggestion confusing, and I feel like it doesn't really make sense for `cargo new` (since it would only affect the directory name). |
||
---|---|---|
.. | ||
build-std | ||
testsuite |