# sailboat
![Publish system files for Sailboat.](https://github.com/cole-wilson/sailboat/workflows/Publish%20system%20files%20for%20Sailboat./badge.svg)
A quick and easy way to distribute your python projects!
sailboat will let you go from hello world to a published app in about 5 minutes!
It generates a setup.py and correct directory structure for you in seconds, all with a simple config file.
In addition to this, it can build your Mac and Windows apps in the cloud using GitHub actions, so you don't need to have both a Mac and Windows computer to create apps. To use this feature, activate it with the wizard.
Please see the [quickstart](#quickstart) for an example.
## Installation
**Install with Pip:** `pip3 install sailboat`
**Download Binary:** Download from [latest release](https://github.com/cole-wilson/sailboat/releases/latest).
**Homebrew:** `brew install cole-wilson/taps/Sailboat`
## Usage:
> **Note:** `sailboat` can be substituted for `sail` at any time.
It is suggested that you run `sailboat wizard` to get started.
### `sailboat wizard`
This command runs a setup wizard that generates a `sailboat.toml` file in your current directory.
It will also help you set up GitHub actions and creat a git repo.
### `sailboat dev`
This command lets you test your project on your own system without needing to install it every time.
(running `sailboat build` also does this)
### `sailboat git`
Setup git and GitHub.
### `sailboat [--options] build <version>`
This command is where everything happens! There are several things that `build` does with the given version:
1. First, it will build a directory structure that looks something like this.
```
.
├── .github
│ └── workflows
│ └── sailboat.yml
├── bin
│ └── <compiled .sh files for your project>
├── build
│ └── <location where build data is generated>
├── dist
│ └── <compiled files ready for distribution>
├── <project name>
│ ├── # This is where your source code goes:
│ ├── __init__.py
│ ├── __main__.py
│ ├── mod1.py
│ ├── mod2.py
│ ├── data.txt
│ └── etc...
├── .gitignore
├── LICENSE
├── README.md
├── setup.py
└── sailboat.toml
```
2. Generate GitHub Actions workflow files
3. Generate `.app`, `.dmg`, `.exe`, `.msi` files *(depending on your configuration and system)*
4. Generate files used for PyPi distribution.
#### Options:
Some valid commandline options are:
- `-y`: No interaction, always accept changes. (BUILD MODE)
- `--actions-only`: Only generate actions file. (BUILD MODE)
- `--mac-only`: Only generate mac file. (BUILD MODE)
- `--windows-only`: Only generate windows file. (BUILD MODE)
- `--pypi-only`: Only generate pypi files. (BUILD MODE)
- `--setup-only`: Only generate setup.py. (BUILD MODE)
- `--no-installer`: Overide installer config. (BUILD MODE)
- `-f`: Use `.release-notes-latest` file for release notes. (RELEASE MODE)
> *These options can be combined*
### `sailboat release [pypi | github]`
This will upload your built project to PyPi and GitHub. *(or just one of them, depending on the command options)*
## Configuration
There are several options in the configuration that are not mentioned in the wizard. This section explains what they do:
### `build.build_script`:
This option can provide a file name for custom pre and post build scripts for custom actions.
An example value would be `build.py`.
Inside `build.py` you need one or two functions called `pre` and `post`.
Each one of these must have two positional arguments: `version` and `data`.
`version` is a string of the version triggering the build, and `data` is a `dict` containing the decoded `sailboat.toml` data.
If `data` is returned at the end of the function, it is used instead of the normal value, and is saved at the end of the build.
An example file might look like this:
```python
def pre(version,data):
print("Building version {}".format(version))
def post(version,data):
data['test'] = version
return data
```
This file would run `pre()` at the beginning, and `post()` at the end. `data['test']` will be saved in `sailboat.toml`.
### `build.bundle_id`:
The OSX Bundle Identifier used in PyInstaller. Defaults to `com.<author>.<short_name>`.
### `build.actions_built_latest`:
Whether or not the GitHub actions file was changed at the last build, updates automatically.
### `latest_build`:
The latest built version.
### `resources.no_import`:
Modules found in `*.py` files that do *NOT* need to be required.
### `git.github`:
The upstream URL for `sailboat git` and `sailboat release`.
### `setup_data`:
This is a dictionary for custom `setup.py` values. For example:
```toml
[setup_data]
test = "test_value"
```
add the key `test` to `setup.py` with the value `"test_value"`;
## Quickstart
Let's say that we have a file `helloworld.py`:
```python
name = input("What's your name? ")
print(f"Hello {name}!")
```
That's all fine and good, but how will we distribute our awesome app so that all ou relatives and friends can run it?
Whenever you have this problem, there are normally two solutions:
- Get everyone to install Python, and then distribute copies of your source code.
- Go through the trouble of packaging and distributing your project as a native application.
Both of these are less than ideal, but with `sailboat` there is a third option:
- Use sailboat to distribute your project to PyPi, and also generate native applications and installers in about 5 minutes!
- To do this we will need to install `sailboat`: `pip3 install sailboat`
- Next, we will have to generate a `sailboat.toml` file by running `sailboat wizard`.
- After we have done this, just type `sailboat build 0.0.1` and wait for the build process to finish.
- Next, we have to get a PyPi account. Go to [https://pypi.org/account/register/](https://pypi.org/account/register/) to register.
- After that, just type in `sailboat release` to finish!
- Now, you can install your app by typing `pip3 install <your-app-name>` and run it with `<your-app-name>` if you have Python, or by launching the packaged app in the `./dist/pyinstaller/` folder.
## Acknowledgements:
Thanks to all the people at PyInstaller, dmgbuild, Wix.Py, twine, and GitHub actions who provided ways for me to create this.
## Contributors
- Cole Wilson
## Contact
<[email protected]>
PyPI 官网下载 | sailboat-0.4.2.tar.gz
版权申诉
143 浏览量
2022-01-16
00:34:16
上传
评论
收藏 23KB GZ 举报
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈