nushell/crates/nu-path/src
Ian Manske 5a486029db
Add typed path forms (#13115)
# Description
This PR adds new types to `nu-path` to enforce path invariants. Namely,
this PR adds:
- `Path` and `PathBuf`. These types are different from, but analogous to
`std::path::Path` and `std::path::PathBuf`.
- `RelativePath` and `RelativePathBuf`. These types must be/contain
strictly relative paths.
- `AbsolutePath` and `AbsolutePathBuf`. These types must be/contain
strictly absolute paths.
- `CanonicalPath` and `CanonicalPathBuf`. These types must be/contain
canonical paths.

Operations are prohibited as necessary to ensure that the invariants of
each type are upheld (needs double-checking).

Only paths that are absolute (or canonical) can be easily used as /
converted to `std::path::Path`s. This is to help force us to account for
the emulated current working directory instead of accidentally using the
current directory of the Nushell process (i.e.,
`std::env::current_dir`). Related to #12975 and #12976.

Note that this PR uses several declarative macros, as the file / this PR
would otherwise be 5000 lines long.

# User-Facing Changes
No major changes yet, just adds types to `nu-path` to be used in the
future.

# After Submitting
Actually use the new path types in all our crates where it makes sense,
removing usages of `std::path` types.
2024-06-25 18:33:57 -07:00
..
assert_path_eq.rs Path expansion no longer removes trailing slashes (#12662) 2024-05-01 17:28:54 -05:00
components.rs Fix trailing slash in PWD set by cd (#12760) 2024-05-04 12:38:37 +03:00
dots.rs Path expansion no longer removes trailing slashes (#12662) 2024-05-01 17:28:54 -05:00
expansions.rs Accept filenames in other plugin management commands (#12639) 2024-04-24 06:28:45 -05:00
form.rs Add typed path forms (#13115) 2024-06-25 18:33:57 -07:00
helpers.rs add $nu.data-dir for completions and $nu.cache-dir for other uses (#13122) 2024-06-11 15:10:31 -04:00
lib.rs Add typed path forms (#13115) 2024-06-25 18:33:57 -07:00
path.rs Add typed path forms (#13115) 2024-06-25 18:33:57 -07:00
tilde.rs Path expansion no longer removes trailing slashes (#12662) 2024-05-01 17:28:54 -05:00
trailing_slash.rs Fix trailing slash in PWD set by cd (#12760) 2024-05-04 12:38:37 +03:00