gcli

Portable Git(hub|lab|tea) CLI tool

BSD-2-CLAUSE License

Stars
48
Committers
9

Bot releases are visible (Hide)

gcli - 2.5.0 Latest Release

Published by herrhotzenplotz about 2 months ago

I am pleased to announce the release of gcli 2.5.0!
Included are lots of bug fixes and a few new improvements such as optional support for lowdown to render markdown.

Thank you for all the contributions and bug reports.

You can find a summary of all the changes below.

Please report back in case you find bugs, bad documentation or other suggestions you have.
You can reach us on IRC in #gcli on Libara.Chat or on the mailing list at https://lists.sr.ht/~herrhotzenplotz/gcli-discuss.

Download

You can find release tarballs here:

https://herrhotzenplotz.de/gcli/releases/gcli-2.5.0/

Changelog

Added

  • Added a -R flag to the comment subcommand that allows you to
    reply to a comment with the given ID.

Fixed

  • In various configuration places and environment variables where
    boolean values are accepted you can now specify true as a truthy
    value.

    Submitted by: Gavin-John Noonan [email protected]

  • The configure script now exits gracefully whenever a required
    program couldn't be found.

    Reported by: Alexey Ugnichev [email protected]

  • A bug genereting invalid JSON when adding labels to a GitHub issue
    was fixed.

  • The reviews cache directory is now automatically created if it
    doesn't exist avoiding a 'No such file or directory' error when
    invoking the review action for the first time.

    Reported by: Bence Ferdinandy [email protected]

  • A few bugs in the patch parser have been fixed:

    • Under rare conditions hunk ranges were incorrectly parsed
    • Parser errors when a diff included lines starting with a backslash
      (e.g. when there is no newline at the end of file) were fixed

    Reported by: Bence Ferdinandy [email protected]

  • The installation location of the manual pages of gcli has been
    fixed. The latest release accidentially installed manual pages to
    ${DESTDIR}${PREFIX}/share/man instead of
    ${DESTDIR}${PREFIX}/share/man/manX.

    Reported by: Bence Ferdinandy [email protected]

Changed

  • The pipelines subcommand has been refactored to accept actions
    for pipelines. This allows cases where a pipeline triggers child
    pipelines to be handled properly.

    See gcli-pipelines(1) for documentation.

    Reported by: Bence Ferdinandy [email protected]

gcli - 2.4.0

Published by herrhotzenplotz 4 months ago

I am pleased to announce the release of gcli 2.4.0 with a lot of new features and touch-ups!

Thank you for all the contributions and bug reports. Also a big thank you to all the testers during the pre-release phase.

You can find a summary of all the changes below.

Please report back in case you find bugs, bad documentation or other suggestions you have.
You can reach us on IRC in #gcli on Libara.Chat or on the mailing list at https://lists.sr.ht/~herrhotzenplotz/gcli-discuss.

Download

You can find release tarballs here: https://herrhotzenplotz.de/gcli/releases/gcli-2.4.0/

Changelog

Added

  • Added a convenience flag -V or --version that prints the version of gcli.

  • Added an option to disable the spinner to indicate network activity

    You can now either set disable-spinner=yes in your default section in the config file, specify --no-spinner as a command line flag or set the environment variable GCLI_NOSPINNER to disable the spinner. This is useful for dumb terminal environments like acme where the \r used by the spinner is not interpreted.
    Submitted by: Gavin-John Noonan

  • Added an interactive status feature

    Running gcli status will now drop you into a prompt-based interactive TODO/notification menu. Currently this only supports issues however this will be extended in future releases. The old behaviour of gcli status showing a list of notifications can be achieved by supplying the -l or --list option.

    See also https://gitlab.com/herrhotzenplotz/gcli/-/issues/224

  • Experimental support for code review has been added

    When enabling experimental features through either:

    • setting GCLI_ENABLE_EXPERIMENTAL in the environment to yes
    • setting enable-experimental in the default section of the gcli config file to yes

    you will get a action review on the pull request subcommand.

    This subcommand will pull down the diff of the given pull request and loads it into your editor. You can then annotate the diff, save and quit. gcli will then parse the diff, extract comments and allows you to submit them as a review.

    Please refer to the new gcli-pulls-review(1) manual page that has been added for this feature.

    Also note that this is experimental and may be buggy. However, testing is very much appreciated and I will gladly discuss ideas and usability issues.

    Please check in on IRC (#gcli on Libera.Chat) for these matters and/or post to our mailing list at https://lists.sr.ht/~herrhotzenplotz/gcli-discuss.

Fixed

  • Fixed resolving true .git directory when working inside a git worktree. This used to work before, however newer versions of git changed how these worktrees pointing to the true git directory.
    Reported by: Robert Clausecker

  • Fixed bad error message extraction when API errors occured on GitLab. We now check for common error message fields in the returned payload from the GitLab API and choose the (probably) most useful one.

  • Fixed segmentation fault when displaying certain pull requests on Gitea.

  • Fixed some spelling mistakes in various manual pages

Changed

  • The GitLab API returns the list of comments in reverse chronological order. We now reverse this list to print the comments in the correct order such that a logical timeline of a conversation can be seen.

  • The build system of gcli has been migrated away from Autotools. The GNU autotools have been complicating and slowing down the gcli builds by a huge amount. Using autotools prevented easy cross-compilation of gcli because it would have required the use of GNU make. Instead of autotools we now use a hand-written configure script and a hand-written Makefile that gets pre-processed by the configure script. You can still invoke the configure script as expected however some options aren't available anymore.

    Packagers are likely interested in the --release flag of the configure script. Most other compilation environment flags are controlled by environment variables. Please refer to ./configure --help for more information. The HACKING.md file also includes valuable information including examples.

    Out-of-tree builds are still fully supported.

    If you encounter bugs / other difficulties due to these changes please report back!

gcli - 2.3.0

Published by herrhotzenplotz 7 months ago

2.3.0 (2024-Mar-25)

This is the version 2.3.0 release of gcli.

GCLI is available in FreeBSD Ports,
Debian,
NixPkgs,
the AUR
and PkgSrc.

Please download pre-autoconfiscated tarballs here.

Warning! The provided tarballs on GitHub and GitLab are not autoconfiscated. Please use the link above.

Thank you to all the contributors and folks bringing gcli to various distributions!

Please test and report back.

Notes

Development of gcli is being moved over to Sourcehut. Patches can be submitted to the respective mailing list.

See details on the gcli homepage.

For discussions there is now also an IRC Channel #gcli on Libera.Chat.

Changes

Added

  • It is now possible to build gcli against libgcli as a DLL on cygwin.
    Submitted by: Daisuke Fujimura

  • The pulls subcommand now allows searching for pull requests with a given search term.
    The search terms can be appended to the regular pull subcommand for listing PRs:

    $ gcli pulls -L bug segmentation fault
    

    The above will search for pull requests containing »segmentation fault« and the label »bug«.

  • An interactive mode for creating both PRs and issues has been added.
    You can now interactively create pull requests and issues by omitting their title:

    $ gcli issues create
    Owner [herrhotzenplotz]:
    Repository [gcli]:
    Title: foo
    The following issue will be created:
    
    TITLE   : foo
    OWNER   : herrhotzenplotz
    REPO    : gcli
    MESSAGE :
    No message
    
    Do you want to continue? [yN]
    

Fixed

  • gcli was incorrectly using an environment variable XDG_CONFIG_DIR.
    This variable has now been fixed to be XDG_CONFIG_HOME.
    Submitted by: Jakub Wilk

  • Fixed a segmentation fault when listing forks

  • Fixed error when submitting a comment on Gitlab issues

  • The build on Haiku has been fixed. GCLI can now be compiled and used on this platform.

gcli - 2.2.0

Published by herrhotzenplotz 9 months ago

This is the version 2.2.0 release of gcli.

GCLI is available in FreeBSD Ports, Debian Testing and NixPkgs.

Please download pre-autoconfiscated tarballs here.

Warning! The provided tarballs on GitHub and GitLab are not autoconfiscated. Please use the link above.

Thank you to all the contributors and folks bringing gcli to various distributions!

Notes

Development of gcli is being moved over to Sourcehut. Patches can be submitted to the respective mailing list.

See details on the gcli homepage.

For discussions there is now also an IRC Channel #gcli on Libera.Chat.

Changelog

Added

  • Preliminary (and thus experimental) support for Bugzilla has been added. For this a new yet undocumented attachments subcommand has been introduced. Currently if no account has been specified it will default to the FreeBSD Bugzilla - this may however change in the future.

  • A search feature has been added to the issues subcommand. You can now optionally provide trailing text to the issues subcommand which will be used as a search term:

    $ gcli issues -A herrhotzenplotz Segfault
    

    This will search for tickets authored by herrhotzenplotz containing "Segfault".

  • Added partial support for auto-merge. When creating a pull request on Gitlab and Github you can set an automerge flag. Whenever this automerge flag is set a pull request will be merged once all the pipelines/checks on the pull request pass.

    This feature is not fully documented yet as there are bugs in it, especially on Gitlab there are flaws. Please consider this feature unstable and experimental.

Fixed

  • Fixed a segmentation fault when getting a 404 on Gitlab. This bug occured on Debian Linux when querying pipelines at the KiCad project. The returned 404 contained unparsable data which then lead to the error message to be improperly initialised.
    Reported by: Simon Richter

  • Fixed missing URL-encode calls in Gitlab Pipelines causing 404 errors when using subprojects on Gitlab. You're now not forced anymore to manually urlencode slashes as %2F in the repos.
    Reported by: Simon Richter

  • Fixed the patch generator for Gitlab Merge Requests to produce patches that can be applied with git am. Previously the patches were invalid when new files were created or deleted.

  • Fixed Segmentation fault when the editor was opened and closed without changing the file. Several subcommands have been updated to also account for empty user messages.

  • Fixed incorrect colour when creating labels. In any forge the provided colour code was converted incorrectly and always producing the wrong colour.

  • Fixed a segmentation fault when listing Github gists

  • Fixed possible JSON escape bug when creating a Github Gist

  • Fixed gcli reporting incorrect libcurl version in the User-Agent header when performing HTTP requests.

  • Fixed possible segmentation fault when no token was configured in gcli configuration file.

Changed

  • Internally a lot of code was using string views. Maintaining this was a bit cumbersome and required frequent reallocations. A lot of these uses have been refactored to use plain C-Strings now. This also involved changing some code to use the new gcli_jsongen set of routines. Due to these changes there may be regressions that are only visible during use. If you encounter such regressions where previously working commands suddenly fail due to malformed requests please report immediately.
gcli - Version 2.1.0

Published by herrhotzenplotz 11 months ago

2.1.0 (2023-Dec-08)

This is the version 2.1.0 release of gcli.

Good news! GCLI is now available in both Debian Unstable and Testing
as well as NixPkgs Unstable.

Please download pre-autoconfiscated tarballs here.

Warning! The provided tarballs on GitHub and GitLab are not autoconfiscated. Please use the link above.

Thank you to all the contributors and folks bringing gcli to various distributions!

Notes

Development of gcli is being moved over to Sourcehut.
Patches can be submitted to the respective mailing list.
See details on the gcli homepage.

For discussions there is now also an IRC Channel #gcli on Libera.Chat.

Changelog

Added

  • Added a little spinner to indicate network activity
  • Added Windows 10 MSYS2 to list of confirmed-to-work platforms
  • Added a new action set-visibility to the repos subcommand that allows updating the visibility level of a repository.
  • Added a new action request-review to the pulls subcommand that allows requesting a review of a pull request from a given user.
  • One can now define custom aliases in the alias section of the config file. Aliases are very primitive as of now. This means they are just different names for subcommands. Aliases may reference other aliases.
  • Added a new -M flag to both the pulls and the issues subcommand to allow filtering by milestones.
  • Added a new patch action to the pulls subcommand. This allows you to print the entire patch series for a given pull request. Also added the missing implementations for this feature for Github and Gitea.
  • Added a new title action to both the issues and the pulls subcommand that allows updating their titles.

Fixed

  • Fixed incorrect internal help message of the repos subcommand.
  • Worked around ICE with xlC 16 on ppc64le Debian Linux, gcli now compiles using xlC and works too.
  • Fixed various memory leaks.
  • Spelling fixes in manual pages (submitted by Jakub Wilk https://github.com/herrhotzenplotz/gcli/pull/121)
  • Wired up alread existing implementation for forking on Gitea to gcli command.
  • The status subcommand now works properly on Gitea.

Changed

  • Subcommands can now be abbreviated by providing an unambiguous prefix that matches the subcommand.
gcli - Version 2.0.0

Published by herrhotzenplotz about 1 year ago

Changelog

This changelog does not follow semantic versioning.

2.0.0 (2023-Sep-21)

You can download pre-autotoolised tarballs at: https://herrhotzenplotz.de/gcli/releases/gcli-2.0.0/

Please test and report bugs!

Added

  • This changelog has been added
  • gcli is now built as a shared or static library which the gcli tool links against. This implied so many changes that the major version number was bumped.
  • Added a package-config file for libgcli
  • Added a -L flag to the issues and pulls subcommand to allow filtering by label
  • A work-in-progress tutorial has been added and is available at the GCLI directory on my website.
  • Gitlab jobs now show coverage information

Fixed

  • Parallel builds in autotools have been re-enabled
  • Improved error messages in various places
  • Bad roff syntax in manual pages has been fixed

Changed

  • the gcli pulls create subcommand does not print the URL to the created release anymore.
  • The test suite is now using atf-c and kyua. These are dependencies if you want to run the tests. These tools are installed out of the box on most BSDs.
  • A newly introduced dependency is the sys/queue.h header. On GNU/Linux systems you might need to install it as part of libbsd.

Removed

  • The reviews subcommand has been removed because it was generally useless. This feature will be reimplemented as a WIP of #189
gcli - 1.2.0

Published by herrhotzenplotz about 1 year ago

Version 1.2.0

This is version 1.2.0 of gcli.

Notes

Please test and report bugs.

You can download autotoolized tarballs at: https://herrhotzenplotz.de/gcli/releases/gcli-1.2.0/

Bug Fixes

  • Fix compile error when providing --with-libcurl without any arguments
  • Fix memory leaks in string processing functions
  • Fix missing nul termination in read-file function
  • Fix segmentation fault when clearing the milestone of a PR on Gitea
  • Fix missing documentation for milestone action in issues and pulls
  • Set the 'merged' flag properly when showing Gitlab merge requests

New features

  • Add a config subcommand for managing ssh keys (see gcli-config(1))
  • Show number of comments/notes in list of issues and PRs
  • Add support for milestone management in pull requests
gcli - Version 1.1.0

Published by herrhotzenplotz over 1 year ago

Version 1.1.0

This is version 1.1.0 of gcli.

Notes

I have changed the versioning scheme to major.minor.patch.

Please test and report bugs.

You can download autotoolized tarballs at: https://herrhotzenplotz.de/gcli/releases/gcli-1.1.0/

Bug Fixes

  • Fixed 'Validation failed' error with GitHub issues
  • Print an error message when missing actions for a specific item
    (like issues, pulls, etc.)
  • Prevent text pretty printer for accidentially skipping the string
    NUL-terminator
  • Fix segmentation fault when listing GitLab repositories
  • Enforce _XOPEN_SOURCE to be set to 600 in the build system, this
    fixes some warnings on glibc systems.

New features

  • Add an action to deassign issues from milestones (milestone -d in
    issues subcommand)
  • When merging pull requests delete the source branch by default
    now. This can be inhibited through the .gcli file or by specifying
    a flag to the merge action.
  • Add a -A filter option to the pulls subcommand that searches only
    for pull requests by a given author.
gcli - Patch version 1.0.3.1

Published by herrhotzenplotz over 1 year ago

Patch Version 1.0.3.1

This is a patch release since the issues subcommand for listing
issues was broken and thus useless for Github remotes. I am sorry
for the inconveniences.

Please test and report bugs on Gitlab, Github or via E-Mail.

You can download pre-autotoolized tarballs at
https://herrhotzenplotz.de/gcli/releases/gcli-1.0.3.1/.

Please also refer to the previous Changelog for a list of changes
and news.

gcli - Version 1.0.3

Published by herrhotzenplotz over 1 year ago

This is version 1.0.3 of gcli.

You can download source tarballs at:
https://herrhotzenplotz.de/gcli/releases/gcli-1.0.3/

WARNING If you download the tarballs provided by Gitlab or Github
you need autoconf, automake and libtool installed on your system. The
tarballs on my website do not impose this requirement.

Please test and report bugs on Gitlab, Github or via E-Mail.

New features

  • Add a --author flag to filter issues from a given user
  • Add artifacts action for pipelines subcommand to download artifacts
    zip archive
  • Add action for setting the due date of a milestone
  • Add »all« action for milestones subcommand

Bug fixes

  • Fix bug making it impossible to create labels on Gitlab
  • Follow HTTP redirections in libcurl interface code
  • Fix »opendir: not a directory« error when operating inside git
    worktrees
  • Fix segfault when trying to fetch issue list of a Gitea milestone
gcli - Release 1.0.0

Published by herrhotzenplotz over 1 year ago

Release 1.0.0

This is version 1.0.0 of gcli.

If you are new to the project, grab one of the tarballs from my site,
extract it and view the README.md document. This gives you
instructions on how to build and install. I highly recommend reading
the manual pages.

IMPORTANT The tarballs provided by Gitlab and Github will not work
without you having autoconf, automake and libtool installed. You can
download pre-autotoolized tarballs at:

https://herrhotzenplotz.de/gcli/releases/gcli-1.0.0/

Fixes

  • Various manual page cleanups and rewrites
  • 256colour display cleanup
  • Rewrite both issues subcommand and pulls subcommand
    actions. This breaks previous behaviour but it is now much cleaner
    than it used to be before. Read the manual pages for details on the
    changes.
  • Manual pages include gcli version number.
  • GCLI version output prints target triplet
  • Remove pull requests entirely when fetching issues from Github. This
    fixes the behaviour of the -n option when fetching issues on
    Github.

New features

  • Added new milestones subcommand
  • Added basic support for building under mingw32-w64
  • Add HACKING guide

Notes

Please test and report issues and bugs. Patches are highly welcome.

For cross-compilation issues see HACKING.md.

Thanks to all contributors, testers and package maintainers who made
this release possible.

gcli - 0.9.12-beta

Published by herrhotzenplotz almost 2 years ago

  • Implement releases support for Gitea

  • When listing releases, print all assets instead of just one tarball URL

  • PR status on Gitlab now also prints the state of pipelines running on the Merge Request

  • pulls subcommand now has a checks action that prints pipelines/CI runs for the PR

  • Add an api subcommand that prints the JSON responses from the APIs (for debugging)

  • Fix bug where listing pipeline jobs for Gitlab gets stuck in an infinite loop

  • Port remaining tests to the autotools test framework

  • Fix wrong help messages and manual pages for pull requests

  • Implement a new generic table printer that doesn't truncate output

  • Fix various compiler warnings during the build process

  • Fix broken test url-encode test on NetBSD

  • Fix segmentation fault when creating releases on Github

Please note that the tarballs provided by Gitlab and Github will not work without you having autoconf, automake and libtool installed. You can download pre-autotoolized tarballs at:

https://herrhotzenplotz.de/gcli/releases/gcli-0.9.12-beta/

gcli - v0.9.10-beta

Published by herrhotzenplotz almost 2 years ago

GCLI Version 0.9.10-beta

/!\ WARNING: The build system now uses autotools. You will have to run  /!\
/!\          a configure script now.                                    /!\

Changes:

  • Move Gitlab Code to generated parsers

  • Move Build System to Autotools

  • Better usage messages in all subcommands

  • Update man pages

  • Be less verbose by default:

    • -v is now an option to debug failures
      • -q supresses some more output
  • More supported OSes: Alpine Linux, SunOS 5.11 (Illumos)

  • Make some subcommands output short tables instead of long
    lists. To revert the old behaviour a -l / --long option
    was added.

  • C99 Portability fixes.

You can download tar balls here:

https://herrhotzenplotz.de/gcli/releases/gcli-0.9.10-beta/

Report bugs at:

https://gitlab.com/herrhotzenplotz/gcli/issues

Or send an E-Mail to nsonack AT <herrhotzenplotz dot de>
gcli - 0.9.9-beta

Published by herrhotzenplotz about 2 years ago

Changes

  • Added a Kyua Test suite.
  • Rewrite build system as a shell script instead of Makefile based.
  • Cleanup various manual pages.
  • Solaris build fixes.
  • Normalize x86 CPU names (amd64, x64 and x86_64 are all amd64).
  • Wire up missing action in pull request comments for gitea.
  • Fix argument parsing when creating labels.
  • Add generator for JSON parsers and move most of the Github Code to these
    generated parsers.
  • Add FreeBSD Ports build files

Download and installation

Tarballs may be found at:
https://herrhotzenplotz.de/gcli/releases/gcli-0.9.9-beta/

Prebuilt FreeBSD packages for arm64 and amd64 can be found at:
https://herrhotzenplotz.de/gcli/pkg/FreeBSD

You can easily install it with the following command:

pkg add https://herrhotzenplotz.de/gcli/pkg/FreeBSD/`uname -m`/gcli-0.9.9.pkg
gcli - v0.9.6-beta

Published by herrhotzenplotz about 2 years ago

Changes:

- Add autodetection of forge type for Codeberg
- Implement creating comments for Gitea forges
- Fix bug 'error: forge types are inconsistent' in Gitea forges
- Implement adding labels when creating pull requests
- Split `-i` into `-o` and `-r` in `pulls create` and fix its man page

Tarballs may be found at: https://herrhotzenplotz.de/gcli/releases/gcli-0.9.6-beta/

gcli - 0.9.2-beta

Published by herrhotzenplotz over 2 years ago

Changes:

  • Rename the project to gcli
  • Solaris build fixes
  • Basic Gitea support
  • Change comments whenever a editor pops up to '!' instead of '#'
  • PowerPC build fixes
  • Fix JSON escaping when creating issues and pull requests

Tarballs may be found at: [https://herrhotzenplotz.de/gcli/releases/gcli-0.9.2-beta/] (https://herrhotzenplotz.de/gcli/releases/gcli-0.9.2-beta/)

gcli -

Published by herrhotzenplotz over 2 years ago

gcli - 0.6.1 Fixes for ambiguous remotes

Published by herrhotzenplotz over 2 years ago

See #103 and #104.

Adds a new option -r for choosing the git remote.

gcli - 0.6.0-alpha

Published by herrhotzenplotz almost 3 years ago

Added support for multiple accounts. (#84)
Added various missing things for Gitlab.

WARNING: config file format has changed. Please update your ${HOME}/.config/ghcli/config file!

gcli - 0.5.2-alpha

Published by herrhotzenplotz almost 3 years ago

New features:

  • Rudimentary GitLab support
  • Manual forge type override

Fixed a couple of wrong things in the man pages and updated those as well.