Creating a Grasshopper Plug-In Package
This is a step by step guide to creating a package for a Grasshopper plug-in (.gha).
The Package Manager is a new feature in Rhino 7 WIP. It makes it easier to discover, install and manage Grasshopper plug-ins from within Rhino. This guide will describe how to create a package from a Grasshopper plug-in that can be published to the package server.
"/Applications/Rhino 7.app/Contents/Resources/bin/yak"
.
First, let’s assume you have a folder on your computer which contains all the files that you would like to distribute in your package. Something like this…
C:\Users\Bozo\dist
├── Marmoset.gha
├── Marmoset.dll
└── misc\
├── README.md
└── LICENSE.txt
We’re going to use the Yak CLI tool to create the package, so open up a Command Prompt and navigate to the directory above.
> cd C:\Users\Bozo\dist
Now, we need a manifest.yml
file! You can easily create your own by studying
the Manifest Reference Guide. Alternatively, you can use the spec
command to generate a skeleton file. We’ll do the latter here.
> "C:\Program Files\Rhino 7\System\Yak.exe" spec
Inspecting content: Marmoset.gha
---
name: marmoset
version: 1.0.0
authors:
- Park Ranger
description: >
This plug-in does something. I'm not really sure exactly what it's supposed to
do, but it does it better than any other plug-in.
url: https://example.com
Saved to C:\Users\Bozo\dist\manifest.yml
The spec
command takes a look at the current directory and, if present, will
glean useful information from the .gha
assembly and use it generate a
manifest.yml
with name, version, authors, etc. pre-populated. If you haven’t
added this information, then placeholders will be used.
Open the manifest file with your favourite editor and fill in the gaps.
Afterwards, you should have something that looks a little like this…
---
name: marmoset
version: 1.0.0
authors:
- Park Ranger
description: >
This plug-in does something. I'm not really sure exactly what it's supposed to
do, but it does it better than any other plug-in.
url: https://example.com
keywords:
- mammal
Now that we have a manifest file, we can build the package!
> "C:\Program Files\Rhino 7\System\Yak.exe" build
Building package from contents of C:\Users\Bozo\dist
Found manifest.yml for package: marmoset (1.0.0)
Inspecting content: Marmoset.gha
Creating marmoset-1.0.0-rh6_18-any.yak
---
name: marmoset
version: 1.0.0
authors:
- Will Pearson
description: >
This plug-in does something. I'm not really sure exactly what it's supposed to
do, but it does it better than any other plug-in.
url: example.com
keywords:
- mammal
- guid:c9beedb9-07ec-4974-a0a2-44670ddb17e4
C:\Users\Bozo\dist\marmoset-1.0.0-rh6_18-any.yak
├── Marmoset.dll
├── Marmoset.gha
├── manifest.yml
├── misc\LICENSE.txt
└── misc\README.md
rh6_18-any
). The first part, rh6_18
, is inferred from the version of Grasshopper.dll or Rhinocommon.dll that is referenced in the plug-in project. The second part, any
, refers to the platform that the plug-in is intended for. To build a platform-specfic package, run the build
command again with the --platform <platform>
argument, where <platform>
can be either win
or mac
.
Congratulations! 🙌 You’ve just created a package for your Grasshopper plug-in.
Next Steps
Now that you’ve created a package, push it to the package server to make it available in the package manager!