Вдъхновен
„Категории вместо директории, или Семантична файловата система за Linux Vitis“
реших да направя своя аналог на утилитата vitis за PowerShell Core.
Защо започнах да го правя
На първо място, vitis само за Linux.
На второ място, искам да използвам „трубите“ в PowerShell.
Понеже исках да направя кросплатформена утилита, избрах .Net Core.
Предистория
Първоначално беше хаос. След това на диска се появиха папки.
Но хаосът все още царуваше. Появиха се тагове, както и подсекции и синоними на таговете. Но хаосът завладя и тях. И бяха измислени категории.
Концепция
Файловете не се съхраняват в йерархия от папки, а в „купчина“, с определени категории. Един файл може да принадлежи на няколко категории.
Ако трябва да намерите файл, по-удобно е да въведете категориите, на които принадлежи. Това е много по-лесно за запомняне, отколкото в кои папки се съхранява.
Но такава файлова система по никакъв начин не е подходяща за съхраняване на код, изходни файлове и т.н.
Тя е предназначена за съхранение, например, на семейни снимки, музика, документи.
Използването
Е, да започнем с демонстрацията.
Нека инсталираме Graphile:
# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1Първо ще инициализираме Graphile в папката:
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbИ така, всичко е настроено. Сега можем да създадем нова категория:
PS C:UsersDellGraphileTest> New-Category -Name "music"
musicДобавяме файлове:
PS C:UsersDellGraphileTest> Get-ChildItem "D:MusicPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
>> }На тези, които не разбраха какво направих:
- Получих списък с файлове в папката
Pink Floyd - The Wall - Всеки файл преобразувах в пълния му път
- Добавих всеки файл в категорията
music
Сега да проверим дали наистина сме добавили файловете в категорията:
PS C:UsersDellGraphileTest> List-Graphiles | Format-TableЩе изведе списък в формат:
CategoriesNames Id Categories Name ExtensionЩе добавим още категории и файлове:
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" }Да проверим файловете:
List-Graphiles -Categories "alan-parsons" | Format-TableКомандата ще изведе всички файлове, които принадлежат на категорията alan-parsons.
Повече файлове на бога на файловите системи!
New-Category -Name "images"
Get-ChildItem "D:Изображения" -File -Recurse | foreach { $.FullName } | foreach {
Add-FileToCategory -File $_ -Categories "images"
}Проверяваме:
List-Graphiles -Categories "images" | Format-TableВсичко работи!
Но това е само началото. Експортирайте обичайната си файлова система в Graphile и получете отлична организация на файловете.
Откуда да се свали Graphile
Ето в GitLab на Graphile.
Лиценз MIT, така че може да се използва дори и за търговски цели.
Бъдещето на проекта
Тъй като това е PowerShell, а не какво да е, може да се направи графичен интерфейс под .NET Core.
Как да го направите:
- Инсталирайте пакета Microsoft.PowerShell.SDK
- Използвайте класа PowerShell и извикайте Graphile.
Ако ви харесва проектът, правете комити, merge requestи създавайте дискусии.
Благодаря за прочитането! Ползвайте и се насладете!
Източник: habr.com
