cli
                                
                                 cli copied to clipboard
                                
                                    cli copied to clipboard
                            
                            
                            
                        Make it easier to create templates and glee projects
Reason/Context
We have had talks before about making it easier to create new generator templates through something like npx create-asyncapi-template. However, I think that our CLI could fulfill that role to offer a better user experience for developers, to easily bootstrap new templates or glee projects.
Notice: Glee already use npx for setup
What do you think, does it fit the CLI use-case?
imho yes, AsyncAPI CLI should be a single place where we integrate all AsyncAPI tools to make work from the terminal a pleasure. So folks install just one tool to use all the others. One 💍 to rule them all 🤓
it is just a matter of coming up with proper command names and good DX
Hey, this sounds amazing!! 🤩 Would like to work on this.
Would bootstrap make sense? 🤔
asyncapi bootstrap glee --output ./output-dir
asyncapi bootstrap glee mqtt --output ./output-dir 
asyncapi bootstrap template --output ./output-dir
//Incase you want to copy an existing template
asyncapi bootstrap template @asyncapi/java-cloud-stream --output ./output-dir
I think scaffold is more accurate technical word that would explain what is done, not sure bootstrap is correct 🤔
can you provide some more explanation of what each command would actually generate?
Yes @derberg , scaffold sounds less confusing than bootstrap.
So I was thinking to start it with, something like support of Async API for NextJS API Directory. Objective: The user can create NextJS Serverside Asynchronous APIs from the AsyncAPI spec file.
Assuming, AsyncAPI and NextJS are installed globally.
Steps
- 
User should be able to run -> asyncapi scaffold nextjs --output <NextJS_API_Directory>
- 
This builds a directory with particular endpoints as separate filenames (That's how NextJS function), and a NextJS friendly code. The --typescriptflag will help to choose the language.
Your suggestions: @jonaslagoni @derberg @fmvilas
What about new? We already have it and would be just a matter of extending it:
asyncapi new --> New AsyncAPI file, as it is now.
asyncapi new file --> Same as above.
asyncapi new project --> New Glee project
asyncapi new glee --> New Glee project
asyncapi new generator --> New Generator template (or generator if we end up calling them like this)
asyncapi new generator --clone @asyncapi/java-cloud-stream --> In case you want to clone an existing one
new sounds more relevant to the scope ✌ .
We can add a code generator for different frameworks too For example:-> NextJS, which requires customization to NextJS Formatted Code and Directories for APIs.
new sounds good to me, simple.
Same here 🎉
Hey guys! 👋 @jonaslagoni @derberg @imabp @fmvilas I've been investigating a bit on this issue and I'd like to start working on it to keep on contributing to the CLI repo. If no objections from your side, I'll take it up and get back to you with a proposal as soon as I have some working code 💪 Cheers!
No objections from my side 👍 🚀
Hey guys! 👋 @jonaslagoni @derberg @imabp @fmvilas I've been having a look and investigating a bit on this issue and I'd like to start working on it to keep on contributing to the CLI repo. If no objections from your side, I'll take it up and get back to you with a proposal as soon as I have some working code 💪 Cheers!
Awesome @peter-rr!
Not sure how you want to do it, but as a suggestion, don't try to jam everything into one PR :) Start small with one of the commands like asyncapi new glee, and make a PR and gradually add features 🙂
I'm happy to be a mentor for this issue in the Mentorship program.
@fmvilas As I said I'd be happy to contribute on this issue 💪 So I'd like to do it as part of the Mentorship program if selected :) Cheers!!
This issue has been automatically marked as stale because it has not had recent activity :sleeping:
It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.
There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.
Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.
Thank you for your patience :heart:
Still relevant, don't close it :)
Hey folks! I'm about to start working on this issue and I think it would be more convenient if we split it into two different issues:
- Create glee projects
- Create templates
My idea is to focus on creation of glee projects for now, so the the other issue about creation of templates would be available to be picked by anybody else. @Souvikns I know you were interested recently in working on this issue, so I was thinking maybe you'd like to pick the second issue I've proposed (Create templates). If that's the case, feel free to create a new issue for that purpose 😉 What do you think, guys?
It's always a good idea to split things in smaller chunks 👍
By the way, in order to implement the creation of glee projects, I was considering the option of using the create-glee-app command inside the code, but not sure whether that's something out of the scope for this issue or then the main goal should be to bootstrap the glee project manually without making use of that command at all 🤔
Besides, I don't know what is planned for this repository in the future, so I doubt if I should rely on it or it might be better to avoid using it. Any ideas or suggestions on this?
Please completely avoid using create-glee-app. It will be deprecated in favor of this command.
Yeah @peter-rr I would love to help. What would be a good idea?
- to use examples in glee as templates so that CLI can pull them during build something we are currently doing https://github.com/asyncapi/cli/blob/master/scripts/fetch-asyncapi-example.js
- Or have a separate templates folder in glee for specific templates.
@Souvikns I'm not really sure about how should be the strategy in terms of templates organization 🤔 Maybe @fmvilas or @jonaslagoni could have some suggestions about it 💭
As for Glee, I think it makes sense to be able to fetch a Glee example somehow. As we're doing right now in create-glee-app with the -e, --example option: https://github.com/asyncapi/create-glee-app#options. Take into account that creating a Glee project is not just a matter of picking an AsyncAPI to start with but also some example code in the functions.
So you dont just want the bare configuration for a Glee project to be setup alongside the AsyncAPI document, you actually want it to implement business logic @fmvilas? 🧐
No no, just be able to "clone" an example from the examples folder in Glee or a [Git|Gitub] URL. Just what we have right now with create-glee-app. Also a cool feature of create-next-app.
This issue has been automatically marked as stale because it has not had recent activity :sleeping:
It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.
There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.
Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.
Thank you for your patience :heart:
:tada: This issue has been resolved in version 0.39.0 :tada:
The release is available on:
Your semantic-release bot :package::rocket: