Open hellodword opened 2 months ago
I also often avoid setting user.email and user.name globally. Maybe we can have it skip those git steps if those aren't configured and/or provide an option that enables/disables the git generation?
I'm undecided on whether using a library for git or scripting the cli is better, I'm curious how much it saves on binary size not having it. The cli interface for git appears to be pretty stable and avoids having a possible version conflict between the library and what the user uses on their system. If we stick with scripting the cli as a minimum we should have a proper error message if git
isn't installed.
I will bring up both issues with the team.
binary size
I just submitted a PR for that https://github.com/extism/cli/pull/98
whether using a library for git or scripting the cli is better
Personally, I prefer not using any git if there's no submodule in the c-pdk-template
.
I think the npm init
style is pretty cool as it allows customizing the project name, version, license, etc., while extism gen plugin -l Go
retains the go mod name, which I would like to change.
I discussed with the team and for the general case we want to keep the git initialization of new projects. However, we'd accept a change adding in a flag to disable it or possibly set the git info to use. Otherwise, it's also an option to avoid using the extism cli and use the template repos without it.
On git downloading, we'd accept a change to switch to go-git
assuming it has compatibility with all git features we need and it portable. If any of the downloading can be done without git, we'd also accept a change that used another download method.
Using git during the generate process assumes certain prerequisites, like having git installed and setting global user.name and user.email. However, I prefer not to set global git user.name and user.email, opting instead to set them per project, which results in an error during generation: https://github.com/extism/cli/blob/0a713d1bac0fe88bc55e08c6f199f77ac9fbf836/generate.go#L145
Furthermore, based on the code, git is primarily used for cloning, which is not essential.
There's a submodule in https://github.com/extism/c-pdk-template
How about using go-git?
I'm trying to develop an extension system with this project. I aim to assume that the users creating extensions have as few relevant skills as possible, which is one reason why untrusted code is an issue, isn't it?