Cross platform packaging#587
Open
JoeZiminski wants to merge 48 commits into
Open
Conversation
00cf5ae to
acdaada
Compare
554cd8a to
5f06120
Compare
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
077a919 to
f079b5d
Compare
ea4063d to
77b26d9
Compare
for more information, see https://pre-commit.ci
…s-unit/datashuttle into cross-platform-packaging
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces cross-platform packaging of datashuttle. This requires both packaging datashuttle itself as well as vendoring a terminal emulator to deal with some rendering issues.
The packaging process is threefold:
Currently, this PR:
Currently the architecture is:
datashuttle.specis shared between operating systems, and is the pyinstaller config file to control packaging of datashuttle itself. It will package datashuttle itself, by packaging thedatashuttle_launcher.pyscript. This will then create a executable to be called in the vendored terminal emulator.package_windows.py,package_macos.py,package_linux.py). These coordinate the download of the terminal emulator to vendor, packaging of datashuttle, then triggers the running ofterminal_launcher_xxx.spec(one for macos, 'windows' is currently used by Windows and Linux) which in turn packagesterminal_launcher.py. This handles how the vendored terminal should call the datashuttle executable.So essentially, the idea is to package datashuttle, and then package a script that opens the vendored terminal and runs the datashuttle executable within it.
One the packaging is complete, we will need to extend the CI to run these installers, generate the artifact to distribute, and add it to the website.
Note that this PR is still in the prototype phase and requires some refactoring and tidying up.
TODO:
windows, check all raw "rclone" calls and make sure they use the new "get_command". Need to add this new convention to dev docs
It might be possible to use the cmd key on Wezterm!
config.send_composed_key_when_left_alt_is_pressed = true
config.macos_forward_to_ime_modifier_mask = "SHIFT|CTRL"