ros-template(1)

ros-template - Edit template for ros-init

synopsis

Subcommands

init template-name

Create new template in local-project directory.

deinit template-name

Remove a template from local-project directory.

list

Show file list and states of the files type chmod rewrite in templates.

checkout [template-name]

When invoked without template-name,this command shows candidates for current templates to operate.If with template-name, this command choose the name as current template.

add [template-name] [files …]

Add files to current template.First parameter could taken as a template-name when current template are default.

cat [template-name] [files …]

Show contents in the current template.

edit [template-name] [files …]

Edit content of files in template using /usr/bin/editor.

path [template-name] [files …]

Show native path of files in template.

rm [template-name] [files …]

Remove file form current template.

type [template-name] [type] [files …]

Change file type. current choice for types are djula or copy {{name}} {{author}} {{email}} {{universal_time}} are available variable in the template file. Withoug files, change default type.

chmod [template-name] [mode] [files …]

Change file mode bits to generate. specify mode in octal format.

rewrite [template-name] file rewrite-rule

Change file name using djula template.Variables {{name}} {{author}} {{email}} {{universal_time}} are available for rewrite-rule.

export [template-name] [directory]

Export files in current template to current directory.

import [directory]

Import template in current directory

help

Show the subcommand help.

Description

The ros-template(1) command manages templates of projects.

Create template

First, the init sub-command creates an empty template.

$ ros template init sample-template

Many of sub-commands take a template name as first argument. But you can omit it by the checkout sub-commands. After the following, such sub-commands are applied to sample-template.

$ ros template checkout sample-template

Next, the add sub-command adds local file[s] to template. Then, the list sub-command shows information of files in template.

$ echo "Hello {{ author }}!!" > sample.txt
$ ros template add sample.txt
$ ros template list
      copy  sample.txt 

The word copy means a strategy when applying the template. There are the following 2 strategies.

The type sub-command changes it. In addition, default strategy (copy) can be changed for each template by the type sub-command without file names (Ex. ros template type djula).

$ ros template type djula sample.txt
$ ros template list
      djula sample.txt 

The sample.txt will be simply output as sample.txt in default. But you can change it by the rewrite sub-command. In the following example, it will be output as sample_<project name>.txt.

$ ros template rewrite sample.txt "sample-{{ name }}.txt"
$ ros template list
      djula sample.txt -> "sample-{{ name }}.txt"

Note: Rewrite rules are always processed by Djula irrespective of strategy of the file.

Apply template

ros-init(1) can specify a template.

$ mkdir temp ; cd temp
$ ros init sample-template some-project
$ ls
sample-some-project.txt
$ cat sample-some-project.txt # Assume that "author" is "alien"
Hello alien!!

The file name and its content are processed by Djula as explained in the above. The following variables can be used in defaut.

In addition, you can use original variables as the followings.

$ echo "Hello {{ area }}!!" > sample.txt
$ ros template add sample.txt # Note: It overwrites existing
$ mkdir temp ; cd temp
$ ros init sample-template roswell --area 51
$ cat sample-roswell.txt
Hello 51!!

Export and import template

Basically, ros-template(1) is designed to internally manage added files.

However, if you want to, for example, manage it using Git in a local directory or to install distributed templates, you can use the export and import sub-commands.

First, the export sub-command exports added files and a setting file roswell.init.<template name>.asd that is internally created and editted.

$ ros template export dir
$ ls dir
roswell.init.sample-template.asd  sample.txt
$ cat dir/sample.txt
Hello {{ area }}!!

Second, the import sub-command imports them.

# Assume that this is another machine...
$ ros template list sample-template # nothing is output 
$ ls downloaded
roswell.init.sample-template.asd  sample.txt
$ ros template import downloaded
$ ros template list sample-template
      djula sample.txt -> "sample-{{ name }}.txt"

Note: If there is a template whose name is same, it will be overwritten.

SEE ALSO

ros(1) ros-init(1) _