cctm 0.2
cookie cutter template manager
License: mit

cctm
========================================

CCTM = cookie cutter template manager

project templates manager for `cookiecutter <https://github.com/audreyr/cookiecutter>`_

(python3 only)


quick examples
----------------------------------------

.. code-block:: bash

 $ cctm init
 $ cctm selfupdate
 $ cctm install audreyr/cookiecutter-pypackage
 $ cctm use audreyr/cookiecutter-pypackage

 # alias
 $ cctm management alias audreyr/cookiecutter-pypackage pypackage
 $ cctm use pypackage

 # extra_context configuration
 $ cctm config --name=full_name --value=podhmo.podhmo
 $ cctm use pypackage

setup
----------------------------------------

.. code-block:: bash

  $ pip install cctm

cctm uses individual configuration file(cctm.json).

searching cctm.json
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

searching method is here.

first, from current working directory, searching "cctm.json" file, recuresively.

e.g. if cwd is `~/foo/bar/boo`. searching below paths.

#. ~/foo/bar/boo/cctm.json
#. ~/foo/bar/cctm.json
#. ~/foo/cctm.json
#. ~/cctm.json

second, if cctm.json is not found on first process, then, using `~/.cctm/cctm.json` (default path)

generating configuration file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

generating configuration file via `cctm init`.

.. code-block:: bash

  $ cctm init

  # if generating configuration file as current working directory
  $ cctm init --project=.

package information
----------------------------------------

listing package information via `cctm list`

.. code-block:: bash

  $ cctm list | grep pypackage
  kragniz/cookiecutter-pypackage-minimal(12) -- A minimal template for python packages
  audreyr/cookiecutter-pypackage(555) -- Cookiecutter template for a Python package.
  pypackage -> audreyr/cookiecutter-pypackage  # this is alias

show detail via `cctm show`

.. code-block:: bash

  $ cctm show audreyr/cookiecutter-pypackage
  {
    "updated_at": "2016-01-08T22:53:23Z",
    "url": "https://github.com/audreyr/cookiecutter-pypackage",
    "name": "audreyr/cookiecutter-pypackage",
    "description": "Cookiecutter template for a Python package.",
    "star": 555,
    "created_at": "2013-07-14T18:52:05Z"
  }

using cookiecutter
----------------------------------------

installing cookiecutter template
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

installing the template via `cctm install`

.. code-block:: bash

  $ cctm install chrisdev/wagtail-cookiecutter-foundation

  # wagtail-cookiecutter-foundation is installed
  $ cctm list --installed
  audreyr/cookiecutter-pypackage
  chrisdev/wagtail-cookiecutter-foundation

using cookiecutter template
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

using installed template via `cctm use`

.. code-block:: bash

  $ cctm use chrisdev/wagtail-cookiecutter-foundation

if you are irritated by long-long-name, `cctm management alias` is helpful, maybe.

.. code-block:: bash

  $ cctm management alias chrisdev/wagtail-cookiecutter-foundation mywagtail
  $ cctm list --alias | grep wagtail
  mywagtail -> chrisdev/wagtail-cookiecutter-foundation
  $ cctm use mywagtail  # it's is also ok.

default configuration settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

if you want to set a default context, using `cctm config`

.. code-block:: bash

  # show configuration
  $ cctm config | jq .extra_context
  {
    "name": "podhmo",
  }
  # edit configuration
  $ cctm config --name=project_name --value=hello
  # delete configuration
  $ cctm config --name=project_name

extra_context attribute in config file is using as cookiecutter's extra context, so.

.. code-block:: bash

  $ cctm use mywagtail
  project_name [Wagtail Project]:  # cancel

  $ cctm config --name=project_name --value=hello
  $ cctm use mywagtail
  project_name [hello]:

your custom repositories
----------------------------------------

if you store url in `repositories` of configration file, cctm recognizes as package repositoriy.

default reposotiries are here. ::

  "repositories": [
    "https://raw.githubusercontent.com/podhmo/cctm/master/data/cookiecutter.index.json"
  ]

package format example ::

  {
    "name": "chrisdev/wagtail-cookiecutter-foundation",
    "url": "https://github.com/chrisdev/wagtail-cookiecutter-foundation",
    "description": "Cookiecutter template for Wagtail CMS using Zurb Foundation 5",
    "created_at": "2015-04-13T13:36:50Z",
    "updated_at": "2016-01-04T14:53:04Z",
    "star": 23
  }

if you know, github url, be able to fetch information via `cctm management fetch`

.. code-block:: bash

  $ cctm management fetch chrisdev/wagtail-cookiecutter-foundation
  {
    "name": "chrisdev/wagtail-cookiecutter-foundation",
    "url": "https://github.com/chrisdev/wagtail-cookiecutter-foundation",
    "description": "Cookiecutter template for Wagtail CMS using Zurb Foundation 5",
    "created_at": "2015-04-13T13:36:50Z",
    "updated_at": "2016-01-04T14:53:04Z",
    "star": 23
  }

  # store data at local.json
  $ cctm management fetch chrisdev/wagtail-cookiecutter-foundation --save --store=./local.json

please, don't forget to call `cctm selfupdate`. this command synchnonizes at local data and repositoriies data.

.. code-block:: bash

  $ cctm selfupdate


0.2

- build bug fix.