Shipyard is a powerful GitHub release management tool built for the VibeScript ecosystem. It automates the process of creating and managing GitHub releases with customizable version templating, asset management, and tag handling.
- 🔄 Automated Release Creation: Streamline your GitHub release workflow
- 📝 Template-Based Versioning: Use customizable replacers for version management
- 📦 Asset Management: Automatically upload and manage release assets
- 🏷️ Smart Tag Handling: Create new tags or update existing ones
- ⚙️ JSON Configuration: Simple, declarative configuration format
- 🔧 VibeScript Integration: Built specifically for the VibeScript ecosystem
Shipyard requires VibeScript to be installed on your system. Follow the installation guide below:
Option A: Pre-compiled Binary
curl -L https://github.com/OUIsolutions/VibeScript/releases/download/0.36.0/vibescript.out -o vibescript.out
chmod +x vibescript.out
sudo mv vibescript.out /usr/local/bin/vibescript
Option B: Compile from Source
curl -L https://github.com/OUIsolutions/VibeScript/releases/download/0.36.0/amalgamation.c -o vibescript.c
gcc vibescript.c -o vibescript.out
sudo mv vibescript.out /usr/local/bin/vibescript
curl -L https://github.com/OUIsolutions/VibeScript/releases/download/0.36.0/amalgamation.c -o vibescript.c
gcc vibescript.c -o vibescript.out
sudo mv vibescript.out /usr/local/bin/vibescript
Note: Make sure you have GCC installed. You can install it via Xcode Command Line Tools:
xcode-select --install
- Clone the Repository
git clone https://github.com/OUIsolutions/shipyard.git
cd shipyard
- Add to VibeScript Path
vibescript add_script --file shipyard.lua shipyard
Create a release.json
file in your project root with the following structure:
{
"replacers": {
"BIG_VERSION": "0",
"SMALL_VERSION": "1",
"PATCH_VERSION": "0"
},
"release": "{BIG_VERSION}.{SMALL_VERSION}.{PATCH_VERSION}",
"tag": "{BIG_VERSION}.{SMALL_VERSION}.{PATCH_VERSION}",
"description": "description of the release",
"assets": ["path/to/asset1", "path/to/asset2"]
}
Run the following command in your project directory:
shipyard release.json
Field | Description | Required |
---|---|---|
replacers |
Key-value pairs for template replacement | ✅ |
release |
Release name template using replacer variables | ✅ |
tag |
Git tag template using replacer variables | ✅ |
description |
Release description/changelog | ✅ |
assets |
Array of file paths to upload as release assets | ❌ |
- Tag Management: If the specified tag doesn't exist, it will be created. If it exists, the release will be updated.
- Asset Handling: Existing assets with the same name will be replaced with new versions.
- Template System: Use
{VARIABLE_NAME}
syntax in release and tag fields to reference replacer values.
{
"replacers": {
"VERSION": "1.0.0"
},
"release": "v{VERSION}",
"tag": "v{VERSION}",
"description": "Initial release with core functionality"
}
{
"replacers": {
"MAJOR": "2",
"MINOR": "1",
"PATCH": "3",
"BUILD": "release"
},
"release": "Version {MAJOR}.{MINOR}.{PATCH}-{BUILD}",
"tag": "{MAJOR}.{MINOR}.{PATCH}",
"description": "Bug fixes and performance improvements",
"assets": [
"dist/shipyard-linux.tar.gz",
"dist/shipyard-macos.tar.gz",
"CHANGELOG.md"
]
}
For comprehensive documentation and advanced usage examples, visit:
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is released into the public domain under the Unlicense.