·
  • #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 find a 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.