Inspirado en
«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.ps1Primero inicializaremos Graphile en la carpeta:
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbAsí que hemos configurado todo. Ahora podemos crear una nueva categoría:
PS C:UsersDellGraphileTest> New-Category -Name "music"
musicAgreguemos 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:
- Obtuve una lista de archivos en la carpeta
Pink Floyd - The Wall - Convertí cada archivo a su ruta completa
- 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-TableSe mostrará una lista en el formato:
CategoriesNames Id Categories Name ExtensionAgreguemos 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-TableEl 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í 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:
- Instala el paquete Microsoft.PowerShell.SDK
- 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
