create-ut
v1.3.7
Published
Tool for creating UT microservices and applications
Downloads
40
Maintainers
Readme
create-ut
Tool for creating applications
, microservices
, ports
, etc.,
based on UnderTree framework.
Usage
Use with npm init
User creates application
, microservice
, port
or anything else by running:
create
application
in the current folder namedimpl-*
npm init ut npm init ut app[-kind]
create
application
in a new folder namedimpl-name
npm init ut app[-kind] impl-name
create
microservice
in the current folder namedut-*
npm init ut ms[-kind] npm init ut service[-kind] npm init ut microservice[-kind]
create
microservice
in new folder namedut-name
npm init ut ms[-kind] ut-name npm init ut service[-kind] ut-name npm init ut microservice[-kind] ut-name
create
port
in the current folder namedut-port-*
npm init ut port[-kind]
create
port
in new folder namedut-port-name
npm init ut port[-kind] ut-port-name
modify a local repo based on its
.ut-create
definitionnpm init ut path-to-repo
Algorithm
Clone latest version of package
impl-application[-kind]
orut-microservice[-kind]
. Obtain repository by usingpackage-json
in a way similar to:const gitUrl = async () => await require('package-json')('impl-application', {registryUrl: 'nexus.softwaregroup.com'})).repository.url }
Require the module
.ut-create
in the cloned folder, having the following structure:module.exports = { params: { schema: { properties: { id: { type: 'string', title: 'Package identifier' }, title: { type: 'string', title: 'Package title' }, userName: { type: 'string', title: 'User name', default: 'based on output from git config --get user.email' } }, required: ['id', 'title', 'userName'] }, uiSchema: { } }, rename: ({id, title, userName}) => [{ files: 'server/**/*.js', replace: [ /implementation: 'product'/, `implementation: '${id}'` ] }, { files: 'server/**/*.json', replace: [ /"implementation": "product"/, `"implementation": '${id}'` ] }, { files: 'ut_*_rc', // example is for YAML based rc replace: [[ /database: impl-firstName-lastName/, `database: impl-${userName.split('.').join('-')}` ],[ /user: firstName\.lastName/, `user: ${userName}` ]] } /*etc*/] };
Use
ut-form-jsonschema
to create a form based on theparams
property increate.js
. Usually the following parameters are required:- package
id
- for example "agency" - package
title
- for example "Agency banking" - developer
userName
- as used by gitfirst.last
@softwaregroup.com, can be retrieved withgit config --get user.email
Start the default browser with the form URL and wait for the form to be submitted
- package
Do string replacement by using the information returned by the
rename
function increate.js
. The propertyfiles
specifies a glob pattern for files to be searched. The string or regular expression inreplace
array first element is used to find text to be replaced by the expression in thereplace
array second element (as in string.replace). Ifreplace
is array of arrays, apply the replacement multiple times.Change git remote:
git remote set-url origin git@xxx:yyy/zzz.git
Create Jenkins job
TODO add description
Configure git web hook to trigger Jenkins job
TODO add description