Categorías en lugar de directorios. Herramienta para un almacenamiento cómodo de archivos

Inspirado en artículo

«Categorías en lugar de directorios, o Sistema de archivos semántico para Linux Vitis»,

decidí hacer mi propio análogo de la utilidad vitis para PowerShell Core.

Por qué empecé a hacer esto

En primer lugar, vitis solo para Linux.
En segundo lugar, quiero usar 'tuberías' en PowerShell.

Como quise hacer una utilidad multiplataforma, elegí .Net Core.

Antecedentes

Al principio hubo caos. Luego aparecieron carpetas en el disco.
Pero el caos todavía reinaba. Y aparecieron etiquetas, así como subtags y sinónimos de etiquetas. Pero el caos también se apoderó de ellos. Y se inventaron categorías.

Concepto

Los archivos no se almacenan en una jerarquía de carpetas, sino en un 'montón', con categorías definidas. Un archivo puede pertenecer a varias categorías.

Si necesitas encontrar un archivo, es más fácil ingresar las categorías a las que pertenece. Es mucho más fácil de recordar que en qué carpetas se almacena.

Pero este sistema de archivos no es adecuado en absoluto para almacenar código, fuentes, etc.
Está destinado a almacenar, por ejemplo, fotos familiares, música, documentos.

Uso

Bueno, comencemos con la demostración.

Instalemos Graphile:

# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1

Primero inicializaremos Graphile en la carpeta:

# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.db

Así que hemos configurado todo. Ahora podemos crear una nueva categoría:

PS C:UsersDellGraphileTest> New-Category -Name "music"
music

Agreguemos archivos:

PS C:UsersDellGraphileTest> Get-ChildItem "D:MusicaPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
>> }

Para aquellos que no entendieron lo que hice:

  1. Obtuve una lista de archivos en la carpeta Pink Floyd - The Wall
  2. Convertí cada archivo a su ruta completa
  3. Agregué cada archivo a la categoría música

Ahora comprobemos si realmente añadimos los archivos a la categoría:

PS C:UsersDellGraphileTest> List-Graphiles | Format-Table

Se mostrará una lista en el formato:

CategoriesNames Id Categories Name Extension

Agreguemos más categorías y archivos:

New-Category -Name "the-wall"
New-Category -Name "alan-parsons"

List-Graphiles -Categories "music" | foreach { Add-GraphileToCategory -Categories "the-wall" -Files $_.Name }

Get-ChildItem "D:MusicaThe Alan Parsons Project - Turn of a Friendly Card" -File -Recurse | foreach { $_.FullName } | foreach { Add-FileToCategory -File $_ -Categories "music", "alan-parsons" }

Verifiquemos los archivos:

List-Graphiles -Categories "alan-parsons" | Format-Table

El comando mostrará todos los archivos que pertenecen a la categoría alan-parsons.

¡Más archivos para el dios de los sistemas de archivos!

New-Category -Name "images"
Get-ChildItem "D:Imágenes" -File -Recurse | foreach { $.FullName } | foreach {
    Add-FileToCategory -File $_ -Categories "images"
}

Verificando:

List-Graphiles -Categories "images" | Format-Table

¡Todo funciona!

Pero esto es solo el comienzo. Exporta tu sistema de archivos habitual a Graphile y obtén una excelente organización de archivos.

Dónde descargar Graphile

Aquí enlace en GitLab de Graphile.

Licencia MIT, así que puedes usarlo incluso con fines comerciales.

El futuro del proyecto

Dado que es PowerShell y no tonterías, se puede crear una interfaz gráfica en .NET Core.

Cómo hacerlo:

  1. Instala el paquete Microsoft.PowerShell.SDK
  2. Usa la clase PowerShell y llama a Graphile.

Si te gustó el proyecto, haz commits, merge requesty crea discusiones.

¡Gracias por leer! ¡Úsalo y disfrútalo!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster