gen_template_project v0.1.8 Mix.Gen.Template.Project

Project: a new mix template for projects

This is an alternative for mix new, creating what I feel is an easier to read and maintain set of basic files.

You use it in combination with the mix gen mix task, which you will need to install.

New Project Template

    mix gen project «name» [ --into «path» ] [--sup[ervisor]] [--app[lication] «app»] [--module «module»]

Install

This template is installed using the template.install mix task. Projects are generated from it using the mix gen task.

So, before using templates for the first time, you need to install these two tasks:

$ mix archive.install mix_templates
$ mix archive.install mix_generator

Then you can install this template using

$ mix template.install gen_template_project

Use

To create a basic project, with no supervision and no application, run:

$ mix gen project «project_name»

«project_name» is both the name of the subdirectory that will hold the project and the name that will be given to the application. This affects entries in mix.exs as well as the names of the main file in lib/ and the skeleton test in test/. The application module name will be the camelcase version of «name».

By default the subdirectory will be created under your current directory; you can change this with the --into option:

$ mix gen project «project_name» --into some/other/dir

Variants

To create a project with a top-level supervisor contained in an application callback, use the --sup (or --supervisor) option.

$ mix gen project «project_name» --sup

The application’s start function is created in lib/«name»/application.ex, along with a basic supervisor.

You can change the name used for the application:

$ mix gen project «project_name» --app[lication] «app»

The original «project_name» parameter will be the name used for the directory, and «app» will be used when creating file names in that directory and when customizing the file contents.

Finally, you can override the name used for the application module:

$ mix gen project «project_name» --module «Module»

«Module» must be a valid Elixir module name or alias.

Summary

Functions

Return the name of this template as an atom. This is the name passed to the gen command

Override this function to process command line options and set values passed into the template via assigns

Return the short description of this template, or nil

Return the absolute path to the tree that is to be copied when instantiating this template. This top-level dir will typically just contain a directory called $APP_NAME$

Functions

name()

Return the name of this template as an atom. This is the name passed to the gen command.

populate_assigns(assigns, options)

Override this function to process command line options and set values passed into the template via assigns.

short_desc()

Return the short description of this template, or nil.

source_dir()

Return the absolute path to the tree that is to be copied when instantiating this template. This top-level dir will typically just contain a directory called $APP_NAME$.