Getting the path of a Dir
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- operating-systems, security
Línea de trabajo
Comienza revisando las APIs Dir existentes de cap-std y los métodos ProjectDirs de cap-directories; después, examina cómo el wrapper propuesto realiza el seguimiento de las rutas. La tarea estaría terminada cuando haya una API acordada y advertencias documentadas sobre el modelo de capacidades; el issue no indica archivos ni tests que actualizar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Sometimes I'd like to be able to get the path for a Dir.
For example,
- logs or debugging
- passing the path to a separate process
- passing the path to a library that doesn't yet support the capability model
For example, in a personal project, I'm using the git2 wrapper around libgit2. In order to call Repository::clone(url, path), I need the path of the cache directory. I could use gitoxide, a pure rust implementation of git, however that would have the same problem. Maybe in the future we can make gitoxide use cap-std, but for now that's not an option.
Yes, some of these examples break the capability model, however, from a pragmatic point of view, that may be acceptable.
I'm not sure what the best approach here is, but in my personal project I'm using a wrapper like
pub struct DirWithPath {
dir: Dir,
path: PathBuf,
}
with a constructor like
pub fn open_ambient_dir<P: AsRef<Path>>(path: P, ambient_authority: AmbientAuthority) -> io::Result<Self> {
Dir::open_ambient_dir(path.as_ref(), ambient_authority).map(|dir| Self {
dir,
path: path.as_ref().to_path_buf(),
})
}
and an open_dir method that concatenates the path:
pub fn open_dir<P: AsRef<Path>>(self: &Self, path: P) -> io::Result<Self> {
let full_path = self.path.join(path.as_ref());
self.dir.open_dir(path).map(|dir| Self {
dir,
path: full_path,
})
}
One issue with maintaining my own wrapper is that I can't use e.g ProjectDirs from cap-directories because its methods return Dirs, so the paths are unknown. I would have to wrap directories_next directly.
I wonder if it would be useful for other people if something like this was added to cap-std (with appropriate warnings with respect to it breaking the capability model)?
- Lenguaje dominante
- Rust
- Estrellas
- 821
- Forks
- 59
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bytecodealliance/cap-std
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
bytecodealliance/cap-std#427 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
bytecodealliance/cap-std#416 · 2 comentarios ·
-
Archiving cap-stdAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
bytecodealliance/cap-std#426 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
bytecodealliance/cap-std#423 · 5 comentarios ·
-
Replace cap-async-stdAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 42/100
bytecodealliance/cap-std#408 · 4 comentarios · 2 reacciones ·
Todos los issues de bytecodealliance/cap-std
Issues similares
-
area:cli bug good first issue priority:high
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
rtk-ai/rtk#4249 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ActivityWatch/activitywatch#1463 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día