{"title":"Generate","description":"One day to design and code...","section":"cli","version":"v1.5","path":"cli/generate","canonical_url":"https://amberframework.org/docs/v1.5/cli/generate","markdown_url":"https://amberframework.org/docs/v1.5/cli/generate.md","inherited":true,"content_markdown":"# Generate\n\nThe 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.\n\n## Example Usage\n\nYou can always see the available generators by running `amber generate` as below:\n\n```text\n$ amber generate\nParsing Error: The TYPE argument is required.\n\namber generate [OPTIONS] TYPE NAME [FIELDS1 FIELDS2...]\n\nArguments:\n  FIELDS (multiple)  user:reference name:string body:text age:integer published:bool\n  NAME               name of resource\n  TYPE               scaffold, model, controller, migration, mailer, socket, channel, auth\n\nOptions:\n  --no-color  Disable colored output\n```\n\nGenerators 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:\n\n```text\n$ amber generate [TYPE] MultiWordName [FIELD1 FIELD2 ...]\n# OR\n$ amber generate [TYPE] multi_word_name [FIELD1 FIELD2 ...]\n```\n\nSee [Scaffolding](generate.md#scaffolding) below for full example.\n\nExamples of Usage\n\n* [Scaffolding](generate.md#scaffolding)\n* [Auth](generate.md#auth)\n* [Model](generate.md#model)\n* [Controller](generate.md#controller)\n* [JSON API](generate.md#api)\n\n### Scaffolding\n\nScaffolding 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\n\n```bash\n$ amber generate scaffold Post title body:text\n```\n\n```bash\nRendering Scaffold post\nnew       db/migrations/20171114103058417_create_post.sql\nnew       spec/models/spec_helper.cr\nnew       spec/models/post_spec.cr\nnew       src/models/post.cr\nnew       spec/controllers/spec_helper.cr\nnew       spec/controllers/post_controller_spec.cr\nnew       src/controllers/post_controller.cr\nrewritten src/views/layouts/_nav.slang\nnew       src/views/post/_form.slang\nnew       src/views/post/edit.slang\nnew       src/views/post/index.slang\nnew       src/views/post/new.slang\nnew       src/views/post/show.slang\n```\n\nIf 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:\n\n```text\n$ amber generate scaffold PostComment post:reference body:text\n# OR\n$ amber generate scaffold post_comment post:reference body:text\n```\n\n```bash\nRendering Scaffold post_comment\nnew       db/migrations/20171114103306763_create_post_comment.sql\nskipped   spec/models/spec_helper.cr\nnew       spec/models/post_comment_spec.cr\nnew       src/models/post_comment.cr\nskipped   spec/controllers/spec_helper.cr\nnew       spec/controllers/post_comment_controller_spec.cr\nnew       src/controllers/post_comment_controller.cr\nrewritten src/views/layouts/_nav.slang\nnew       src/views/post_comment/_form.slang\nnew       src/views/post_comment/edit.slang\nnew       src/views/post_comment/index.slang\nnew       src/views/post_comment/new.slang\nnew       src/views/post_comment/show.slang\n```\n\n### Auth\n\n```bash\n$ amber g auth User\n```\n\n```bash\nRendering Auth user\nnew       db/migrations/20171019214851_create_user.sql\nnew       db/seeds.cr\nnew       spec/controllers/spec_helper.cr\nnew       spec/models/spec_helper.cr\nnew       spec/models/user_spec.cr\nnew       src/controllers/registration_controller.cr\nnew       src/controllers/session_controller.cr\nnew       src/handlers/authenticate.cr\nnew       src/models/user.cr\nrewritten src/views/layouts/_nav.slang\nnew       src/views/registration/new.slang\nnew       src/views/session/new.slang\n```\n\n### Model\n\n```bash\n$ amber g model Person name:string age:integer\n```\n\n```bash\nRendering Model person\nnew       db/migrations/20171019214940_create_person.sql\nskipped   spec/models/spec_helper.cr\nnew       spec/models/person_spec.cr\nnew       src/models/person.cr\n```\n\n### Controller\n\n```bash\n$ amber g controller Person index:get show:get create:post update:patch\n```\n\n```bash\nRendering Controller person\nskipped   spec/controllers/spec_helper.cr\nnew       spec/controllers/person_controller_spec.cr\nnew       src/controllers/person_controller.cr\n```\n\n### API\n\n```bash\n$ amber g api Person name:string age:integer\n```\n\n```bash\n04:09:54 Generate   | (INFO) Generating Amber::CLI::Api\n04:09:54 Generate   | (INFO) new       spec/models/person_spec.cr\n04:09:54 Generate   | (INFO) identical spec/models/spec_helper.cr\n04:09:54 Generate   | (INFO) new       src/models/person.cr\n04:09:54 Generate   | (INFO) new       db/migrations/20191031160954280_create_person.sql\nFormat ./config/routes.cr\n04:09:54 Generate   | (INFO) new       spec/controllers/person_controller_spec.cr\n04:09:54 Generate   | (INFO) identical spec/controllers/spec_helper.cr\n04:09:54 Generate   | (INFO) new  \n```\n\n## Recipes\n\nRecipes 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."}