changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate rust/lib/util/src/path.rs

changeset 698: 96958d3eb5b0
parent: 1227f932b628
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
8
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
1
 //! path module
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
2
 //!
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
3
 //! Helper functions for working with paths on filesystem
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
4
 use std::{
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
5
   io::Error,
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
6
   path::{Component, Path, PathBuf},
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
7
 };
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
8
 
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
9
 /// Given a path provided by the user, determines where generated files
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
10
 /// related to that path should go.
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
11
 // this may be for flate only- move there
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
12
 pub fn local_relative_path<P: AsRef<Path>>(path: P) -> Result<PathBuf, Error> {
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
13
   let mut rel_path = PathBuf::new();
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
14
   let path = path.as_ref();
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
15
   for component in path.components() {
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
16
     match component {
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
17
       Component::Prefix(_) | Component::RootDir | Component::CurDir => {}
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
18
       Component::ParentDir => drop(rel_path.pop()), // noop if empty
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
19
       Component::Normal(name) => rel_path.push(name),
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
20
     }
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
21
   }
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
22
 
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
23
   Ok(rel_path)
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
24
 }