dbcli / pgcli

Postgres CLI with autocompletion and syntax highlighting
http://pgcli.com
BSD 3-Clause "New" or "Revised" License
12.16k stars 556 forks source link

Distribute binary packages when tagging new versions #1475

Open oz123 opened 3 months ago

oz123 commented 3 months ago

Description

It's not a "problem", rather a suggestion (with plan to act uppon).

When releasing new versions, it would be nice if one could download the package from the release pages. Some Linux distro are no always the most up to date and installing with pip in quite a hassle with psycopg requiring to install different packages and compilers.

As I work in some environments which don't always allow installation of packages, or that compile times are awful (and I can't even do SSH tunneling), I have created a static binary of pgcli using nutika.

If interested, I can make a PR which builds the binary using nuitka when pushing tags. The build can be done for MacOSX, debian and static binary for Linux. I can also extend this to Windows. You can see a similar release actions pipline in my project.

The pipeline linked is for a C program, but github actions has a nuitka action which works for compile to all major OS. I have already figured out all the command line parameters for building the executable:

nuitka3 --onefile -o pgcli_executable pgcli --python-flag=-m --follow-imports --include-module=pgspecial --include-module=psycopg2 --include-data-files=./pgcli/packages/pgliterals/pgliterals.json=pgcli/packages/pgliterals/pgliterals.json --include-data-files=./pgcli/pgclirc=pgcli/pgclirc

The idea is to use this in the release pipline.

Will you be interesed in such a PR?

Your environment

j-bennet commented 3 months ago

Thank you @oz123 , we'll be happy to accept your contribution.

oz123 commented 3 months ago

@j-bennet please take a look here: https://github.com/oz123/pgcli/releases/tag/v9.9.24 (The version number is arbitrary).

These binaries should work on alpine and glibc based Linux distros. Before opening a PR, I would like to verify that the binaries work for some other people except myself, since my use case may be limited.