quickproj

Flexible project creation for minimalists

Features

Example of usage

Quick start

  1. Download executable/binary file in according to the used operation system from the releases page.

  2. Link executable/binary file to operation system, so you could invoke quickproj everywhere:

  3. After it you can call the quickproj command from any folder. For more information about acceptable arguments and options for each command, call any desired command with the --help option.

F.A.Q.

Q: What is the purpose of this tool?
A: I made it for easier developing new projects from the scratch. By defining the used templates you have more granular control over your needs and how to prepare the new project.

Q: Is it possible to run commands in the multi-threaded mode?
A: No, it isn't possible to run the command in multi-threaded at the moment. Although the existing code base can be easily changed for those things, but for prevent "killing" your hard drive with massive I/O operations, I've decided to left it simple as much as possible.

Templates structure

Each installed template has to have configuration file (named as the config.json) in the root template folder and files that needs to copy or generate for the new project.

Configuration parameters

As the example we will take and modify one of the existing templates for the quickproj (original file) application: ```json

{ "files":{ "sources": [ { "from": "sources", "to": "." } ], "generated": [ "configs/{{ terraformsageenvironment }}/variables.tfvars" ], "directories": [ "configs/{{ terraformsageenvironment }}" ], "templates": { "variables.tfvars": "templates/variables.tfvars" } }, "variables": { "terraformsageenvironment": [ "dev", "production", "staging" ], }, "scripts": { "afterinit": [ "ls -al" ] }, "storage": { "variables": { "servicename": "service" } } } `` The configuration file must be saved in the root directory of the template with theconfig.jsonfile name. Otherwise, thequickproj` application will ignore the user's template.

Files section

The main section of the configuration file of the template. It stores the information about what files and folders need to create, copy or generate. - sources

This section stores paths to the used folders for copying files. Each record must have the following keys:  
 - The `from` key means the relative path to the template folder from which files need to copy to the target directory.
 - The `to` key means the relative path in the target folder in which files have to be copied from the source directory.

Variables section

Optional section which stores all variables that can be used during the project generation and can be overridden by the user if was specified the --override-all or the --override options in CLI.

Each variable, specified in this section has to met the following requirements: - The key can be represented only as the string type. - The value can be represented as the string or as the array of strings types.

Key / values pairs that won't met the requirements will be ignored and not used during the project generation.

During the overriding stage (when the CLI will ask you to specify the value to override), you can specify any correct values for the certain types:

Hitting the Enter key or setting the empty string for the certain key will lead to using the default value, specified in the configuration.

Scripts section

Optional section that describes a list of commands/scripts that could be executed during the template installation process.

Storage section

Optional section which is using as the storage for the template data, without giving an access to endusers to override them.

License

The quickproj is published under BSD license. For more details read the LICENSE file.