# exporting git commands in parsable format for constructing language-specific API for git CLI

4 messages from 2021-03-27 to 2021-04-07. Participants: ama bamo, Santiago Torres Arias, Junio C Hamano.
Thread: https://gitlist.dev/t/55396

## ama bamo, 2021-03-27 00:42

Subject: exporting git commands in parsable format for constructing language-specific API for git CLI
Message-ID: <CAJxd1DPcCD96NSqzXvh3cgA93d1nCNFQbFWduTCqfx1zi_1o=w@mail.gmail.com>
URL: https://gitlist.dev/e/CAJxd1DPcCD96NSqzXvh3cgA93d1nCNFQbFWduTCqfx1zi_1o%3Dw%40mail.gmail.com

```
While using git commands in my applications and reimplementing the
same stuff i found out i can just parse git docs then generate
structures and classes based on that; i have done similiar for
wordpress and its `wp-cli`, for example see:
https://github.com/bukowa/gowpcli/tree/master/generated

But `wp-cli` allows exporting all of the commands in a json format,
see: https://github.com/bukowa/gowpcli/blob/master/generate/dump.json

Is there anyone who thinks that would be benefical to do something
similiar for git, or maybe there's something done already and i missed
that? (parsing manpages / generated htmldocs is still a pain).

Thank you,
Mateusz Kurowski

```

## Santiago Torres Arias, 2021-03-28 23:07

Subject: Re: exporting git commands in parsable format for constructing language-specific API for git CLI
Message-ID: <YGEMMyAYVlzgv79G@meme-cluster>
URL: https://gitlist.dev/e/YGEMMyAYVlzgv79G%40meme-cluster
In-Reply-To: <CAJxd1DPcCD96NSqzXvh3cgA93d1nCNFQbFWduTCqfx1zi_1o=w@mail.gmail.com>

```
On Sat, Mar 27, 2021 at 01:42:09AM +0100, ama bamo wrote:
> While using git commands in my applications and reimplementing the
> same stuff i found out i can just parse git docs then generate
> structures and classes based on that; i have done similiar for
> wordpress and its `wp-cli`, for example see:
> https://github.com/bukowa/gowpcli/tree/master/generated
> 
> But `wp-cli` allows exporting all of the commands in a json format,
> see: https://github.com/bukowa/gowpcli/blob/master/generate/dump.json

I'm not entirely sure if something like this exists in git, and I'm
alsot unsure of what exactly is the benefit of doing so vs an actual API
(e.g., git2go[1]). Could you help us by elaborating what this is meant to
achieve? Maybe that way we can figure out if something exists...

Cheers!
-Santiago

[1] https://github.com/libgit2/git2go

```

## ama bamo, 2021-04-07 18:18

Subject: Re: exporting git commands in parsable format for constructing language-specific API for git CLI
Message-ID: <CAJxd1DNB=OGgNkLHg=2TpQxgWKp1dTcg5vvFXG7+2MS0KyXjJA@mail.gmail.com>
URL: https://gitlist.dev/e/CAJxd1DNB%3DOGgNkLHg%3D2TpQxgWKp1dTcg5vvFXG7%2B2MS0KyXjJA%40mail.gmail.com
In-Reply-To: <YGEMMyAYVlzgv79G@meme-cluster>

```
Hey Santiago!

Sorry for not being more specific - it's my first time in such a mailing list.

libgit2 and it's language-specific API looks interesting but
its not the solution to the problem i am trying to solve.

I believe that git CLI is the most stable,reliable and tested way
of actually using git. Most of the tools using git that i know
are actually using your underlying git cli binary - not the bindings.

By following the definition of CLI and API; the CLI is human readable
while the API is machine readable. If we were able to expose CLI
in a machine-readable format then would it be an API?


On Mon, Mar 29, 2021 at 1:07 AM Santiago Torres Arias <santiago@nyu.edu> wrote:
>
> On Sat, Mar 27, 2021 at 01:42:09AM +0100, ama bamo wrote:
> > While using git commands in my applications and reimplementing the
> > same stuff i found out i can just parse git docs then generate
> > structures and classes based on that; i have done similiar for
> > wordpress and its `wp-cli`, for example see:
> > https://github.com/bukowa/gowpcli/tree/master/generated
> >
> > But `wp-cli` allows exporting all of the commands in a json format,
> > see: https://github.com/bukowa/gowpcli/blob/master/generate/dump.json
>
> I'm not entirely sure if something like this exists in git, and I'm
> alsot unsure of what exactly is the benefit of doing so vs an actual API
> (e.g., git2go[1]). Could you help us by elaborating what this is meant to
> achieve? Maybe that way we can figure out if something exists...
>
> Cheers!
> -Santiago
>
> [1] https://github.com/libgit2/git2go

```

## Junio C Hamano, 2021-04-07 20:42

Subject: Re: exporting git commands in parsable format for constructing language-specific API for git CLI
Message-ID: <xmqq4kghzv0w.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqq4kghzv0w.fsf%40gitster.g
In-Reply-To: <CAJxd1DNB=OGgNkLHg=2TpQxgWKp1dTcg5vvFXG7+2MS0KyXjJA@mail.gmail.com>

```
ama bamo <pythoncontrol@gmail.com> writes:

> By following the definition of CLI and API; the CLI is human readable
> while the API is machine readable. If we were able to expose CLI
> in a machine-readable format then would it be an API?

Both input and output for Porcelain commands are subject to change
to improve the end user experience for humans, which may break
scripts that hardcodes the assumption of either the input or the
output at one version of Git.

So no, I wouldn't call that an API.

```
