UNPKG

1.56 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const { QUEUE_ROOT } = require('@knetik/micro-queue');
4const program = require('commander');
5const path = require('path');
6const fs = require('fs');
7const Mustache = require('mustache');
8const Inflector = require('inflected');
9
10program
11 .version('0.0.1')
12 .usage('[options]')
13 .parse(process.argv);
14
15let template = "";
16let rendered = "";
17const job_name = program.args[0];
18const filename = `${job_name}.job.js`;
19
20if (!job_name) {
21 throw new Error('job name parameter missing!!');
22}
23
24getTemplate()
25 .then(_template => template = _template)
26 .then(createTemplate)
27 .then(_rendered => rendered = _rendered)
28 .then(createDir)
29 .then(writeFile)
30 .catch(err => console.log(err));
31
32function getTemplate() {
33 return new Promise((resolve, reject) => {
34 const templatePath = path.join(QUEUE_ROOT, '..', 'templates', 'job.mustache');
35 fs.readFile(templatePath, 'utf8', (err, data) => {
36 if (err) reject(err);
37 resolve(data);
38 });
39 });
40}
41
42function createTemplate() {
43 return Mustache.render(template, {
44 name: Inflector.classify(job_name)
45 });
46}
47
48function createDir() {
49 return new Promise((resolve, reject) => {
50 const dir = path.join(process.cwd(), 'app', 'jobs');
51
52 if (!fs.existsSync(dir)) {
53 fs.mkdirSync(dir);
54 }
55
56 resolve('done');
57 });
58}
59
60function writeFile() {
61 return new Promise((resolve, reject) => {
62 const jobPath = path.join(process.cwd(), 'app', 'jobs', filename);
63 fs.writeFile(jobPath, rendered, (err) => {
64 if (err) reject(err);
65 resolve('done');
66 });
67 });
68}