Skip to content

jcbhmr/bikeshed-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bikeshed builder

🚲 Bundles Bikeshed for use without Python & pip

🐍 Uses PyInstaller
🏭 Compiles the bikeshed PyPI package to a standalone program
🚚 Distributed via GitHub releases
πŸ’» Builds for Windows x64, macOS M1 and Intel, and Linux x64

Installation

GitHub Shell PowerShell

πŸ›‘ If possible you should install Bikeshed directly from the bikeshed PyPI package as is officially recommended on the Bikeshed Documentation website.

pipx install bikeshed

You can get Bikeshed builds built by this bikeshed-builder project from the GitHub releases tab; these are unofficial. You can use go-bikeshed 🚧 under construction, bikeshed-rs 🚧 under construction, or bikeshed.js 🚧 under construction to integrate bikeshed-builder binaries with your favorite language's package management toolchain. πŸ˜‰

Usage

Windows Linux macOS

This project is intended to be used & integrated with software that works better without the Python & pip requirements that the official Bikeshed distribution method uses. You can also use it as a standalone way to install Bikeshed without a Python environment. For example an npm redistribution of the Bikeshed project to be npm install <bikeshed_package_name> would not want to require a particular Python environment. Instead, they would opt for a premade AiO binary/package like bikeshed-builder! πŸ˜‰

Here are the relevant URLs that you would use in your code to fetch releases from this bikeshed-builder project:

https://github.com/jcbhmr/bikeshed-builder/releases/download/$TAG/bikeshed-arm64-apple-darwin.tar.gz
https://github.com/jcbhmr/bikeshed-builder/releases/download/$TAG/bikeshed-x86_64-apple-darwin.tar.gz
https://github.com/jcbhmr/bikeshed-builder/releases/download/$TAG/bikeshed-x86_64-pc-windows-msvc.zip
https://github.com/jcbhmr/bikeshed-builder/releases/download/$TAG/bikeshed-x86_64-unknown-linux-gnu.tar.gz

β„Ή bikeshed-builder matches the Bikeshed versions as they are released. bikeshed==4.1.6 would be built & tagged as v4.1.6. Don't forget the v prefix! 😁

Programs are encouraged to pin each of their versions to an exact version of Bikeshed and then update Bikeshed as a dependency as opposed to always fetching the latest bikeshed-builder release.

The .zip and .tar.gz archives all have the same layout:

.
β”œβ”€β”€ bikeshed
└── _internal/
    └── ...

Note that everything is in the root folder! That means if you want to extract the contents to ~/.bikeshed here's what you might do:

mkdir ~/.bikeshed
tar -xzvf bikeshed-x86_64-unknown-linux-gnu.tar.gz -C ~/.bikeshed

Development

Python Poetry

This entire project hinges on 1) getting the bikeshed PyPI package to properly install, 2) creating a wrapper script that invokes the bikeshed CLI, and then 3) properly wrapping all that up with PyInstaller. There's also 4) get it to build on GitHub Actions and 5) uploading the public release artifacts.

Python's packaging and dependency landscape is a mess. This project uses Poetry, the most popular Python package manager (excluding plain pip). Poe the Poet is used as a task runner since Poetry doesn't have a built-in task runner. You can install these tools using pipx.

pipx install poetry poethepoet

After cloning this project getting started is easy!

poetry install

And then you can run the build or test tasks to make sure everything works.

poe test

To create a new release:

  1. Change the bikeshed version dependency in pyproject.toml.
  2. Update the version field in pyproject.toml to reflect the new Bikeshed version with the appropriate suffix. This version field is read by the gh release create workflow.
  3. Go to the gh release create workflow page
  4. Manually run the workflow. You can choose to create a draft instead of immediately publishing it.

You can use rc1 or similar prereleases to try things out if needed but draft: true should suffice in most cases to make sure things look good.