💾 Archived View for it.omarpolo.com › articoli › gg.gmi captured on 2022-06-03 at 22:48:06. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-03-01)

-=-=-=-=-=-=-

gg, un piccolo client gemini

La test suite di gmid è uno script shell che genera un particolare file di configurazione, lancia gmid, esegue delle richieste gemini e verifica i parametri della risposta. Per fare delle richieste gemini scrissi un piccolo programmino, gg (gemini get.) Col tempo, questa piccola utility si è guadagnata dei flag per semplificare alcuni test. Come parte della (futura) release 1.8 di gmid ho pensato di ristrutturare gg dato che necessitava comunque di ulteriori modifiche per poter supportare il proxying di richieste.

Di recente ho iniziato a pensare all'interfaccia da riga di comando di un programma prima ancora di iniziare a scriverlo. Per gg è stato lo stesso, prima di ristrutturare il codice ho buttato giù la prima parte della manpage:

NAME
     gg – gemini client

SYNOPSIS
     gg [-23Nnv] [-C cert] [-d mode] [-H sni] [-K key] [-P host[:port]]
        [-T seconds] gemini://...

Beh, non proprio, il flag -H l'ho dovuto aggiungere in corso d'opera per ovviare a una problematica (SNI e proxying) alla quale non avevo pensato, ma li resto era stato pianificato dall'inizio.

Non sono ancora completamente sicuro ma, dato che l'interfaccia mi piace molto, sto valutando di installarlo insieme a gmid. In fondo, gg usa diverso codice da gmid (iri.c, utf8.c e le varie compat/*) e non sembrano esserci moltissimi client gemini "curl-like" disponibili. Può tornare utile per testare la configurazione di gmid e -cosa più importante- a *me* piace e fa comodo averlo disponibile!

Una nota credo vada fatta per l'assenza di un flag `-O' per specificare un file di output. Si tratta una limitazione voluta: gg stampa il contenuto della pagina su standard output, sarà compito del chiamante preoccuparsi di girarlo su un file specifico. Si risparmia qualche carattere nell'invocazione

$ gg >out.gmi gemini://example.com

e diventa più semplice costruire pipeline:

$ gg gemini://example.com | gmi2txt | less

gmi2txt è un piccolo script awk per convertire text/gemini in testo semplice in modo da semplificarne la lettura.

Inoltre, a differenza di HTTP (e forse anche FTP), su gemini non c'è la possibilità di continuare un download interrotto, quindi non c'è motivo per gg di conoscere il file di output.

La vera limitazione sono i redirect che non sono supportati al momento. Il piano iniziale era di fornire un flag `-r redirects' per specificare il massimo numero di redirect da seguire (5 di default), ma la risoluzione di IRI può essere piuttosto noiosa da scrivere in modo conforme e -per ora- sto rimandando :)

$BlogIt: gg.gmi,v 1.1 2022/01/13 10:53:53 op Exp $