# Generate The generators in amber are a great way to get an application up and running quickly. In addition, they help keep code consistent and following convention. ## Example Usage You can always see the available generators by running `amber generate` as below: ```text $ amber generate Parsing Error: The TYPE argument is required. amber generate [OPTIONS] TYPE NAME [FIELDS1 FIELDS2...] Arguments: FIELDS (multiple) user:reference name:string body:text age:integer published:bool NAME name of resource TYPE scaffold, model, controller, migration, mailer, socket, channel, auth Options: --no-color Disable colored output ``` Generators can be used multi-word names, the class names will be `CamelCase` and file names will be `snake_case`, the command line input can be either: ```text $ amber generate [TYPE] MultiWordName [FIELD1 FIELD2 ...] # OR $ amber generate [TYPE] multi_word_name [FIELD1 FIELD2 ...] ``` See [Scaffolding](generate.md#scaffolding) below for full example. Examples of Usage * [Scaffolding](generate.md#scaffolding) * [Auth](generate.md#auth) * [Model](generate.md#model) * [Controller](generate.md#controller) * [JSON API](generate.md#api) ### Scaffolding Scaffolding will create the model \(and specs\), views, controller \(and specs\) and migrations for a resource. Additionally, it will add the new resource to the nav bar and ```bash $ amber generate scaffold Post title body:text ``` ```bash Rendering Scaffold post new db/migrations/20171114103058417_create_post.sql new spec/models/spec_helper.cr new spec/models/post_spec.cr new src/models/post.cr new spec/controllers/spec_helper.cr new spec/controllers/post_controller_spec.cr new src/controllers/post_controller.cr rewritten src/views/layouts/_nav.slang new src/views/post/_form.slang new src/views/post/edit.slang new src/views/post/index.slang new src/views/post/new.slang new src/views/post/show.slang ``` If you scaffold a multi-word resource, the class names will be `CamelCase` and file names will be `snake_case`, the command line input can be either: ```text $ amber generate scaffold PostComment post:reference body:text # OR $ amber generate scaffold post_comment post:reference body:text ``` ```bash Rendering Scaffold post_comment new db/migrations/20171114103306763_create_post_comment.sql skipped spec/models/spec_helper.cr new spec/models/post_comment_spec.cr new src/models/post_comment.cr skipped spec/controllers/spec_helper.cr new spec/controllers/post_comment_controller_spec.cr new src/controllers/post_comment_controller.cr rewritten src/views/layouts/_nav.slang new src/views/post_comment/_form.slang new src/views/post_comment/edit.slang new src/views/post_comment/index.slang new src/views/post_comment/new.slang new src/views/post_comment/show.slang ``` ### Auth ```bash $ amber g auth User ``` ```bash Rendering Auth user new db/migrations/20171019214851_create_user.sql new db/seeds.cr new spec/controllers/spec_helper.cr new spec/models/spec_helper.cr new spec/models/user_spec.cr new src/controllers/registration_controller.cr new src/controllers/session_controller.cr new src/handlers/authenticate.cr new src/models/user.cr rewritten src/views/layouts/_nav.slang new src/views/registration/new.slang new src/views/session/new.slang ``` ### Model ```bash $ amber g model Person name:string age:integer ``` ```bash Rendering Model person new db/migrations/20171019214940_create_person.sql skipped spec/models/spec_helper.cr new spec/models/person_spec.cr new src/models/person.cr ``` ### Controller ```bash $ amber g controller Person index:get show:get create:post update:patch ``` ```bash Rendering Controller person skipped spec/controllers/spec_helper.cr new spec/controllers/person_controller_spec.cr new src/controllers/person_controller.cr ``` ### API ```bash $ amber g api Person name:string age:integer ``` ```bash 04:09:54 Generate | (INFO) Generating Amber::CLI::Api 04:09:54 Generate | (INFO) new spec/models/person_spec.cr 04:09:54 Generate | (INFO) identical spec/models/spec_helper.cr 04:09:54 Generate | (INFO) new src/models/person.cr 04:09:54 Generate | (INFO) new db/migrations/20191031160954280_create_person.sql Format ./config/routes.cr 04:09:54 Generate | (INFO) new spec/controllers/person_controller_spec.cr 04:09:54 Generate | (INFO) identical spec/controllers/spec_helper.cr 04:09:54 Generate | (INFO) new ``` ## Recipes Recipes are available to generate Scaffolding, Controller and Model artifacts in ways that vary from the standard built in generator. See the [Recipes](recipes.md) option of the Command Line Tool for more information about using recipes to generate applications.