Inspirado
«Categorias em vez de diretórios, ou um sistema de arquivos semântico para Linux Vitis»,
decidi fazer meu próprio equivalente do utilitário vitis para PowerShell Core.
Por que comecei a fazer isso
Primeiro, vitis somente para Linux.
Em segundo lugar, quero usar "pipes" no PowerShell.
Como eu queria criar um utilitário multiplataforma, escolhi .Net Core.
Antecedentes
No começo, foi um caos. Depois, apareceram pastas no disco.
Mas o caos ainda reinava. E surgiram tags, bem como subtags e sinônimos de tags. Mas o caos também os dominou. E categorias foram criadas.
Conceito
Os arquivos não são armazenados em uma hierarquia de pastas, mas em uma "mãe", com categorias definidas. Um arquivo pode pertencer a várias categorias.
Se precisar encontrar um arquivo, é mais fácil inserir as categorias a que pertence. Isso é muito mais fácil de lembrar do que em quais pastas ele está armazenado.
Mas esse sistema de arquivos definitivamente não serve para armazenar código, fontes etc.
Ele é destinado ao armazenamento, por exemplo, de fotos de família, músicas, documentos.
Uso
Bem, vamos começar a demonstração.
Vamos instalar o Graphile:
# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1Primeiro, inicializaremos o Graphile na pasta:
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbEntão, tudo está configurado. Agora podemos criar uma nova categoria:
PS C:UsersDellGraphileTest> New-Category -Name "music"
musicVamos adicionar arquivos:
PS C:UsersDellGraphileTest> Get-ChildItem "D:MusicPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
>> }Para quem não entendeu o que eu fiz:
- Obtive uma lista de arquivos na pasta
Pink Floyd - The Wall - Transformei cada arquivo em seu caminho completo
- Adicionei cada arquivo à categoria
music
Agora vamos verificar se realmente adicionamos os arquivos à categoria:
PS C:UsersDellGraphileTest> List-Graphiles | Format-TableSerá exibida uma lista no formato:
CategoriesNames Id Categories Name ExtensionVamos adicionar mais categorias e arquivos:
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" }Vamos verificar os arquivos:
List-Graphiles -Categories "alan-parsons" | Format-TableO comando exibirá todos os arquivos que pertencem à categoria alan-parsons.
Mais arquivos ao deus dos sistemas de arquivos!
New-Category -Name "images"
Get-ChildItem "D:Imagens" -File -Recurse | foreach { $.FullName } | foreach {
Add-FileToCategory -File $_ -Categories "images"
}Verificamos:
List-Graphiles -Categories "images" | Format-TableTudo funciona!
Mas isso é apenas o começo. Exporte seu sistema de arquivos habitual para o Graphile e obtenha uma excelente organização de arquivos.
De onde baixar o Graphile
Aqui no GitLab do Graphile.
Licença MIT, então você pode usar até para fins comerciais.
O futuro do projeto
Como é PowerShell e não algo qualquer, é possível criar uma interface gráfica com .NET Core.
Como fazer isso:
- Instale o pacote Microsoft.PowerShell.SDK
- Use a classe PowerShell e chame o Graphile.
Se você gostou do projeto, faça commits, solicitação de mesclageme crie discussões.
Obrigado pela leitura! Aproveite e divirta-se!
Fonte: habr.com
