danielgtaylor / danielgtaylor/openapi-cli-generator

Panic when attempting to generate CLI for YNAB's API

Open
#21 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Go
Stars
218
Forks
54
PR merge metrics
No merged PRs in 30d

Description

I am attempting to generate a CLI for [YNAB's API](https://api.youneedabudget.com/v1#/) ([spec](https://api.youneedabudget.com/papi/spec-v1-swagger.json)) via Docker (because I _really_ do not want to setup then tear down a go env for this single use-case).

This isn't straightforward as the YNAB API spec is OpenAPI v2 so I converted it to v3 with [this tool](https://mermade.org.uk/openapi-converter) (then validated the generated spec with [this tool](https://apidevtools.org/swagger-parser/online/)).

I uploaded the resulting v3 YAML as [a gist](https://gist.github.com/Phrohdoh/d1ecea1fbe1c8566fad5fd97aa99b346).

I then wrote this, potentially bogus, `Dockerfile`:

```
FROM golang

WORKDIR /go/ynab-cli

RUN go get -u github.com/danielgtaylor/openapi-cli-generator && \
curl --silent -o ynab.openapi.yaml https://gist.githubusercontent.com/Phrohdoh/d1ecea1fbe1c8566fad5fd97aa99b346/raw/962661a47d8248aa2edd3618ad6c74d000219fe4/ynab_v1.openapi_v3.yaml && \
openapi-cli-generator init ynab && \
cat main.go | sed 's|// TODO: Add register commands here\.|openapiRegister(false)|g' > main.go

RUN openapi-cli-generator generate ynab.openapi.yaml
RUN go install

CMD ynab-cli
```

When I run the following from the directory containing my `Dockerfile`:

```shell
$ docker build -t gen-ynab-cli .
```

I get the following output:

```
Sending build context to Docker daemon 2.56kB
Step 1/6 : FROM golang
---> b860ab44e93e
Step 2/6 : WORKDIR /go/ynab-cli
---> Using cache
---> dfba7020dd36
Step 3/6 : RUN go get -u github.com/danielgtaylor/openapi-cli-generator && curl --silent -o ynab.openapi.yaml https://gist.githubusercontent.com/Phrohdoh/d1ecea1fbe1c8566fad5fd97aa99b346/raw/962661a47d8248aa2edd3618ad6c74d000219fe4/ynab_v1.openapi_v3.yaml && openapi-cli-generator init ynab && cat main.go | sed 's|// TODO: Add register commands here\.|openapiRegister(false)|g' > main.go && cat main.go
---> Using cache
---> e7a8c5ae42a6
Step 4/6 : RUN openapi-cli-generator generate ynab.openapi.yaml
---> Running in 4250354ef5c6
panic: 25:9: expected ';', found '.' (and 10 more errors)

goroutine 1 [running]:
main.writeFormattedFile(0xc000160c00, 0xf, 0xc0002ae000, 0x10af6, 0x12000)
/go/src/github.com/danielgtaylor/openapi-cli-generator/main.go:586 +0x112
main.generate(0xc0000b7b80, 0xc0000530a0, 0x1, 0x1)
/go/src/github.com/danielgtaylor/openapi-cli-generator/main.go:654 +0x5b0
github.com/spf13/cobra.(*Command).execute(0xc0000b7b80, 0xc000053080, 0x1, 0x1, 0xc0000b7b80, 0xc000053080)
/go/src/github.com/spf13/cobra/command.go:766 +0x2ae
github.com/spf13/cobra.(*Command).ExecuteC(0xc0000b7680, 0xc00008df78, 0x1, 0x1)
/go/src/github.com/spf13/cobra/command.go:850 +0x2fc
github.com/spf13/cobra.(*Command).Execute(...)
/go/src/github.com/spf13/cobra/command.go:800
main.main()
/go/src/github.com/danielgtaylor/openapi-cli-generator/main.go:674 +0x1c0
The command '/bin/sh -c openapi-cli-generator generate ynab.openapi.yaml' returned a non-zero code: 2
```

With the relevant portion being:

```
panic: 25:9: expected ';', found '.' (and 10 more errors)

goroutine 1 [running]:
main.writeFormattedFile(0xc000160c00, 0xf, 0xc0002ae000, 0x10af6, 0x12000)
/go/src/github.com/danielgtaylor/openapi-cli-generator/main.go:586 +0x112
main.generate(0xc0000b7b80, 0xc0000530a0, 0x1, 0x1)
/go/src/github.com/danielgtaylor/openapi-cli-generator/main.go:654 +0x5b0
github.com/spf13/cobra.(*Command).execute(0xc0000b7b80, 0xc000053080, 0x1, 0x1, 0xc0000b7b80, 0xc000053080)
/go/src/github.com/spf13/cobra/command.go:766 +0x2ae
github.com/spf13/cobra.(*Command).ExecuteC(0xc0000b7680, 0xc00008df78, 0x1, 0x1)
/go/src/github.com/spf13/cobra/command.go:850 +0x2fc
github.com/spf13/cobra.(*Command).Execute(...)
/go/src/github.com/spf13/cobra/command.go:800
main.main()
/go/src/github.com/danielgtaylor/openapi-cli-generator/main.go:674 +0x1c0
```

Am I attempting to use this project incorrectly or is the generated v3 YAML doc invalid?

Any help/input would be greatly appreciated!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.