Inspiré par
«Des catégories au lieu de répertoires, ou un système de fichiers sémantique pour Linux Vitis»,
j'ai décidé de créer ma propre version de l'utilitaire vitis pour PowerShell Core.
Pourquoi ai-je commencé cela
Tout d'abord, vitis uniquement pour Linux.
Deuxièmement, j'aimerais utiliser des «pipes» dans PowerShell.
Comme je voulais créer un utilitaire multiplateforme, j'ai choisi .Net Core.
Contexte
Au début, il y avait le chaos. Puis des dossiers sont apparus sur le disque.
Mais le chaos régnait encore. Des tags sont apparus, ainsi que des sous-tags et des synonymes de tags. Mais le chaos les a également envahis. Et des catégories ont été inventées.
Concept
Les fichiers ne sont pas stockés dans une hiérarchie de dossiers, mais dans une «pile», avec des catégories définies. Un fichier peut appartenir à plusieurs catégories.
Si vous devez trouver un fichier, il est plus facile d'entrer les catégories auxquelles il appartient. C'est beaucoup plus facile à retenir que dans quels dossiers il est stocké.
Mais un tel système de fichiers ne convient en aucun cas à la conservation de code, de sources, etc.
Il est destiné à stocker, par exemple, des photos de famille, de la musique, des documents.
Utilisation
Eh bien, commençons la démonstration.
Installons Graphile :
# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1D'abord, initialisons Graphile dans le dossier :
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbDonc, tout est configuré. Maintenant, nous pouvons créer une nouvelle catégorie :
PS C:UsersDellGraphileTest> New-Category -Name "musique"
musiqueAjoutons des fichiers :
PS C:UsersDellGraphileTest> Get-ChildItem "D:MusiquePink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "musique"
>> }Pour ceux qui n'ont pas compris ce que j'ai fait :
- J'ai obtenu une liste de fichiers dans le dossier
Pink Floyd - The Wall - Chaque fichier a été transformé en chemin complet.
- J'ai ajouté chaque fichier à la catégorie.
music
Vérifions maintenant si nous avons vraiment ajouté des fichiers à la catégorie :
PS C:UsersDellGraphileTest> List-Graphiles | Format-TableUne liste sera affichée au format :
CategoriesNames Id Categories Name ExtensionAjoutons encore des catégories et des fichiers :
New-Category -Name "the-wall"
New-Category -Name "alan-parsons"
List-Graphiles -Categories "musique" | foreach { Add-GraphileToCategory -Categories "the-wall" -Files $_.Name }
Get-ChildItem "D:MusiqueLe Projet Alan Parsons - Turn of a Friendly Card" -File -Recurse | foreach { $_.FullName } | foreach { Add-FileToCategory -File $_ -Categories "musique", "alan-parsons" }Vérifions les fichiers :
List-Graphiles -Categories "alan-parsons" | Format-TableLa commande affichera tous les fichiers appartenant à la catégorie alan-parsons.
Plus de fichiers, pour le dieu des systèmes de fichiers !
New-Category -Name "images"
Get-ChildItem "D:Images" -File -Recurse | foreach { $.FullName } | foreach {
Add-FileToCategory -File $_ -Categories "images"
}Vérifions :
List-Graphiles -Categories "images" | Format-TableTout fonctionne !
Mais ce n'est que le début. Exportez votre système de fichiers habituel vers Graphile et obtenez une excellente organisation des fichiers.
Où télécharger Graphile
Voici sur GitLab de Graphile.
Licence MIT, vous pouvez donc l'utiliser même à des fins commerciales.
Avenir du projet
Puisque c'est PowerShell, et non pas un simple script, vous pouvez créer une interface graphique sous .NET Core.
Comment faire :
- Installer le paquet Microsoft.PowerShell.SDK
- Utiliser la classe PowerShell et appeler Graphile.
Si vous aimez le projet, faites des commits, demande de fusionet créez des discussions.
Merci pour votre lecture ! Profitez-en et amusez-vous !
Source : habr.com
