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

Make it easier to create templates and glee projects #184

Closed
Tracked by #251
jonaslagoni opened this issue Jan 17, 2022 · 27 comments · Fixed by #418
Closed
Tracked by #251

Make it easier to create templates and glee projects #184

jonaslagoni opened this issue Jan 17, 2022 · 27 comments · Fixed by #418
Labels
enhancement New feature or request gsoc This label shoudl be used for issues or discussions related to ideas for Google Summer of Code released

Comments

@jonaslagoni
Copy link
Member

jonaslagoni commented Jan 17, 2022

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?

@jonaslagoni jonaslagoni added the enhancement New feature or request label Jan 17, 2022
@derberg
Copy link
Member

derberg commented Jan 17, 2022

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

@imabp
Copy link
Member

imabp commented Jan 23, 2022

Hey, this sounds amazing!! 🤩
Would like to work on this.

@jonaslagoni
Copy link
Member Author

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

@derberg
Copy link
Member

derberg commented Jan 24, 2022

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?

@imabp
Copy link
Member

imabp commented Jan 24, 2022

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

  1. User should be able to run ->
    asyncapi scaffold nextjs --output <NextJS_API_Directory>

  2. This builds a directory with particular endpoints as separate filenames (That's how NextJS function), and a NextJS friendly code.
    The --typescript flag will help to choose the language.


Your suggestions: @jonaslagoni @derberg @fmvilas

@fmvilas
Copy link
Member

fmvilas commented Jan 24, 2022

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

@imabp
Copy link
Member

imabp commented Jan 24, 2022

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.

@derberg
Copy link
Member

derberg commented Jan 27, 2022

new sounds good to me, simple.

@jonaslagoni
Copy link
Member Author

Same here 🎉

@Souvikns Souvikns mentioned this issue Mar 3, 2022
16 tasks
@peter-rr
Copy link
Member

peter-rr commented Mar 14, 2022

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!

@fmvilas
Copy link
Member

fmvilas commented Mar 14, 2022

No objections from my side 👍 🚀

@jonaslagoni
Copy link
Member Author

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 🙂

@fmvilas fmvilas added the gsoc This label shoudl be used for issues or discussions related to ideas for Google Summer of Code label Apr 29, 2022
@fmvilas
Copy link
Member

fmvilas commented Apr 29, 2022

I'm happy to be a mentor for this issue in the Mentorship program.

@peter-rr
Copy link
Member

@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!!

@github-actions
Copy link
Contributor

This issue has been automatically marked as stale because it has not had recent activity 😴

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 ❤️

@github-actions github-actions bot added the stale label Aug 28, 2022
@fmvilas
Copy link
Member

fmvilas commented Aug 28, 2022

Still relevant, don't close it :)

@github-actions github-actions bot removed the stale label Aug 29, 2022
@peter-rr
Copy link
Member

peter-rr commented Dec 9, 2022

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:

  1. Create glee projects
  2. 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?

@fmvilas
Copy link
Member

fmvilas commented Dec 9, 2022

It's always a good idea to split things in smaller chunks 👍

@peter-rr
Copy link
Member

peter-rr commented Dec 9, 2022

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?

@fmvilas
Copy link
Member

fmvilas commented Dec 12, 2022

Please completely avoid using create-glee-app. It will be deprecated in favor of this command.

@Souvikns
Copy link
Member

Souvikns commented Dec 12, 2022

Yeah @peter-rr I would love to help. What would be a good idea?

  1. 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
  2. Or have a separate templates folder in glee for specific templates.

@peter-rr
Copy link
Member

peter-rr commented Dec 12, 2022

@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 💭

@fmvilas
Copy link
Member

fmvilas commented Dec 12, 2022

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.

@jonaslagoni
Copy link
Member Author

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? 🧐

@fmvilas
Copy link
Member

fmvilas commented Dec 13, 2022

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.

@github-actions
Copy link
Contributor

This issue has been automatically marked as stale because it has not had recent activity 😴

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 ❤️

@asyncapi-bot
Copy link
Contributor

🎉 This issue has been resolved in version 0.39.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request gsoc This label shoudl be used for issues or discussions related to ideas for Google Summer of Code released
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants