- #golang
- #cli
- #tooling
- #lab
Un piccolo tool in Go per ritrovare i progetti locali
Un approccio semplice per tenere traccia dei progetti sparsi sul filesystem
-2 min read
Se lavori su molti progetti personali, prima o poi succede.
Cartelle sparse, linguaggi diversi, repo iniziati e mai finiti, prove veloci che diventano qualcosa di più. A un certo punto non ricordi più dove sia finito un progetto, né se fosse in Go, C#, JavaScript o altro.
Questo post nasce da un problema molto semplice: ritrovare velocemente i progetti locali senza dover ricordare percorsi, nomi esatti o aprire ogni IDE sperando di riconoscerli.
Il problema
Nel mio filesystem i progetti non stanno tutti nello stesso posto.
Ci sono directory come:
~/dev~/experiments~/work- backup di vecchi progetti
- prove veloci mai cancellate
Ogni cartella contiene cose diverse:
- repository Git
- progetti con
go.mod - progetti .NET con
.csproj - frontend con
package.json
Quando devo riprendere in mano qualcosa, spesso mi ritrovo a:
- fare
finda caso - cercare per nome sperando di ricordarlo
- aprire cartelle solo per capire cos’era
Funziona, ma è lento e ripetitivo.
La soluzione
Invece di “organizzare meglio tutto” (cosa che richiede tempo e disciplina), ho preferito creare un piccolo tool CLI che facesse una cosa sola:
scansionare alcune directory e dirmi quali progetti ci sono dentro.
Niente database. Niente interfaccia grafica. Niente gestione dello stato.
Solo:
- una lista di percorsi da controllare
- qualche regola per riconoscere un progetto
- un output leggibile da terminale
Perché Go
Go è una buona scelta per questo tipo di tool perché:
- produce un binario singolo
- è veloce da eseguire
- non richiede runtime esterni
- è semplice da mantenere
Non serve altro.
Implementazione
L’idea è minimale.
Configurazione
Un file di configurazione definisce dove cercare:
paths:
- /home/cecchelab/dev
- /home/cecchelab/experiments
- /home/cecchelab/work
Riconoscimento dei progetti Durante la scansione, una cartella viene considerata “progetto” se contiene almeno uno di questi file:
go.mod
.csproj
package.json
.git
Non è una classificazione perfetta, ma è sufficiente per il caso d’uso.
Output
Il tool stampa una lista semplice:
Go /home/cecchelab/dev/cecchelab
DotNet /home/cecchelab/work/old-api
Node /home/cecchelab/experiments/frontend-test
Git /home/cecchelab/dev/random-script
A questo punto posso:
- copiare il path
- aprirlo nell’editor
- sapere subito di che tipo di progetto si tratta Niente di più, niente di meno.
Note e limiti
Questo tool:
- non gestisce i progetti
- non tiene traccia dello stato
- non sostituisce un IDE È volutamente semplice. Probabilmente non scala bene su migliaia di directory, ma per un ambiente personale funziona più che bene.
Conclusione
Questo tipo di tool non risolve problemi “importanti”, ma elimina attriti quotidiani. È il genere di cosa che:
- si scrive in poco tempo
- si usa spesso
- non vale la pena complicare Ed è esattamente il tipo di progetto che ha senso documentare in un laboratorio personale.