Geïnspireerd door
«Categorieën in plaats van mappen, of een semantisch bestandssysteem voor Linux Vitis»,
besloot ik een soortgelijke tool te maken vitis voor PowerShell Core.
Waarom ben ik hiermee begonnen
Ten eerste, vitis alleen voor Linux.
Ten tweede, ik wil gebruikmaken van 'pipes' in PowerShell.
Omdat ik een cross-platform-tool wilde maken, koos ik voor .Net Core.
Achtergrond
In het begin was er chaos. Daarna verschenen er mappen op de schijf.
Maar de chaos heerste nog steeds. En er kwamen tags, evenals sub-tags en synoniemen voor tags. Maar de chaos veroverde ook die. En er werden categorieën bedacht.
Concept
Bestanden worden niet in een hiërarchie van mappen opgeslagen, maar in een 'hoop', met bepaalde categorieën. Eén bestand kan tot meerdere categorieën behoren.
Als je een bestand wilt vinden, is het handiger om de categorieën in te voeren waartoe het behoort. Dit is veel gemakkelijker te onthouden dan in welke mappen het is opgeslagen.
Maar zo'n bestandssysteem is absoluut niet geschikt voor het opslaan van code, bronnen, enz.
Het is bedoeld voor het opslaan van bijvoorbeeld familiefoto's, muziek, documenten.
Gebruik van
Nou, laten we beginnen met de demonstratie.
Laten we Graphile installeren:
# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1Laten we eerst Graphile initialiseren in de map:
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbDus, we hebben alles ingesteld. Nu kunnen we een nieuwe categorie aanmaken:
PS C:UsersDellGraphileTest> New-Category -Name "music"
musicLaten we bestanden toevoegen:
PS C:UsersDellGraphileTest> Get-ChildItem "D:MusicPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
>> }Voor degenen die niet begrepen wat ik deed:
- Ik verkreeg een lijst van bestanden in de map
Pink Floyd - The Wall - Elk bestand is omgevormd naar het volledige pad
- Ik heb elk bestand aan de categorie toegevoegd
music
Laten we nu controleren of we de bestanden inderdaad aan de categorie hebben toegevoegd:
PS C:UsersDellGraphileTest> List-Graphiles | Format-TableEr zal een lijst worden weergegeven in het formaat:
CategoriesNames Id Categories Name ExtensionLaten we meer categorieën en bestanden toevoegen:
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:MusicThe Alan Parsons Project - Turn of a Friendly Card" -File -Recurse | foreach { $_.FullName } | foreach { Add-FileToCategory -File $_ -Categories "music", "alan-parsons" }Laten we de bestanden controleren:
List-Graphiles -Categories "alan-parsons" | Format-TableDe opdracht geeft alle bestanden weer die tot de categorie behoren alan-parsons.
Meer bestanden voor de god van bestandssystemen!
New-Category -Name "images"
Get-ChildItem "D:Afbeeldingen" -File -Recurse | foreach { $.FullName } | foreach {
Add-FileToCategory -File $_ -Categories "images"
}We controleren:
List-Graphiles -Categories "images" | Format-TableAlles werkt!
Maar dit is pas het begin. Exporteer jouw gewone bestandssysteem naar Graphile en krijg een uitstekende organisatie van bestanden.
Waar te downloaden Graphile
Hier is op GitLab van Graphile.
Licentie MIT, dus je kunt het zelfs voor commerciële doeleinden gebruiken.
De toekomst van het project
Aangezien dit PowerShell is en geen onzin, kun je een grafische interface maken voor .NET Core.
Hoe te doen:
- Installeer het pakket Microsoft.PowerShell.SDK
- Gebruik de PowerShell-klasse en roep Graphile aan.
Als je het project leuk vindt, maak dan commits, merge requesten start discussies.
Bedankt voor het lezen! Maak er gebruik van en geniet ervan!
Bron: habr.com
