Support java.nio.file.FileSystem abstraction
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Área
- operating-systems
Línea de trabajo
Comienza revisando el constructor de rutas de datoteka y las funciones que operan sobre rutas; después, compara sus suposiciones con FileSystem y ZipFileSystemProvider de Java. Define cómo los sistemas de archivos no predeterminados conservarían la compatibilidad hacia atrás y decide por separado si la gestión concurrente de recursos de archivos zip debe pertenecer a datoteka o a una biblioteca complementaria.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi,
Firstly thanks for datoteka I've been using it across several projects for several years.
The main limitation I have encountered in using it however is that it only supports creation of paths on the default filesystem, and doesn't support constructing paths in other java FileSystems; in particular zip files.
In a few projects I've had the need to operate on paths and perform IO reading and writing files in and out of zip files; and consequently I had to work around some of these limitations and develop some custom code for interop with java's ZipFileSystem. Java ships with a ZipFileSystemProvider, which can be used for this purpose.
I was thinking it would be nice to contribute and integrate some of this code into datoteka or as a companion library. Is it something you'd be interested in?
I'm not entirely sure what would be required to maintain backwards compatibility with datoteka yet. However I believe the main change is simply that I added a new path constructor which takes a FileSystem as the first argument (or if no filesystem is provided here it assumes the default filesystem), and it then returns paths in that filesystem. I believe these paths can then work with most of the datoteka functions as they stand; though some may want to also take an optional filesystem argument.
If you're interested what do you think is the best way to proceed? I was thinking I might first extract the code into a separate library, and share it here for discussion on how best to integrate, before working up a PR to attempt it?
There is some additional code I wrote to also handle reading zip files and managing their resources from multiple threads; which is necessary because the underlying java code doesn't do this very well. I don't know whether that belongs here or not yet; but it is very useful if you need to for example serve files out of zip files over http and may have multiple requests accessing the same file at the same time.
Anyway let me know if this is something worth trying to contribute?
Many thanks.
- Lenguaje dominante
- Clojure
- Estrellas
- 60
- Forks
- 8
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 funcool/datoteka
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 40/100
Todos los issues de funcool/datoteka
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
category:tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
.Needs Triage .Team/UXWest Priority:P2 Type:Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
metabase/metabase#83998 · 1 comentario ·
Los mantenedores suelen responder en 1 día