Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash when datasource is not specified #93

Closed
bartmeuris opened this issue Feb 2, 2017 · 6 comments
Closed

Crash when datasource is not specified #93

bartmeuris opened this issue Feb 2, 2017 · 6 comments

Comments

@bartmeuris
Copy link

Currently, when a datasource is specified in the template, but not on the CLI, gomplate crashes with a nil dereference error, which can easily be reproduced with:

echo '{{(datasource "test")}}' | ./gomplate

Tested with gomplate version 1.2.4 on Ubuntu 14.04.

In my opinion it shouldn't crash like that in the first place, but it would also be nice if there was a possibility to test within the template if specific datasources are specified/available before trying to access them.

Right now I solved this by wrapping gomplate and assigning a dummy file/source externally - but that's not really a clean solution in my opinion.

@hairyhenderson
Copy link
Owner

HI @bartmeuris, thanks for reporting this! For sure it's not great to get a nasty crash. It'd certainly be a good idea to error out in a more user-friendly way.

it would also be nice if there was a possibility to test within the template if specific datasources are specified/available before trying to access them.

Just so I'm clear, would something like this work for you?

{{ if datasource-available "test" }}
{{datasource "test"}}
{{ end }}

@bartmeuris
Copy link
Author

Something like your proposed datasource-available would be good, although it should then be clarified what "available" means then. Does it only mean it's specified on the cli, or that the file/url/vault connection/... is valid? If no validation is performed, a datasource-exists would maybe be a better name, unless you want to keep the option open for future validation behind the scenes and start off with a simpler implementation.

@hairyhenderson
Copy link
Owner

Yeah, good point. I'll start looking at a datasource-exists function.

Just out of curiosity, is this more a usability thing, or do you have a real-world need to be able to render a template either with or without a datasource defined?

@hairyhenderson
Copy link
Owner

@bartmeuris - just in case you don't see the notification, I've got a PR for this in #94 - please let me know if that seems good to you! 🙂

@bartmeuris
Copy link
Author

To satisfy your curiosity, yes I have an actual use-case for this.

I'm building a Wildfly docker image for our java-dev's, with a 'basic' default configuration that could satisfy 90% of the projects of our Java team. This implies that it requires some basic customization options, and this tool is very helpful in that :) Most is done through environment variables, but that's not suitable for everything, which is when in some situations I required the datasources and encountered this problem.

This way I'll be able to just test if a specific file is provided by the dev and append the datasource flag to the cli options of gomplate, and won't have to provide an empty file (which is what I do now).

@hairyhenderson
Copy link
Owner

@bartmeuris ok! awesome! I'm glad that gomplate is useful for you 😁

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants