ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ вмСсто Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ хранСния Ρ„Π°ΠΉΠ»ΠΎΠ²

Π’Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ²ΡˆΠΈΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ

«ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ вмСсто Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ, ΠΈΠ»ΠΈ БСмантичСская файловая систСма для 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"
>> }

Π’Π΅ΠΌ, ΠΊΡ‚ΠΎ Π½Π΅ понял, Ρ‡Ρ‚ΠΎ я сдСлал:

  1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ» список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅ Pink Floyd - The Wall
  2. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π» Π² ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ
  3. Π”ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ 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.

Как это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

  1. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Microsoft.PowerShell.SDK
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс PowerShell ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Graphile.

Если Π²Π°ΠΌ понравился ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, merge request‘Ρ‹ ΠΈ создавайтС обсуТдСния.

Бпасибо, Π·Π° ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅! ΠŸΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΠΉΡ‚Π΅ΡΡŒ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com