sdk icon indicating copy to clipboard operation
sdk copied to clipboard

cookiecutter skeleton generation lack's context and validation

Open MeltyBot opened this issue 4 years ago • 3 comments

Migrated from GitLab: https://gitlab.com/meltano/sdk/-/issues/226

Originally created by @pandemicsyn on 2021-09-28 17:50:55


Summary

When using cookiecutter to generate the project skeleton, if "source_name" provided includes a hyphen we end up generating invalid python because we end up having class names and imports that contain hyphens.

Steps to reproduce

➜  projects cookiecutter https://gitlab.com/meltano/sdk --directory="cookiecutter/tap-template"
You've downloaded /Users/fhines/.cookiecutters/sdk before. Is it okay to delete and re-download it? [yes]: yes
source_name [MySourceName]: foo-bar
admin_name [FirstName LastName]:
tap_id [tap-foo-bar]:
library_name [tap_foo_bar]:
Select stream_type:
1 - REST
2 - GraphQL
3 - Other
Choose from 1, 2, 3 [1]: 3
Select auth_method:
1 - API Key
2 - Bearer Token
3 - Basic Auth
4 - OAuth2
5 - JWT
6 - Custom or N/A
Choose from 1, 2, 3, 4, 5, 6 [1]: 6

What is the current bug behavior?

We generate invalid python due to the inclusion of the hyphen, eg:

from tap_foo_bar.client import foo-barStream
class UsersStream(foo-barStream):
class GroupsStream(foo-barStream):

What is the expected correct behavior?

That we either warn users and fail to create the project skeleton or proactively work around the provided input to still generate valid/working python.

Relevant logs and/or screenshots

Possible fixes

Probably have two main options:

  1. We kind of hint at the fact that we want you to provide camel case for the source_name, but since we don't describe what the fields are used for it's easy to overlook. So one option is to be more descriptive on these fields (explicitly warning folks), and we may want to validate the input.
  2. We could try and work around this behind the scenes, by sanitizing input and just proactively replace - with _ for use when generating code (or otherwise camel casing source_name without trampling another intentional naming convention).

My personal recommendation would probably be option 1 - being more descriptive and warning users/validating the input. Option 2 feels like a slippery slope and a little bit too magic.

MeltyBot avatar Sep 28 '21 17:09 MeltyBot

This has been marked as stale because it is unassigned, and has not had recent activity. It will be closed after 21 days if no further activity occurs. If this should never go stale, please add the evergreen label, or request that it be added.

stale[bot] avatar Jul 18 '23 11:07 stale[bot]

Still relevant, not sure if this can be done with cookiecutter at the moment

edgarrmondragon avatar Jul 18 '23 17:07 edgarrmondragon