All Projects → cole-wilson → Sailboat

cole-wilson / Sailboat

Licence: mit
🐍 A quick and easy way to distribute your Python projects!

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Sailboat

ngp
New Go Package
Stars: ✭ 22 (-83.94%)
Mutual labels:  package, build, release
Edualgo
A simple python package having modules of different algorithms to use in educational purposes.
Stars: ✭ 76 (-44.53%)
Mutual labels:  package, pypi
Laboratory
Achieving confident refactoring through experimentation with Python 2.7 & 3.3+
Stars: ✭ 1,179 (+760.58%)
Mutual labels:  pypi, developer-tools
Pric
Simple zero-config tool to create Private Certificate Authority & issue locally-trusted development server certificates with any domain names you'd like. SSL certificates for development purposes.
Stars: ✭ 87 (-36.5%)
Mutual labels:  tool, developer-tools
Dumb Pypi
PyPI generator, backed entirely by static files
Stars: ✭ 62 (-54.74%)
Mutual labels:  packaging, pypi
Andes
Python toolbox / library for power system transient dynamics simulation with symbolic modeling and numerical analysis 🔥
Stars: ✭ 68 (-50.36%)
Mutual labels:  package, tool
Projectbuilder
A tool for easy automating and customizing build process for Unity.
Stars: ✭ 80 (-41.61%)
Mutual labels:  build, tool
Maturin
Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages
Stars: ✭ 532 (+288.32%)
Mutual labels:  packaging, pypi
Hmake
HyperMake - Makes Builds Green without Worrying about Pre-requisites
Stars: ✭ 95 (-30.66%)
Mutual labels:  build, developer-tools
Rain
🌧️ A live example to illustrate python packaging, testing, building, & deploying
Stars: ✭ 99 (-27.74%)
Mutual labels:  packaging, pypi
Npm Try
🚆 Quickly try npm packages without writing boilerplate code.
Stars: ✭ 103 (-24.82%)
Mutual labels:  package, tool
Pigar
☕️ A fantastic tool to generate requirements.txt for your Python project, and more than that. (IT IS NOT A PACKAGE MANAGEMENT TOOL)
Stars: ✭ 1,068 (+679.56%)
Mutual labels:  pypi, tool
Ngc
NewGoCommand - An opinionated and lightweight project starter. (WORK IN PROGRESS)
Stars: ✭ 16 (-88.32%)
Mutual labels:  build, release
Debreate
A utility for creating Debian packages.
Stars: ✭ 70 (-48.91%)
Mutual labels:  packaging, package
Try
Dead simple CLI tool to try Python packages - It's never been easier! 📦
Stars: ✭ 588 (+329.2%)
Mutual labels:  package, pypi
Appimage Builder
Recipe based AppImage creation tool
Stars: ✭ 76 (-44.53%)
Mutual labels:  packaging, tool
Dephell
📦 🔥 Python project management. Manage packages: convert between formats, lock, install, resolve, isolate, test, build graph, show outdated, audit. Manage venvs, build package, bump version.
Stars: ✭ 1,730 (+1162.77%)
Mutual labels:  release, pypi
Npkill
List any node_modules directories in your system, as well as the space they take up. You can then select which ones you want to erase to free up space.
Stars: ✭ 5,325 (+3786.86%)
Mutual labels:  tool, developer-tools
Devpi
Python PyPi staging server and packaging, testing, release tool
Stars: ✭ 444 (+224.09%)
Mutual labels:  packaging, pypi
Npmarket
🛒 More efficient search for node packages.
Stars: ✭ 91 (-33.58%)
Mutual labels:  package, tool


sailboat
GitHub Repo stars Twitter
GitHub commit activity GitHub Release Date GitHub Workflow Status GitHub code size in bytes GitHub release (latest SemVer including pre-releases) GitHub PyPI - Downloads

View Documentation Site

About

Sailboat is a Python developer's best friend. It's a Python build tool that can do anything you need it to! It suports a countless number of plugins — you can even make your own. Sailboat is made for anyone, whether you are a beginner on your very first project, or a senior software engineer with years of experience.

Let's say that that you have created a basic game, Guess My Number, and you want to send it to all of your friends. There are a lot of different ways you can do this, but using Sailboat is the easiest. All you have to do is type three commands: sail quickstart, sail build, and sail release, and you can have a Homebrew file, a pip installable package, and a PyInstaller desktop app. So easy!

Sailboat also supports custom subcommands. These don't build your project, but they can add features such as a todo list that help speed up your development process.

Installation

Pip:

pip3 install sailboat

Binary:

Download from latest release.

Homebrew:

brew install cole-wilson/taps/Sailboat

Build From Source:

git clone https://github.com/cole-wilson/sailboat
cd sailboat
python3 setup.py install

Usage:

Sailboat is intended to be used from the command line/terminal.

It is suggested to run sail quickstart to get started. Then, use sail build to build your project, and sail release to release it! Be sure to to look at the subcommand docs for more detail. (look in table below)

There are two base commands that can be used: sail and sailboat. These both do exactly the same thing, there is no difference. sail will be used in the documentation, as it's shorter easier to type, but you can do whatever.

To get a list of the availible subcommands type sail help. To refresh the plugin list, type sail -r.

There are countless subcommands, but these are the core ones:

subcommand description
add Add a plugin to your project.
build Build your project for release.
dev Run your project without building it.
git Manage git for your project.
github Manage git for your project.
plugins Plugin manager.
quickstart Get your project up and running.
release Release your project.
remove Remove a plugin from you project.
wizard Configure you project or a plugin.
workflow Generate a GitHub actions workflow file.
help Display this message.

Plugins:

Sailboat uses a plugin based architecture. Every single command or subcommand is a plugin, even the core features. Plugins are registered using the Python entry points system, using the group name sailboat_plugins. There are four types of plugins:

core

This type of plugin is reserved for 1st party plugins - plugins that are part of the actual Sailboat source. They have unreserved access to all project data, and therefore this type should not be used in custom plugins.

command

command plugins are most basic form of a plugin. They are called by typing sail <name of plugin>. They are standalone python scripts that add to the project, like a task list manager.

build

This is perhaps the most common type of plugin, they are run with the build core plugin, and are used to generate or edit project files. An example would be the PyInstaller plugin, which generates frozen binaries of the project. These should store output in the top level dist folder, in a subfolder with the name of the project. For example: the PyInstaller plugin saves output in ./dist/pyinstaller. Build plugins can also contain release plugins within them.

release

This group of plugins is used by the release core plugin. They are used to distribute files. For example: the homebrew release plugin uploads the Homebrew formula to a GitHub repo.

All plugins should be a subclass of sailboat.plugins.Plugin, a basic class that provide the neccesary functions and registration features. An example command plugin might look like this:

from sailboat.plugins import Plugin

class Echo(Plugin):
	description = "A basic command plugin that echos it's input."
	_type = 'command'
	setup = {"string_to_echo":"What string should I echo? "}  # Used by wizard
    
	def run(self):
		string = self.getData('string_to_echo')  # Get string to echo.
		print(string)
		return

Plugins store their data in the sailboat.toml file, under their type namespace. For example, the above example will store it's data like so:

...
[command.echo]
string_to_echo = "Testing..."
...

A plugin should NEVER edit the sailboat.toml file on it's own. Instead plugins should use the provided functions OR edit self.data, a dictionary of the file. Only data stored in the plugins namespace will be preserved. However, a plugin can read from the top level data.

Plugins can get very complex, and therefore useful, but it is too long to put here. Please look at the sailboat.colewilson.xyz/plugins.html file for details.

Acknowledgements:

Thanks to all the people at PyInstaller, dmgbuild, twine, and GitHub actions who provided ways for me to create this.

Stargazers

Stargazers repo roster for @cole-wilson/sailboat

Contributors

  • Cole Wilson

Contact

Please submit an issue if you have any questions or need help or find a bug. I'm happy to help!

[email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].