Struttura del pacchetto
I pacchetti sono semplicemente archivi ZIP con estensione .yak. Prendiamo questo semplice esempio…
howler-0.4.0-any-any.yak
├── manifest.yml
├── Howler.rhp
├── Howler.rui
├── HowlerCommon.dll
├── HowlerGrasshopper.gha
└── misc/
├── README.md
└── LICENSE.txt
Una nota sul multitargeting .NET
Da Rhino 8, Yak supporta anche le applicazioni multitarget, in modo che il plug-in di Rhino possa essere eseguito sia in dotnet core che in dotnet framework.
Nota: il file manifest.yml
deve ora trovarsi fuori dalla cartella del framework, anziché al suo interno.
howler-0.4.0-rh8-any.yak
├── manifest.yml
├── net48/
│ ├── Howler.rhp
│ ├── Howler.rui
│ ├── HowlerCommon.dll
│ ├── HowlerGrasshopper.gha
│ └── misc/
│ ├── README.md
│ └── LICENSE.txt
└── net7.0/
├── Howler.rhp
├── Howler.rui
├── HowlerCommon.dll
├── HowlerGrasshopper.gha
└── misc/
├── README.md
└── LICENSE.txt
Requisiti
- I pacchetti devono avere un file
manifest.yml
nella directory di primo livello. I dettagli sul manifesto si trovano nella Guida di riferimento al manifesto. - Qualsiasi plug-in (file
.rhp
,.gha
,.ghpy
) deve trovarsi nella directory di primo livello o in una directory multi-targeting, in modo che Rhino e Grasshopper possano trovarli e caricarli. - I numeri di versione dei pacchetti devono seguire Semantic Versioning 2.0.0 (ad esempio
1.1.0-beta
) oSystem.Version
, ovvero lo standard a quattro cifre di Microsoft (ad esempio1.2.3.4
). Si consiglia di usare il versionamento semantico, perché consente agli autori dei pacchetti di specificare le versioni precedenti al rilascio. Questi sono utili per effettuare test limitati, poiché di default viene installata l’ultima versione stabile.
Distribuzioni
Per una singola versione del pacchetto è possibile caricare più “distribuzioni” per indirizzare diverse versioni e piattaforme di Rhino. Queste informazioni sono codificate in un “tag di distribuzione” che viene aggiunto al nome del file del pacchetto, ad esempio example-1.0.0-rh7-win.yak.
Il tag di distribuzione è composto da un identificatore di “app” e versione e da una piattaforma. Attualmente le uniche applicazioni supportate sono rh
e any
- Grasshopper viene fornito con Rhino, quindi non ha bisogno di un proprio identificatore. A meno che l’applicazione non sia any', la versione dell'applicazione deve essere inclusa nella forma
_. La versione minore è opzionale ed è utile se un plug-in si basa su una modifica dell'SDK apportata in una release del servizio. La piattaforma può essere
win,
maco
any` (cioè multipiattaforma).
Ecco alcuni esempi.
rh7-win
- Rhino 7 per Windows >= 7.0rh6_14-mac
- Rhino 6 per Mac >= 6.14rh6_9-any
- Rhino 6 (entrambe le piattaforme) >= 6.9any-any
- ammette qualsiasi cosa (comportamento esistente)
Quando si installano i pacchetti, il gestore dei pacchetti controlla se esiste una distribuzione compatibile per la versione richiesta. Solo le versioni dei pacchetti che hanno almeno una distribuzione compatibile verranno visualizzate quando il comando _PackageManager
viene eseguito in Rhino 7 o superiore.
Il server aggiornato funziona perfettamente con i pacchetti esistenti e le versioni precedenti di Rhino. Le versioni preesistenti sul server (senza distribuzioni) saranno trattate secondo il tipo any-any
durante l’installazione. Anche le nuove versioni di pacchetti che non includono un tag di distribuzione, ad esempio quelle create da versioni precedenti della CLI, saranno trattate come any-any
al momento della pubblicazione.
Passi successivi
Ora che abbiamo visto cosa c’è in un pacchetto, perché non creare un pacchetto?
- Creare un pacchetto di Grasshopper del plug-in.
- Creare un pacchetto di Rhino per tutti.
- Crea un pacchetto multitarget per Rhino 8.