@push.rocks/smartdaemon 2.15.0 → 2.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/smartdaemon.classes.systemdmanager.js +2 -6
- package/dist_ts/smartdaemon.classes.templatemanager.d.ts +6 -0
- package/dist_ts/smartdaemon.classes.templatemanager.js +22 -8
- package/dist_ts/smartdaemon.plugins.d.ts +2 -2
- package/dist_ts/smartdaemon.plugins.js +3 -3
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/smartdaemon.classes.systemdmanager.ts +3 -5
- package/ts/smartdaemon.classes.templatemanager.ts +22 -7
- package/ts/smartdaemon.plugins.ts +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartdaemon',
|
|
6
|
-
version: '2.15.
|
|
6
|
+
version: '2.15.1',
|
|
7
7
|
description: 'Start scripts as long running daemons and manage them.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHdEQUF3RDtDQUN0RSxDQUFBIn0=
|
|
@@ -77,14 +77,10 @@ export class SmartDaemonSystemdManager {
|
|
|
77
77
|
async getServices() {
|
|
78
78
|
const existingServices = [];
|
|
79
79
|
if (await this.checkElegibility()) {
|
|
80
|
-
const smartfmInstance = new plugins.smartfm.Smartfm({
|
|
81
|
-
fmType: 'yaml',
|
|
82
|
-
});
|
|
83
80
|
const availableServices = await this.smartFs.directory(paths.systemdDir).filter('smartdaemon_*.service').list();
|
|
84
81
|
for (const serviceFile of availableServices) {
|
|
85
82
|
const serviceFileContent = await this.smartFs.file(serviceFile.path).encoding('utf8').read();
|
|
86
|
-
const data =
|
|
87
|
-
.data;
|
|
83
|
+
const data = (await plugins.smartmarkdown.parseCommentFrontmatter(serviceFileContent.toString(), '# ')).data;
|
|
88
84
|
const service = await SmartDaemonService.createFromOptions(this.smartdaemonRef, data);
|
|
89
85
|
service.alreadyExists = true;
|
|
90
86
|
existingServices.push(service);
|
|
@@ -150,4 +146,4 @@ export class SmartDaemonSystemdManager {
|
|
|
150
146
|
}
|
|
151
147
|
}
|
|
152
148
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYWVtb24uY2xhc3Nlcy5zeXN0ZW1kbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0ZGFlbW9uLmNsYXNzZXMuc3lzdGVtZG1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBRUwsa0JBQWtCLEdBQ25CLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxTQUFTO2FBQ00seUJBQW9CLEdBQUcsYUFBYSxBQUFoQixDQUFpQjtJQUU3QyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsY0FBc0I7UUFDbkUsT0FBTyxHQUFHLHlCQUF5QixDQUFDLG9CQUFvQixJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFTSxNQUFNLENBQUMsNkJBQTZCLENBQUMsY0FBc0I7UUFDaEUsT0FBTyxHQUFHLHlCQUF5QixDQUFDLGdDQUFnQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7SUFDakcsQ0FBQztJQUVNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxjQUFzQjtRQUNoRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQix5QkFBeUIsQ0FBQyw2QkFBNkIsQ0FBQyxjQUFjLENBQUMsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFZRCxZQUFZLGlCQUE4QixFQUFFLGVBQXdCO1FBSjdELGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFJN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxPQUFP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
|
|
@@ -4,5 +4,11 @@ export declare class SmartDaemonTemplateManager {
|
|
|
4
4
|
smartdaemonRef: SmartDaemon;
|
|
5
5
|
constructor(smartdaemonRefArg: SmartDaemon);
|
|
6
6
|
private generateEnvironmentLines;
|
|
7
|
+
/**
|
|
8
|
+
* renders the service options as the commented YAML frontmatter block that getServices() reads back.
|
|
9
|
+
* Every value is written as a double-quoted YAML scalar (JSON string syntax is valid YAML), so values
|
|
10
|
+
* containing ": ", " #", quotes or line breaks round-trip unchanged and stay on their comment line.
|
|
11
|
+
*/
|
|
12
|
+
private generateFrontmatterLines;
|
|
7
13
|
generateUnitFileForService: (serviceArg: SmartDaemonService) => string;
|
|
8
14
|
}
|
|
@@ -5,13 +5,7 @@ export class SmartDaemonTemplateManager {
|
|
|
5
5
|
this.generateUnitFileForService = (serviceArg) => {
|
|
6
6
|
const environmentLines = this.generateEnvironmentLines(serviceArg);
|
|
7
7
|
return `# ---
|
|
8
|
-
|
|
9
|
-
# version: ${serviceArg.version}
|
|
10
|
-
# description: ${serviceArg.description}
|
|
11
|
-
# command: ${serviceArg.command}
|
|
12
|
-
# workingDir: ${serviceArg.workingDir}${serviceArg.user ? `
|
|
13
|
-
# user: ${serviceArg.user}` : ''}${serviceArg.group ? `
|
|
14
|
-
# group: ${serviceArg.group}` : ''}
|
|
8
|
+
${this.generateFrontmatterLines(serviceArg)}
|
|
15
9
|
# ---
|
|
16
10
|
[Unit]
|
|
17
11
|
Description=${serviceArg.description}
|
|
@@ -50,5 +44,25 @@ WantedBy=multi-user.target
|
|
|
50
44
|
})
|
|
51
45
|
.join('\n');
|
|
52
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* renders the service options as the commented YAML frontmatter block that getServices() reads back.
|
|
49
|
+
* Every value is written as a double-quoted YAML scalar (JSON string syntax is valid YAML), so values
|
|
50
|
+
* containing ": ", " #", quotes or line breaks round-trip unchanged and stay on their comment line.
|
|
51
|
+
*/
|
|
52
|
+
generateFrontmatterLines(serviceArg) {
|
|
53
|
+
const entries = [
|
|
54
|
+
['name', serviceArg.name],
|
|
55
|
+
['version', serviceArg.version],
|
|
56
|
+
['description', serviceArg.description],
|
|
57
|
+
['command', serviceArg.command],
|
|
58
|
+
['workingDir', serviceArg.workingDir],
|
|
59
|
+
['user', serviceArg.user || undefined],
|
|
60
|
+
['group', serviceArg.group || undefined],
|
|
61
|
+
];
|
|
62
|
+
return entries
|
|
63
|
+
.filter((entry) => entry[1] !== undefined)
|
|
64
|
+
.map(([key, value]) => `# ${key}: ${JSON.stringify(value)}`)
|
|
65
|
+
.join('\n');
|
|
66
|
+
}
|
|
53
67
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYWVtb24uY2xhc3Nlcy50ZW1wbGF0ZW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhZW1vbi5jbGFzc2VzLnRlbXBsYXRlbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEUsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUFZLGlCQUE4QjtRQXNDbkMsK0JBQTBCLEdBQUcsQ0FBQyxVQUE4QixFQUFFLEVBQUU7WUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkUsT0FBTztFQUNULElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUM7OztjQUc3QixVQUFVLENBQUMsV0FBVzs7Ozs7YUFLdkIsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7T0FDeEIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0MsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0VBQ25ELGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7NkJBQ0ksVUFBVSxDQUFDLFVBQVUsT0FBTyxVQUFVLENBQUMsT0FBTzttQkFDeEQsVUFBVSxDQUFDLFVBQVU7Ozs7Ozs7Ozs7Q0FVdkMsQ0FBQztRQUNBLENBQUMsQ0FBQztRQWhFQSxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0lBQzFDLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxVQUE4QjtRQUM3RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQy9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEdBQUcsQ0FBQztRQUNoRCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx3QkFBd0IsQ0FBQyxVQUE4QjtRQUM3RCxNQUFNLE9BQU8sR0FBd0M7WUFDbkQsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN6QixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQy9CLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDdkMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUMvQixDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQ3JDLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO1lBQ3RDLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDO1NBQ3pDLENBQUM7UUFDRixPQUFPLE9BQU87YUFDWCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQTZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDO2FBQ3BFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7Q0E4QkYifQ==
|
|
@@ -8,11 +8,11 @@ import * as os from 'node:os';
|
|
|
8
8
|
export type { Stats } from 'node:fs';
|
|
9
9
|
export { path, childProcess, fs, fsConstants, crypto, util, os };
|
|
10
10
|
import * as lik from '@push.rocks/lik';
|
|
11
|
-
import * as smartfm from '@push.rocks/smartfm';
|
|
12
11
|
import * as smartfs from '@push.rocks/smartfs';
|
|
13
12
|
import * as smartlog from '@push.rocks/smartlog';
|
|
14
13
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
14
|
+
import * as smartmarkdown from '@push.rocks/smartmarkdown/iso';
|
|
15
15
|
import * as smartpath from '@push.rocks/smartpath';
|
|
16
16
|
import * as smartshell from '@push.rocks/smartshell';
|
|
17
17
|
import * as smartsystem from '@push.rocks/smartsystem';
|
|
18
|
-
export { lik,
|
|
18
|
+
export { lik, smartfs, smartlog, smartlogDestinationLocal, smartmarkdown, smartpath, smartshell, smartsystem, };
|
|
@@ -9,13 +9,13 @@ import * as os from 'node:os';
|
|
|
9
9
|
export { path, childProcess, fs, fsConstants, crypto, util, os };
|
|
10
10
|
// @pushrocks scope
|
|
11
11
|
import * as lik from '@push.rocks/lik';
|
|
12
|
-
import * as smartfm from '@push.rocks/smartfm';
|
|
13
12
|
import * as smartfs from '@push.rocks/smartfs';
|
|
14
13
|
import * as smartlog from '@push.rocks/smartlog';
|
|
15
14
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
15
|
+
import * as smartmarkdown from '@push.rocks/smartmarkdown/iso';
|
|
16
16
|
import * as smartpath from '@push.rocks/smartpath';
|
|
17
17
|
import * as smartshell from '@push.rocks/smartshell';
|
|
18
18
|
import * as smartsystem from '@push.rocks/smartsystem';
|
|
19
|
-
export { lik,
|
|
19
|
+
export { lik, smartfs, smartlog, smartlogDestinationLocal, smartmarkdown, smartpath, smartshell, smartsystem, };
|
|
20
20
|
// third party
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYWVtb24ucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0ZGFlbW9uLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxJQUFJLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuRCxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUc5QixPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFFakUsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyx3QkFBd0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEtBQUssYUFBYSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFDTCxHQUFHLEVBQ0gsT0FBTyxFQUNQLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsYUFBYSxFQUNiLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxHQUNaLENBQUM7QUFFRixjQUFjIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartdaemon",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Start scripts as long running daemons and manage them.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@push.rocks/lik": "^6.4.1",
|
|
36
|
-
"@push.rocks/smartfm": "^2.2.2",
|
|
37
36
|
"@push.rocks/smartfs": "^1.5.1",
|
|
38
37
|
"@push.rocks/smartlog": "^3.2.2",
|
|
39
38
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
39
|
+
"@push.rocks/smartmarkdown": "^3.3.0",
|
|
40
40
|
"@push.rocks/smartpath": "^6.0.0",
|
|
41
41
|
"@push.rocks/smartshell": "^3.3.8",
|
|
42
42
|
"@push.rocks/smartsystem": "^3.0.8"
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -101,14 +101,12 @@ export class SmartDaemonSystemdManager {
|
|
|
101
101
|
public async getServices() {
|
|
102
102
|
const existingServices: SmartDaemonService[] = [];
|
|
103
103
|
if (await this.checkElegibility()) {
|
|
104
|
-
const smartfmInstance = new plugins.smartfm.Smartfm({
|
|
105
|
-
fmType: 'yaml',
|
|
106
|
-
});
|
|
107
104
|
const availableServices = await this.smartFs.directory(paths.systemdDir).filter('smartdaemon_*.service').list();
|
|
108
105
|
for (const serviceFile of availableServices) {
|
|
109
106
|
const serviceFileContent = await this.smartFs.file(serviceFile.path).encoding('utf8').read();
|
|
110
|
-
const data =
|
|
111
|
-
.
|
|
107
|
+
const data = (
|
|
108
|
+
await plugins.smartmarkdown.parseCommentFrontmatter(serviceFileContent.toString(), '# ')
|
|
109
|
+
).data as unknown as ISmartDaemonServiceConstructorOptions;
|
|
112
110
|
const service = await SmartDaemonService.createFromOptions(this.smartdaemonRef, data);
|
|
113
111
|
service.alreadyExists = true;
|
|
114
112
|
existingServices.push(service);
|
|
@@ -21,16 +21,31 @@ export class SmartDaemonTemplateManager {
|
|
|
21
21
|
.join('\n');
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* renders the service options as the commented YAML frontmatter block that getServices() reads back.
|
|
26
|
+
* Every value is written as a double-quoted YAML scalar (JSON string syntax is valid YAML), so values
|
|
27
|
+
* containing ": ", " #", quotes or line breaks round-trip unchanged and stay on their comment line.
|
|
28
|
+
*/
|
|
29
|
+
private generateFrontmatterLines(serviceArg: SmartDaemonService): string {
|
|
30
|
+
const entries: Array<[string, string | undefined]> = [
|
|
31
|
+
['name', serviceArg.name],
|
|
32
|
+
['version', serviceArg.version],
|
|
33
|
+
['description', serviceArg.description],
|
|
34
|
+
['command', serviceArg.command],
|
|
35
|
+
['workingDir', serviceArg.workingDir],
|
|
36
|
+
['user', serviceArg.user || undefined],
|
|
37
|
+
['group', serviceArg.group || undefined],
|
|
38
|
+
];
|
|
39
|
+
return entries
|
|
40
|
+
.filter((entry): entry is [string, string] => entry[1] !== undefined)
|
|
41
|
+
.map(([key, value]) => `# ${key}: ${JSON.stringify(value)}`)
|
|
42
|
+
.join('\n');
|
|
43
|
+
}
|
|
44
|
+
|
|
24
45
|
public generateUnitFileForService = (serviceArg: SmartDaemonService) => {
|
|
25
46
|
const environmentLines = this.generateEnvironmentLines(serviceArg);
|
|
26
47
|
return `# ---
|
|
27
|
-
|
|
28
|
-
# version: ${serviceArg.version}
|
|
29
|
-
# description: ${serviceArg.description}
|
|
30
|
-
# command: ${serviceArg.command}
|
|
31
|
-
# workingDir: ${serviceArg.workingDir}${serviceArg.user ? `
|
|
32
|
-
# user: ${serviceArg.user}` : ''}${serviceArg.group ? `
|
|
33
|
-
# group: ${serviceArg.group}` : ''}
|
|
48
|
+
${this.generateFrontmatterLines(serviceArg)}
|
|
34
49
|
# ---
|
|
35
50
|
[Unit]
|
|
36
51
|
Description=${serviceArg.description}
|
|
@@ -12,20 +12,20 @@ export { path, childProcess, fs, fsConstants, crypto, util, os };
|
|
|
12
12
|
|
|
13
13
|
// @pushrocks scope
|
|
14
14
|
import * as lik from '@push.rocks/lik';
|
|
15
|
-
import * as smartfm from '@push.rocks/smartfm';
|
|
16
15
|
import * as smartfs from '@push.rocks/smartfs';
|
|
17
16
|
import * as smartlog from '@push.rocks/smartlog';
|
|
18
17
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
18
|
+
import * as smartmarkdown from '@push.rocks/smartmarkdown/iso';
|
|
19
19
|
import * as smartpath from '@push.rocks/smartpath';
|
|
20
20
|
import * as smartshell from '@push.rocks/smartshell';
|
|
21
21
|
import * as smartsystem from '@push.rocks/smartsystem';
|
|
22
22
|
|
|
23
23
|
export {
|
|
24
24
|
lik,
|
|
25
|
-
smartfm,
|
|
26
25
|
smartfs,
|
|
27
26
|
smartlog,
|
|
28
27
|
smartlogDestinationLocal,
|
|
28
|
+
smartmarkdown,
|
|
29
29
|
smartpath,
|
|
30
30
|
smartshell,
|
|
31
31
|
smartsystem,
|