Zainspirowany
„Kategorie zamiast katalogów, czyli semantyczny system plików dla Linux Vitis”
postanowiłem stworzyć swój odpowiednik narzędzia vitis dla PowerShell Core.
Dlaczego zacząłem to robić
Po pierwsze, vitis tylko dla Linuxa.
Po drugie, chcę korzystać z „rur” w PowerShell.
Ponieważ postanowiłem stworzyć wieloplatformowe narzędzie, wybrałem .Net Core.
Tło
Na początku panował chaos. Później na dysku pojawiły się foldery.
Ale chaos wciąż panował. Pojawiły się tagi, a także podtagi i synonimy tagów. Chaos zajął również je. Wymyślono kategorie.
Koncepcja
Pliki są przechowywane nie w hierarchii folderów, lecz w „stosem”, z określonymi kategoriami. Jeden plik może należeć do wielu kategorii.
Jeśli trzeba znaleźć plik, łatwiej wpisać kategorie, do których należy. To dużo łatwiejsze do zapamiętania, niż w jakich folderach jest przechowywany.
Jednak taki system plików w żadnym wypadku nie nadaje się do przechowywania kodu, źródeł itd.
Jest przeznaczony do przechowywania, na przykład, rodzinnych zdjęć, muzyki, dokumentów.
Użycie
No cóż, przejdźmy do demonstracji.
Zainstalujmy Graphile:
# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1Najpierw inicjalizujemy Graphile w folderze:
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbZatem wszystko skonfigurowaliśmy. Teraz możemy stworzyć nową kategorię:
PS C:UsersDellGraphileTest> New-Category -Name "music"
musicDodajmy pliki:
PS C:UsersDellGraphileTest> Get-ChildItem "D:MuzykaPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
>> }Dla tych, którzy nie zrozumieli, co zrobiłem:
- Uzyskałem listę plików w folderze
Pink Floyd - The Wall - Każdy plik przekształciłem w pełną ścieżkę do nich
- Dodałem każdy plik do kategorii
music
Teraz sprawdźmy, czy rzeczywiście dodaliśmy pliki do kategorii:
PS C:UsersDellGraphileTest> List-Graphiles | Format-TableZostanie wyświetlona lista w formacie:
CategoriesNames Id Categories Name ExtensionDodajmy jeszcze kategorie i pliki:
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:MuzykaThe Alan Parsons Project - Turn of a Friendly Card" -File -Recurse | foreach { $_.FullName } | foreach { Add-FileToCategory -File $_ -Categories "music", "alan-parsons" }Sprawdźmy pliki:
List-Graphiles -Categories "alan-parsons" | Format-TablePolecenie wyświetli wszystkie pliki, które należą do kategorii alan-parsons.
Więcej plików dla boga systemów plików!
New-Category -Name "images"
Get-ChildItem "D:Obrazy" -File -Recurse | foreach { $.FullName } | foreach {
Add-FileToCategory -File $_ -Categories "images"
}Sprawdzamy:
List-Graphiles -Categories "images" | Format-TableWszystko działa!
Ale to dopiero początek. Wyeksportuj swoją zwykłą strukturę plików do Graphile i uzyskaj doskonałą organizację plików.
Skąd pobrać Graphile
Oto na GitLab Graphile'a.
Licencja MIT, więc można go używać nawet w celach komercyjnych.
Przyszłość projektu
Ponieważ to PowerShell, a nie byle co, można stworzyć graficzny interfejs dla .NET Core.
Jak to zrobić:
- Zainstalować pakiet Microsoft.PowerShell.SDK
- Użyć klasy PowerShell i wywołać Graphile.
Jeśli podoba Ci się projekt, dokonaj commitów, merge requesti twórz dyskusje.
Dziękuję za przeczytanie! Korzystaj i ciesz się!
Źródło: habr.com
