cli icon indicating copy to clipboard operation
cli copied to clipboard

Make it easier to create templates and glee projects

Open jonaslagoni opened this issue 3 years ago • 16 comments

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 avatar Jan 17 '22 01:01 jonaslagoni

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

derberg avatar Jan 17 '22 08:01 derberg

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

imabp avatar Jan 23 '22 12:01 imabp

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

jonaslagoni avatar Jan 23 '22 14:01 jonaslagoni

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?

derberg avatar Jan 24 '22 09:01 derberg

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

imabp avatar Jan 24 '22 12:01 imabp

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

fmvilas avatar Jan 24 '22 17:01 fmvilas

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.

imabp avatar Jan 24 '22 18:01 imabp

new sounds good to me, simple.

derberg avatar Jan 27 '22 14:01 derberg

Same here 🎉

jonaslagoni avatar Jan 28 '22 19:01 jonaslagoni

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!

peter-rr avatar Mar 14 '22 12:03 peter-rr

No objections from my side 👍 🚀

fmvilas avatar Mar 14 '22 12:03 fmvilas

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 🙂

jonaslagoni avatar Mar 14 '22 12:03 jonaslagoni

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

fmvilas avatar Apr 29 '22 11:04 fmvilas

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

peter-rr avatar Apr 29 '22 11:04 peter-rr

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:

github-actions[bot] avatar Aug 28 '22 00:08 github-actions[bot]

Still relevant, don't close it :)

fmvilas avatar Aug 28 '22 13:08 fmvilas

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?

peter-rr avatar Dec 09 '22 14:12 peter-rr

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

fmvilas avatar Dec 09 '22 14:12 fmvilas

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?

peter-rr avatar Dec 09 '22 14:12 peter-rr

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

fmvilas avatar Dec 12 '22 05:12 fmvilas

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.

Souvikns avatar Dec 12 '22 07:12 Souvikns

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

peter-rr avatar Dec 12 '22 10:12 peter-rr

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.

fmvilas avatar Dec 12 '22 16:12 fmvilas

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

jonaslagoni avatar Dec 12 '22 16:12 jonaslagoni

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.

fmvilas avatar Dec 13 '22 15:12 fmvilas

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:

github-actions[bot] avatar Apr 13 '23 00:04 github-actions[bot]

:tada: This issue has been resolved in version 0.39.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket:

asyncapi-bot avatar Apr 20 '23 12:04 asyncapi-bot