Anghille
Anghille

Reputation: 103

Generating code based on .json and .gotmpl file

I am trying to use this repository https://github.com/StefanAbl/go-freeipa, and updating the generated code with the latest freeipa version I use (which is 4.10 with API 2.280). In the developing.md instructions, they talk about a gen tool to generate the freeipa code.

The code is using .json files and a .gotmpl file to generate the code (from what I could grasp).

I have NO idea what they are talking about. I have absolutely never coded in Go (but can fix things here and there due to the language's ease of use) so I am not familiar with well-known packages. I tried to find help online, especially with this tool https://github.com/clipperhouse/gen or the go generate, but it doesn't seems right. The clipperhouse/gen expects +gen tags in the code (which don't exist in the repository) and go generate does work with tags as well.

Note that I also tried to do a go run main.go but I receive those errors:

# command-line-arguments
gen/main.go:53:21: undefined: Schema
gen/main.go:58:13: undefined: SchemaDump
gen/main.go:64:18: undefined: Command
gen/main.go:96:21: undefined: Class
gen/main.go:190:20: undefined: ErrDesc
gen/main.go:195:12: undefined: ErrDesc
gen/main.go:202:27: undefined: Schema
gen/main.go:202:42: undefined: ErrDesc
gen/main.go:204:16: undefined: toGoType
gen/main.go:215:11: undefined: Schema
gen/main.go:215:11: too many errors

After checking the code, indeed those (types?) are not declared which explains the errors. And I am not versed in the language enough to be able to fix this myself :( Or even if it needs fixing due to the fact that I should use this gen tool instead.

If anyone has an idea on How I should generate the freeeipa/generated.go file, based on the files in freeipa/gen, that would be awesome :)

PS : For your curiosity on why I am doing this:

I am trying to update the go-freeipa package with the latest freeipa version. The Freeipa-issuer https://github.com/guilhem/freeipa-issuer I am trying to set up on my K8S cluster is returning a

Failed to sign certificate request: Fail to request certificate:
    json: cannot unmarshal string into Go struct field CertRequestResult.result.value of type int

error. I hope this error comes from the fact that go-freeipa client is using an outdated freeipa version (4.9, api 2.170 instead of 4.10 and api 2.280) to generate the code.

Upvotes: 1

Views: 238

Answers (1)

Anghille
Anghille

Reputation: 103

Actually I am stupid :)

Diving a bit more into the code and comapring it the go documentation, I realised that doing go run main.go only runs the main.go file, ignoring other files in the package.

I naively thought they were imported and therefore used when calling the main.go file.

A simple fix (which is not a fix but just correctly starting the program) is to do a go run . instead of go run main.go :)

Upvotes: 3

Related Questions