signalk-masterbus 0.2.1 → 0.3.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/README.md +28 -11
- package/bin/darwin-arm64/masterbus-signalk +0 -0
- package/bin/darwin-x64/masterbus-signalk +0 -0
- package/bin/linux-arm/masterbus-signalk +0 -0
- package/bin/linux-arm64/masterbus-signalk +0 -0
- package/bin/linux-x64/masterbus-signalk +0 -0
- package/bin/win32-x64/masterbus-signalk.exe +0 -0
- package/package.json +2 -2
- package/plugin/config.d.ts +20 -1
- package/plugin/config.d.ts.map +1 -1
- package/plugin/config.js +24 -3
- package/plugin/config.js.map +1 -1
- package/plugin/daemon.d.ts +45 -2
- package/plugin/daemon.d.ts.map +1 -1
- package/plugin/daemon.js +105 -15
- package/plugin/daemon.js.map +1 -1
- package/plugin/index.d.ts.map +1 -1
- package/plugin/index.js +7 -2
- package/plugin/index.js.map +1 -1
- package/plugin/shared.d.ts +46 -0
- package/plugin/shared.d.ts.map +1 -0
- package/plugin/shared.js +129 -0
- package/plugin/shared.js.map +1 -0
- package/public/assets/icon.svg +6 -0
package/README.md
CHANGED
|
@@ -39,11 +39,29 @@ download. Enable the plugin under **Server → Plugin Config → MasterBus**.
|
|
|
39
39
|
## Two ways to run it
|
|
40
40
|
|
|
41
41
|
**Bundled** (the default): the plugin starts `masterbus-signalk` on this
|
|
42
|
-
machine and keeps its configuration
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
machine and keeps its configuration under
|
|
43
|
+
`~/.signalk/plugin-config-data/signalk-masterbus/masterbus/`. The mapping
|
|
44
|
+
and the device schema cache are the ones the masterbus tools use on this
|
|
45
|
+
computer (on Linux `~/.config/masterbus/mapping.json` and
|
|
46
|
+
`~/.cache/masterbus`), so a change made in `masterbus-tui` shows up in
|
|
47
|
+
Signal K within seconds, and one made in the web editor is what the TUI
|
|
48
|
+
shows. _Mapping and schema cache_ set to _Plugin only_ keeps them in the
|
|
49
|
+
plugin's folder instead.
|
|
50
|
+
With _Transport_ on auto-detect it uses a plugged-in Mastervolt USB link.
|
|
51
|
+
It never picks a CAN interface, because on most Signal K computers the CAN
|
|
52
|
+
interface is the NMEA 2000 network: when the MasterBus is on CAN, set
|
|
53
|
+
_Transport_ to SocketCAN and _Device_ to the interface (for example `can1`).
|
|
54
|
+
Without a USB link and with no transport chosen, the daemon is not started
|
|
55
|
+
and the plugin status says so. Nothing listens beyond loopback.
|
|
56
|
+
|
|
57
|
+
When Signal K runs in a container, its home folder is usually not kept
|
|
58
|
+
when the container is recreated, so the plugin then keeps the mapping in
|
|
59
|
+
its own folder unless _Shared folder_ names one mounted from the host.
|
|
60
|
+
|
|
61
|
+
Upgrading from a version that kept the mapping in the plugin's folder
|
|
62
|
+
moves it to the shared place. If the tools already had a mapping of their
|
|
63
|
+
own, theirs is used and the plugin's is kept beside it as
|
|
64
|
+
`mapping.plugin-backup.json`; the plugin status says which file is in use.
|
|
47
65
|
|
|
48
66
|
**External**: the machine on the bus is not the one running Signal K. Run
|
|
49
67
|
`masterbus-signalk` there (its systemd unit is in the masterbus release
|
|
@@ -77,9 +95,8 @@ mandatory on any address other than loopback; the daemon refuses to start
|
|
|
77
95
|
without one. Give the plugin the host, the two ports and the same token.
|
|
78
96
|
|
|
79
97
|
**Going to bundled** needs only the selection, provided the Signal K host
|
|
80
|
-
is the one wired to the bus. Transport on auto-detect
|
|
81
|
-
|
|
82
|
-
has several.
|
|
98
|
+
is the one wired to the bus. Transport on auto-detect uses a plugged-in USB
|
|
99
|
+
link; for a MasterBus on CAN, choose SocketCAN and the interface.
|
|
83
100
|
|
|
84
101
|
Two things are not automatic:
|
|
85
102
|
|
|
@@ -117,9 +134,9 @@ install is not silent; treat it as a starting point. Diagnostics for the
|
|
|
117
134
|
saved mapping (a field the device does not have, a firmware that moved
|
|
118
135
|
on) are listed under the table.
|
|
119
136
|
|
|
120
|
-
The file being edited is the daemon's `mapping.json
|
|
121
|
-
`masterbus-tui --mapping` edits
|
|
122
|
-
install.
|
|
137
|
+
The file being edited is the daemon's `mapping.json`. In bundled mode
|
|
138
|
+
that is the one `masterbus-tui --mapping` edits too (see _Two ways to run
|
|
139
|
+
it_), so both can be used on the same install.
|
|
123
140
|
|
|
124
141
|
## Writes and the installer code
|
|
125
142
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "signalk-masterbus",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"masterbusDaemon": "0.4.
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"masterbusDaemon": "0.4.6",
|
|
5
5
|
"description": "Mastervolt MasterBus for Signal K: publish battery, charger and inverter values, edit the mapping in the browser, and switch devices from Signal K",
|
|
6
6
|
"main": "plugin/index.js",
|
|
7
7
|
"type": "module",
|
package/plugin/config.d.ts
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export type Mode = 'bundled' | 'external';
|
|
11
11
|
export type Transport = 'auto' | 'can' | 'usb';
|
|
12
|
+
export type Storage = 'shared' | 'plugin';
|
|
12
13
|
export interface BundledConfig {
|
|
13
|
-
/** `auto`
|
|
14
|
+
/** `auto` uses a plugged-in USB link; a CAN interface must be chosen. */
|
|
14
15
|
transport: Transport;
|
|
15
16
|
/** CAN interface name, or USB-link serial (blank = first). */
|
|
16
17
|
deviceName: string;
|
|
@@ -20,6 +21,10 @@ export interface BundledConfig {
|
|
|
20
21
|
streamPort: number;
|
|
21
22
|
/** A `masterbus-signalk` binary to run instead of the bundled one. */
|
|
22
23
|
binaryPath: string;
|
|
24
|
+
/** Mapping and schema cache: the masterbus tools' own, or the plugin's. */
|
|
25
|
+
storage: Storage;
|
|
26
|
+
/** The folder shared with the tools; blank = where the tools keep theirs. */
|
|
27
|
+
sharedDir: string;
|
|
23
28
|
}
|
|
24
29
|
export interface ExternalConfig {
|
|
25
30
|
host: string;
|
|
@@ -86,6 +91,20 @@ export declare const SCHEMA: {
|
|
|
86
91
|
minimum: number;
|
|
87
92
|
maximum: number;
|
|
88
93
|
};
|
|
94
|
+
storage: {
|
|
95
|
+
type: string;
|
|
96
|
+
title: string;
|
|
97
|
+
description: string;
|
|
98
|
+
enum: string[];
|
|
99
|
+
enumNames: string[];
|
|
100
|
+
default: string;
|
|
101
|
+
};
|
|
102
|
+
sharedDir: {
|
|
103
|
+
type: string;
|
|
104
|
+
title: string;
|
|
105
|
+
description: string;
|
|
106
|
+
default: string;
|
|
107
|
+
};
|
|
89
108
|
binaryPath: {
|
|
90
109
|
type: string;
|
|
91
110
|
title: string;
|
package/plugin/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEzC,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,SAAS,EAAE,SAAS,CAAA;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,aAAa,CAAA;IACtB,QAAQ,EAAE,cAAc,CAAA;IACxB,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,QAAQ,EAAE,MAmBtB,CAAA;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAWpD;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HlB,CAAA;AAKD,eAAO,MAAM,SAAS;;;;;;CAErB,CAAA"}
|
package/plugin/config.js
CHANGED
|
@@ -15,7 +15,9 @@ export const DEFAULTS = {
|
|
|
15
15
|
heartbeatMaster: '',
|
|
16
16
|
apiPort: 3010,
|
|
17
17
|
streamPort: 3009,
|
|
18
|
-
binaryPath: ''
|
|
18
|
+
binaryPath: '',
|
|
19
|
+
storage: 'shared',
|
|
20
|
+
sharedDir: ''
|
|
19
21
|
},
|
|
20
22
|
external: {
|
|
21
23
|
host: 'localhost',
|
|
@@ -57,8 +59,9 @@ export const SCHEMA = {
|
|
|
57
59
|
transport: {
|
|
58
60
|
type: 'string',
|
|
59
61
|
title: 'Transport',
|
|
60
|
-
description: 'Auto
|
|
61
|
-
'
|
|
62
|
+
description: 'Auto-detect uses a plugged-in Mastervolt USB link. It never picks a CAN interface, ' +
|
|
63
|
+
'because on most boats that is the NMEA 2000 network: for a MasterBus on CAN, choose ' +
|
|
64
|
+
'SocketCAN and enter the interface as Device.',
|
|
62
65
|
enum: ['auto', 'can', 'usb'],
|
|
63
66
|
enumNames: ['Auto-detect', 'SocketCAN (Linux)', 'Mastervolt USB link'],
|
|
64
67
|
default: 'auto'
|
|
@@ -91,6 +94,24 @@ export const SCHEMA = {
|
|
|
91
94
|
minimum: 1,
|
|
92
95
|
maximum: 65535
|
|
93
96
|
},
|
|
97
|
+
storage: {
|
|
98
|
+
type: 'string',
|
|
99
|
+
title: 'Mapping and schema cache',
|
|
100
|
+
description: 'Shared: use the same mapping.json and schema cache as masterbus-tui and the other ' +
|
|
101
|
+
'masterbus tools on this computer, so a change made in one shows up in the other. ' +
|
|
102
|
+
"Plugin only: keep them in the plugin's data folder. When Signal K runs in a " +
|
|
103
|
+
'container, sharing needs the folder below.',
|
|
104
|
+
enum: ['shared', 'plugin'],
|
|
105
|
+
enumNames: ['Shared with the masterbus tools', 'Plugin only'],
|
|
106
|
+
default: 'shared'
|
|
107
|
+
},
|
|
108
|
+
sharedDir: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
title: 'Shared folder (advanced)',
|
|
111
|
+
description: 'Leave blank to use the folder the masterbus tools use (on Linux ' +
|
|
112
|
+
'~/.config/masterbus). In a container, enter a folder mounted from the host.',
|
|
113
|
+
default: ''
|
|
114
|
+
},
|
|
94
115
|
binaryPath: {
|
|
95
116
|
type: 'string',
|
|
96
117
|
title: 'masterbus-signalk binary (advanced)',
|
package/plugin/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/plugin/daemon.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BundledConfig } from './config.js';
|
|
2
|
+
import { type Env } from './shared.js';
|
|
2
3
|
/** The directory under `bin/` that carries this platform's daemon. */
|
|
3
4
|
export declare function platformDir(platform?: string, arch?: string): string;
|
|
4
5
|
/**
|
|
@@ -8,13 +9,32 @@ export declare function platformDir(platform?: string, arch?: string): string;
|
|
|
8
9
|
* for the plugin status when neither exists.
|
|
9
10
|
*/
|
|
10
11
|
export declare function resolveBinary(binaryPath: string, from?: string): string;
|
|
12
|
+
/** Whether a Mastervolt USB link (USB vendor `1a64`) is plugged in, from sysfs. */
|
|
13
|
+
export declare function usbLinkPresent(root?: string): boolean;
|
|
14
|
+
/** What `renderConfigIni` needs to know about the machine. */
|
|
15
|
+
export interface Host {
|
|
16
|
+
platform: string;
|
|
17
|
+
usbLink: () => boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare const NO_USB_LINK: string;
|
|
11
20
|
/**
|
|
12
21
|
* The `config.ini` the daemon reads, rendered from the plugin's settings.
|
|
13
22
|
* With transport `auto` and a file already present, the file is left alone:
|
|
14
23
|
* the daemon auto-detected it on first run and the user may have edited it.
|
|
15
24
|
* Ports and the API address are always ours, so those keys are rewritten.
|
|
25
|
+
*
|
|
26
|
+
* With `auto` and no file yet, the daemon's own auto-detect would fall back
|
|
27
|
+
* to the only CAN interface, which on a Signal K computer is usually NMEA
|
|
28
|
+
* 2000. On Linux, the only place it can, the file is written here instead:
|
|
29
|
+
* for a USB link if one is plugged in, and otherwise this throws
|
|
30
|
+
* `NO_USB_LINK` and the daemon is not started.
|
|
31
|
+
*
|
|
32
|
+
* A file written here keeps an existing `cache_dir`, or points it at
|
|
33
|
+
* `cacheDir`: without the key the daemon runs without its schema cache.
|
|
34
|
+
* With `sharedCache` the cache is the one shared with the masterbus tools,
|
|
35
|
+
* and `cache_dir` is always ours.
|
|
16
36
|
*/
|
|
17
|
-
export declare function renderConfigIni(cfg: BundledConfig, existing: string | null): string | null;
|
|
37
|
+
export declare function renderConfigIni(cfg: BundledConfig, existing: string | null, cacheDir: string, host?: Host, sharedCache?: boolean): string | null;
|
|
18
38
|
export interface DaemonEvents {
|
|
19
39
|
/** A line of the daemon's stderr. */
|
|
20
40
|
log(line: string): void;
|
|
@@ -25,7 +45,8 @@ export interface DaemonEvents {
|
|
|
25
45
|
}
|
|
26
46
|
export interface DaemonOptions {
|
|
27
47
|
binary: string;
|
|
28
|
-
/**
|
|
48
|
+
/** The plugin's data folder: config.ini, the token, and the mapping and
|
|
49
|
+
* cache unless they are shared with the masterbus tools. */
|
|
29
50
|
dataDir: string;
|
|
30
51
|
config: BundledConfig;
|
|
31
52
|
events: DaemonEvents;
|
|
@@ -33,7 +54,23 @@ export interface DaemonOptions {
|
|
|
33
54
|
extraArgs?: string[];
|
|
34
55
|
/** How long to wait for READY before giving up, ms. */
|
|
35
56
|
readyTimeoutMs?: number;
|
|
57
|
+
/** The machine, for `renderConfigIni`; the real one unless a test says. */
|
|
58
|
+
host?: Host;
|
|
59
|
+
/** Where the masterbus tools keep their files; the real ones unless a test says. */
|
|
60
|
+
env?: Env;
|
|
61
|
+
}
|
|
62
|
+
/** Where the daemon's mapping and schema cache are. */
|
|
63
|
+
export interface Storage {
|
|
64
|
+
mapping: string;
|
|
65
|
+
cache: string;
|
|
66
|
+
shared: boolean;
|
|
36
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* The mapping and cache for these settings: the tools' (or the folder
|
|
70
|
+
* named) when shared, the plugin's data folder otherwise. In a container
|
|
71
|
+
* without a folder named, the plugin's: its home folder isn't kept.
|
|
72
|
+
*/
|
|
73
|
+
export declare function storageFor(cfg: BundledConfig, dataDir: string, env?: Env): Storage;
|
|
37
74
|
/**
|
|
38
75
|
* Runs `masterbus-signalk` as a child process: renders its config and token,
|
|
39
76
|
* spawns it with `--config-dir`, waits for the `READY` line, and restarts
|
|
@@ -48,9 +85,15 @@ export declare class DaemonManager {
|
|
|
48
85
|
private backoffMs;
|
|
49
86
|
private readonly recent;
|
|
50
87
|
private generation;
|
|
88
|
+
private storage;
|
|
89
|
+
private moved;
|
|
51
90
|
constructor(opts: DaemonOptions);
|
|
52
91
|
/** The last lines the daemon wrote to stderr, for an error status. */
|
|
53
92
|
get recentLog(): string[];
|
|
93
|
+
/** The mapping file the daemon reads and the editor writes. */
|
|
94
|
+
get mappingPath(): string | null;
|
|
95
|
+
/** What became of the plugin's own mapping when sharing began, if anything. */
|
|
96
|
+
get notice(): string | null;
|
|
54
97
|
get running(): boolean;
|
|
55
98
|
/** Start the daemon and resolve once it reports READY. */
|
|
56
99
|
start(): Promise<void>;
|
package/plugin/daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
package/plugin/daemon.js
CHANGED
|
@@ -4,6 +4,7 @@ import fs from 'node:fs';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import readline from 'node:readline';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import { adoptMapping, ENV, inContainer, toolsCacheDir, toolsDir } from './shared.js';
|
|
7
8
|
/** The directory under `bin/` that carries this platform's daemon. */
|
|
8
9
|
export function platformDir(platform = process.platform, arch = process.arch) {
|
|
9
10
|
return `${platform}-${arch}`;
|
|
@@ -30,38 +31,107 @@ export function resolveBinary(binaryPath, from = import.meta.url) {
|
|
|
30
31
|
}
|
|
31
32
|
return bin;
|
|
32
33
|
}
|
|
34
|
+
/** Whether a Mastervolt USB link (USB vendor `1a64`) is plugged in, from sysfs. */
|
|
35
|
+
export function usbLinkPresent(root = '/sys/bus/usb/devices') {
|
|
36
|
+
let entries;
|
|
37
|
+
try {
|
|
38
|
+
entries = fs.readdirSync(root);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return entries.some((e) => {
|
|
44
|
+
try {
|
|
45
|
+
return fs.readFileSync(path.join(root, e, 'idVendor'), 'utf8').trim() === '1a64';
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const HOST = { platform: process.platform, usbLink: () => usbLinkPresent() };
|
|
53
|
+
export const NO_USB_LINK = 'No Mastervolt USB link found. If the MasterBus is connected through a CAN interface, set ' +
|
|
54
|
+
'Transport to SocketCAN (Linux) in the plugin settings and enter its name (for example can0) ' +
|
|
55
|
+
'as Device. Auto-detect does not choose a CAN interface by itself, because on most boats that ' +
|
|
56
|
+
'is the NMEA 2000 network. With a USB link, plug it in and save the plugin settings again.';
|
|
33
57
|
/**
|
|
34
58
|
* The `config.ini` the daemon reads, rendered from the plugin's settings.
|
|
35
59
|
* With transport `auto` and a file already present, the file is left alone:
|
|
36
60
|
* the daemon auto-detected it on first run and the user may have edited it.
|
|
37
61
|
* Ports and the API address are always ours, so those keys are rewritten.
|
|
62
|
+
*
|
|
63
|
+
* With `auto` and no file yet, the daemon's own auto-detect would fall back
|
|
64
|
+
* to the only CAN interface, which on a Signal K computer is usually NMEA
|
|
65
|
+
* 2000. On Linux, the only place it can, the file is written here instead:
|
|
66
|
+
* for a USB link if one is plugged in, and otherwise this throws
|
|
67
|
+
* `NO_USB_LINK` and the daemon is not started.
|
|
68
|
+
*
|
|
69
|
+
* A file written here keeps an existing `cache_dir`, or points it at
|
|
70
|
+
* `cacheDir`: without the key the daemon runs without its schema cache.
|
|
71
|
+
* With `sharedCache` the cache is the one shared with the masterbus tools,
|
|
72
|
+
* and `cache_dir` is always ours.
|
|
38
73
|
*/
|
|
39
|
-
export function renderConfigIni(cfg, existing) {
|
|
40
|
-
const ownKeys = ['listen', 'api_listen', 'api_token'];
|
|
74
|
+
export function renderConfigIni(cfg, existing, cacheDir, host = HOST, sharedCache = false) {
|
|
75
|
+
const ownKeys = ['listen', 'api_listen', 'api_token', ...(sharedCache ? ['cache_dir'] : [])];
|
|
76
|
+
const marker = '# Managed by the Signal K plugin (signalk-masterbus); edit ports there.';
|
|
41
77
|
const managed = (body) => body
|
|
42
78
|
.split('\n')
|
|
43
79
|
.filter((line) => {
|
|
80
|
+
if (line.trim() === marker)
|
|
81
|
+
return false;
|
|
44
82
|
const key = line.split('=')[0]?.trim().replace(/^#\s*/, '');
|
|
45
83
|
return !(key && ownKeys.includes(key));
|
|
46
84
|
})
|
|
47
85
|
.join('\n')
|
|
48
86
|
.replace(/\n{3,}/g, '\n\n')
|
|
49
87
|
.trimEnd();
|
|
50
|
-
const ours = `\n
|
|
88
|
+
const ours = `\n${marker}\n` +
|
|
89
|
+
(sharedCache ? `cache_dir = ${cacheDir}\n` : '') +
|
|
51
90
|
`listen = 127.0.0.1:${cfg.streamPort}\n` +
|
|
52
91
|
`api_listen = 127.0.0.1:${cfg.apiPort}\n`;
|
|
92
|
+
const whole = (transport, deviceName) => {
|
|
93
|
+
const hb = cfg.heartbeatMaster.trim();
|
|
94
|
+
const cache = sharedCache
|
|
95
|
+
? null
|
|
96
|
+
: (existing
|
|
97
|
+
?.split('\n')
|
|
98
|
+
.find((line) => /^\s*cache_dir\s*=/.test(line))
|
|
99
|
+
?.trim() ?? `cache_dir = ${cacheDir}`);
|
|
100
|
+
return ('# masterbus configuration, written by the Signal K plugin (signalk-masterbus).\n' +
|
|
101
|
+
'# Transport, device and master role are edited in the plugin settings.\n' +
|
|
102
|
+
(hb ? `heartbeat_master = ${hb}\n` : '# heartbeat_master = 000001\n') +
|
|
103
|
+
`device_type = ${transport}\n` +
|
|
104
|
+
`device_name = ${deviceName}\n` +
|
|
105
|
+
(cache ? `${cache}\n` : '') +
|
|
106
|
+
ours);
|
|
107
|
+
};
|
|
53
108
|
if (cfg.transport === 'auto') {
|
|
54
|
-
if (existing
|
|
55
|
-
return
|
|
56
|
-
|
|
109
|
+
if (existing !== null)
|
|
110
|
+
return `${managed(existing)}\n${ours}`;
|
|
111
|
+
if (host.platform !== 'linux')
|
|
112
|
+
return null; // no CAN fallback: let the daemon detect
|
|
113
|
+
if (!host.usbLink())
|
|
114
|
+
throw new Error(NO_USB_LINK);
|
|
115
|
+
return whole('usb', '');
|
|
57
116
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
117
|
+
return whole(cfg.transport, cfg.deviceName.trim());
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The mapping and cache for these settings: the tools' (or the folder
|
|
121
|
+
* named) when shared, the plugin's data folder otherwise. In a container
|
|
122
|
+
* without a folder named, the plugin's: its home folder isn't kept.
|
|
123
|
+
*/
|
|
124
|
+
export function storageFor(cfg, dataDir, env = ENV) {
|
|
125
|
+
const named = cfg.sharedDir.trim();
|
|
126
|
+
if (cfg.storage === 'shared' && (named || !inContainer(env))) {
|
|
127
|
+
const dir = named || toolsDir(env);
|
|
128
|
+
return { mapping: path.join(dir, 'mapping.json'), cache: toolsCacheDir(dir, env), shared: true };
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
mapping: path.join(dataDir, 'mapping.json'),
|
|
132
|
+
cache: path.join(dataDir, 'cache'),
|
|
133
|
+
shared: false
|
|
134
|
+
};
|
|
65
135
|
}
|
|
66
136
|
const KEEP_LINES = 40;
|
|
67
137
|
/**
|
|
@@ -78,6 +148,8 @@ export class DaemonManager {
|
|
|
78
148
|
backoffMs = 1000;
|
|
79
149
|
recent = [];
|
|
80
150
|
generation = 0;
|
|
151
|
+
storage = null;
|
|
152
|
+
moved = null;
|
|
81
153
|
constructor(opts) {
|
|
82
154
|
this.opts = opts;
|
|
83
155
|
this.token = randomBytes(24).toString('hex');
|
|
@@ -86,6 +158,14 @@ export class DaemonManager {
|
|
|
86
158
|
get recentLog() {
|
|
87
159
|
return [...this.recent];
|
|
88
160
|
}
|
|
161
|
+
/** The mapping file the daemon reads and the editor writes. */
|
|
162
|
+
get mappingPath() {
|
|
163
|
+
return this.storage?.mapping ?? null;
|
|
164
|
+
}
|
|
165
|
+
/** What became of the plugin's own mapping when sharing began, if anything. */
|
|
166
|
+
get notice() {
|
|
167
|
+
return this.moved;
|
|
168
|
+
}
|
|
89
169
|
get running() {
|
|
90
170
|
return this.child !== null && this.child.exitCode === null && !this.child.killed;
|
|
91
171
|
}
|
|
@@ -95,7 +175,12 @@ export class DaemonManager {
|
|
|
95
175
|
fs.mkdirSync(this.opts.dataDir, { recursive: true });
|
|
96
176
|
const ini = path.join(this.opts.dataDir, 'config.ini');
|
|
97
177
|
const existing = fs.existsSync(ini) ? fs.readFileSync(ini, 'utf8') : null;
|
|
98
|
-
const
|
|
178
|
+
const storage = storageFor(this.opts.config, this.opts.dataDir, this.opts.env);
|
|
179
|
+
this.storage = storage;
|
|
180
|
+
const rendered = renderConfigIni(this.opts.config, existing, storage.cache, this.opts.host, storage.shared);
|
|
181
|
+
if (storage.shared) {
|
|
182
|
+
this.moved = adoptMapping(path.join(this.opts.dataDir, 'mapping.json'), storage.mapping);
|
|
183
|
+
}
|
|
99
184
|
if (rendered !== null && rendered !== existing)
|
|
100
185
|
fs.writeFileSync(ini, rendered);
|
|
101
186
|
const tokenFile = path.join(this.opts.dataDir, 'api-token');
|
|
@@ -120,7 +205,12 @@ export class DaemonManager {
|
|
|
120
205
|
let settled = false;
|
|
121
206
|
const child = spawn(this.opts.binary, args, {
|
|
122
207
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
123
|
-
env: {
|
|
208
|
+
env: {
|
|
209
|
+
...process.env,
|
|
210
|
+
RUST_LOG: process.env.RUST_LOG ?? 'warn',
|
|
211
|
+
// The daemon reads its mapping from here instead of beside config.ini.
|
|
212
|
+
...(this.storage?.shared ? { MAPPING: this.storage.mapping } : {})
|
|
213
|
+
}
|
|
124
214
|
});
|
|
125
215
|
this.child = child;
|
|
126
216
|
const timeout = setTimeout(() => {
|
package/plugin/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
package/plugin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAU1E,eAAO,MAAM,SAAS,sBAAsB,CAAA;AAE5C,sEAAsE;AACtE,eAAO,MAAM,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAWnD,CAAA;AAKJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAU1E,eAAO,MAAM,SAAS,sBAAsB,CAAA;AAE5C,sEAAsE;AACtE,eAAO,MAAM,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAWnD,CAAA;AAKJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAmMrD"}
|
package/plugin/index.js
CHANGED
|
@@ -50,7 +50,9 @@ export default function plugin(app) {
|
|
|
50
50
|
versions: VERSIONS,
|
|
51
51
|
mode: config?.mode ?? null,
|
|
52
52
|
connected: client !== null && lastStatus !== null,
|
|
53
|
-
daemon: daemon
|
|
53
|
+
daemon: daemon
|
|
54
|
+
? { running: daemon.running, recentLog: daemon.recentLog, mappingPath: daemon.mappingPath }
|
|
55
|
+
: null,
|
|
54
56
|
status: lastStatus,
|
|
55
57
|
error: lastError,
|
|
56
58
|
stream: forwarder ? { connected: forwarder.connected, ...forwarder.counts } : null,
|
|
@@ -63,10 +65,13 @@ export default function plugin(app) {
|
|
|
63
65
|
const problems = s.diagnostics.errors > 0
|
|
64
66
|
? `; ${s.diagnostics.errors} mapping entr${s.diagnostics.errors === 1 ? 'y' : 'ies'} skipped, see the editor`
|
|
65
67
|
: '';
|
|
68
|
+
// Said until the plugin restarts, so it is seen at least once.
|
|
69
|
+
const notice = daemon?.notice ? ` ${daemon.notice}` : '';
|
|
66
70
|
return (`${where}: streaming ${s.streaming} field${s.streaming === 1 ? '' : 's'} from ` +
|
|
67
71
|
`${s.mapped.devices} of ${s.devices} device${s.devices === 1 ? '' : 's'}` +
|
|
68
72
|
(s.devices === 0 ? ' (discovering)' : '') +
|
|
69
|
-
problems
|
|
73
|
+
problems +
|
|
74
|
+
notice);
|
|
70
75
|
};
|
|
71
76
|
const setError = (msg) => {
|
|
72
77
|
lastError = msg;
|
package/plugin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,OAAO,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAe,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,CAAC,MAAM,SAAS,GAAG,mBAAmB,CAAA;AAE5C,sEAAsE;AACtE,MAAM,CAAC,MAAM,QAAQ,GAAuC,CAAC,GAAG,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAGlD,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,eAAe,IAAI,GAAG,EAAE,CAAA;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACrC,CAAC;AACH,CAAC,CAAC,EAAE,CAAA;AAEJ,8EAA8E;AAC9E,MAAM,OAAO,GAAG,MAAM,CAAA;AAEtB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAc;IAC3C,IAAI,MAAM,GAAkB,IAAI,CAAA;IAChC,IAAI,MAAM,GAAyB,IAAI,CAAA;IACvC,IAAI,MAAM,GAAwB,IAAI,CAAA;IACtC,IAAI,SAAS,GAA2B,IAAI,CAAA;IAC5C,IAAI,MAAM,GAAqB,IAAI,CAAA;IACnC,IAAI,MAAM,GAA0C,IAAI,CAAA;IACxD,IAAI,UAAU,GAAkB,IAAI,CAAA;IACpC,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,yEAAyE;IACzE,2CAA2C;IAC3C,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,MAAM,OAAO,GAAG,GAA4B,EAAE,CAAC,CAAC;QAC9C,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;QAC1B,SAAS,EAAE,MAAM,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;QACjD,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mapping and schema cache the plugin shares with the masterbus tools
|
|
3
|
+
* (`masterbus-tui`, `masterbus-dump`, a `masterbus-signalk` run by hand).
|
|
4
|
+
*
|
|
5
|
+
* With one mapping on the machine, an edit in the TUI reaches Signal K (the
|
|
6
|
+
* daemon reloads `mapping.json` when it changes) and an edit in the web
|
|
7
|
+
* editor is what the TUI shows next time. Before, the bundled daemon kept a
|
|
8
|
+
* mapping of its own, and the two drifted apart without anyone noticing.
|
|
9
|
+
*/
|
|
10
|
+
/** What the folder lookup needs to know about the machine. */
|
|
11
|
+
export interface Env {
|
|
12
|
+
platform: string;
|
|
13
|
+
home: string;
|
|
14
|
+
vars: Record<string, string | undefined>;
|
|
15
|
+
isFile: (p: string) => boolean;
|
|
16
|
+
isDir: (p: string) => boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const ENV: Env;
|
|
19
|
+
/**
|
|
20
|
+
* The folder holding the tools' `config.ini` and `mapping.json`, by the
|
|
21
|
+
* tools' own rule: `$MASTERBUS_CONFIG_DIR`; on Linux the system folder when
|
|
22
|
+
* it has a `config.ini`; otherwise the per-user configuration folder.
|
|
23
|
+
*/
|
|
24
|
+
export declare function toolsDir(env?: Env): string;
|
|
25
|
+
/**
|
|
26
|
+
* The tools' schema cache for the folder `dir`: the `cache_dir` in its
|
|
27
|
+
* `config.ini` when that folder exists here, else the tools' default.
|
|
28
|
+
*/
|
|
29
|
+
export declare function toolsCacheDir(dir: string, env?: Env): string;
|
|
30
|
+
/**
|
|
31
|
+
* Whether Signal K runs in a container (Docker or Podman). The home folder
|
|
32
|
+
* there is usually not kept when the container is recreated, so a shared
|
|
33
|
+
* folder has to be named, one that is mounted from the host.
|
|
34
|
+
*/
|
|
35
|
+
export declare function inContainer(env?: Env): boolean;
|
|
36
|
+
export declare const BACKUP = "mapping.plugin-backup.json";
|
|
37
|
+
/**
|
|
38
|
+
* Move the mapping the plugin kept for itself (`own`) to the shared one
|
|
39
|
+
* (`shared`). Without a shared mapping it simply moves there; with the same
|
|
40
|
+
* one, the plugin's copy goes. With a different one, the shared mapping wins
|
|
41
|
+
* and the plugin's is kept beside it as `mapping.plugin-backup.json`
|
|
42
|
+
* (numbered if that name is taken), so nobody's work is lost. Returns a sentence for the plugin status, or null when there
|
|
43
|
+
* was nothing to move.
|
|
44
|
+
*/
|
|
45
|
+
export declare function adoptMapping(own: string, shared: string): string | null;
|
|
46
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,8DAA8D;AAC9D,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;IAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;CAC9B;AAED,eAAO,MAAM,GAAG,EAAE,GAkBjB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,GAAE,GAAS,GAAG,MAAM,CAgB/C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,GAAS,GAAG,MAAM,CA2BjE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,GAAS,GAAG,OAAO,CAEnD;AAED,eAAO,MAAM,MAAM,+BAA+B,CAAA;AAElD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsBvE"}
|
package/plugin/shared.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mapping and schema cache the plugin shares with the masterbus tools
|
|
3
|
+
* (`masterbus-tui`, `masterbus-dump`, a `masterbus-signalk` run by hand).
|
|
4
|
+
*
|
|
5
|
+
* With one mapping on the machine, an edit in the TUI reaches Signal K (the
|
|
6
|
+
* daemon reloads `mapping.json` when it changes) and an edit in the web
|
|
7
|
+
* editor is what the TUI shows next time. Before, the bundled daemon kept a
|
|
8
|
+
* mapping of its own, and the two drifted apart without anyone noticing.
|
|
9
|
+
*/
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import os from 'node:os';
|
|
12
|
+
import path from 'node:path';
|
|
13
|
+
export const ENV = {
|
|
14
|
+
platform: process.platform,
|
|
15
|
+
home: os.homedir(),
|
|
16
|
+
vars: process.env,
|
|
17
|
+
isFile: (p) => {
|
|
18
|
+
try {
|
|
19
|
+
return fs.statSync(p).isFile();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
isDir: (p) => {
|
|
26
|
+
try {
|
|
27
|
+
return fs.statSync(p).isDirectory();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* The folder holding the tools' `config.ini` and `mapping.json`, by the
|
|
36
|
+
* tools' own rule: `$MASTERBUS_CONFIG_DIR`; on Linux the system folder when
|
|
37
|
+
* it has a `config.ini`; otherwise the per-user configuration folder.
|
|
38
|
+
*/
|
|
39
|
+
export function toolsDir(env = ENV) {
|
|
40
|
+
const pinned = env.vars.MASTERBUS_CONFIG_DIR?.trim();
|
|
41
|
+
if (pinned)
|
|
42
|
+
return pinned;
|
|
43
|
+
switch (env.platform) {
|
|
44
|
+
case 'linux': {
|
|
45
|
+
if (env.isFile('/etc/default/masterbus/config.ini'))
|
|
46
|
+
return '/etc/default/masterbus';
|
|
47
|
+
const xdg = env.vars.XDG_CONFIG_HOME?.trim();
|
|
48
|
+
return path.join(xdg || path.join(env.home, '.config'), 'masterbus');
|
|
49
|
+
}
|
|
50
|
+
case 'darwin':
|
|
51
|
+
return path.join(env.home, 'Library', 'Application Support', 'masterbus');
|
|
52
|
+
case 'win32':
|
|
53
|
+
return path.join(env.vars.APPDATA ?? path.join(env.home, 'AppData', 'Roaming'), 'masterbus');
|
|
54
|
+
default:
|
|
55
|
+
return path.join(env.home, '.config', 'masterbus');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The tools' schema cache for the folder `dir`: the `cache_dir` in its
|
|
60
|
+
* `config.ini` when that folder exists here, else the tools' default.
|
|
61
|
+
*/
|
|
62
|
+
export function toolsCacheDir(dir, env = ENV) {
|
|
63
|
+
let ini = '';
|
|
64
|
+
try {
|
|
65
|
+
ini = fs.readFileSync(path.join(dir, 'config.ini'), 'utf8');
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// No config.ini: the default below.
|
|
69
|
+
}
|
|
70
|
+
const set = /^\s*cache_dir\s*=\s*(.+?)\s*$/m.exec(ini)?.[1];
|
|
71
|
+
if (set && env.isDir(set))
|
|
72
|
+
return set;
|
|
73
|
+
if (env.vars.MASTERBUS_CONFIG_DIR?.trim())
|
|
74
|
+
return path.join(dir, 'cache');
|
|
75
|
+
if (dir.startsWith('/etc/'))
|
|
76
|
+
return '/var/lib/masterbus';
|
|
77
|
+
switch (env.platform) {
|
|
78
|
+
case 'linux': {
|
|
79
|
+
const xdg = env.vars.XDG_CACHE_HOME?.trim();
|
|
80
|
+
return path.join(xdg || path.join(env.home, '.cache'), 'masterbus');
|
|
81
|
+
}
|
|
82
|
+
case 'darwin':
|
|
83
|
+
return path.join(env.home, 'Library', 'Caches', 'masterbus');
|
|
84
|
+
case 'win32':
|
|
85
|
+
return path.join(env.vars.LOCALAPPDATA ?? path.join(env.home, 'AppData', 'Local'), 'masterbus', 'cache');
|
|
86
|
+
default:
|
|
87
|
+
return path.join(dir, 'cache');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Whether Signal K runs in a container (Docker or Podman). The home folder
|
|
92
|
+
* there is usually not kept when the container is recreated, so a shared
|
|
93
|
+
* folder has to be named, one that is mounted from the host.
|
|
94
|
+
*/
|
|
95
|
+
export function inContainer(env = ENV) {
|
|
96
|
+
return env.isFile('/.dockerenv') || env.isFile('/run/.containerenv');
|
|
97
|
+
}
|
|
98
|
+
export const BACKUP = 'mapping.plugin-backup.json';
|
|
99
|
+
/**
|
|
100
|
+
* Move the mapping the plugin kept for itself (`own`) to the shared one
|
|
101
|
+
* (`shared`). Without a shared mapping it simply moves there; with the same
|
|
102
|
+
* one, the plugin's copy goes. With a different one, the shared mapping wins
|
|
103
|
+
* and the plugin's is kept beside it as `mapping.plugin-backup.json`
|
|
104
|
+
* (numbered if that name is taken), so nobody's work is lost. Returns a sentence for the plugin status, or null when there
|
|
105
|
+
* was nothing to move.
|
|
106
|
+
*/
|
|
107
|
+
export function adoptMapping(own, shared) {
|
|
108
|
+
if (!fs.existsSync(own))
|
|
109
|
+
return null;
|
|
110
|
+
fs.mkdirSync(path.dirname(shared), { recursive: true });
|
|
111
|
+
if (!fs.existsSync(shared)) {
|
|
112
|
+
fs.copyFileSync(own, shared);
|
|
113
|
+
fs.rmSync(own);
|
|
114
|
+
return `The plugin's mapping now lives in ${shared}, shared with the masterbus tools.`;
|
|
115
|
+
}
|
|
116
|
+
if (fs.readFileSync(own).equals(fs.readFileSync(shared))) {
|
|
117
|
+
fs.rmSync(own);
|
|
118
|
+
return `Using the mapping in ${shared}, shared with the masterbus tools.`;
|
|
119
|
+
}
|
|
120
|
+
let backup = path.join(path.dirname(shared), BACKUP);
|
|
121
|
+
for (let n = 2; fs.existsSync(backup); n++) {
|
|
122
|
+
backup = path.join(path.dirname(shared), `mapping.plugin-backup-${n}.json`);
|
|
123
|
+
}
|
|
124
|
+
fs.copyFileSync(own, backup);
|
|
125
|
+
fs.rmSync(own);
|
|
126
|
+
return (`Using the mapping in ${shared}, shared with the masterbus tools. The plugin had its own ` +
|
|
127
|
+
`mapping, which differs; it is kept as ${backup}.`);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" width="96" height="96">
|
|
2
|
+
<rect x="4" y="4" width="88" height="88" rx="16" fill="#12395b"/>
|
|
3
|
+
<rect x="20" y="30" width="46" height="36" rx="6" fill="none" stroke="#f2f5f7" stroke-width="6"/>
|
|
4
|
+
<rect x="66" y="40" width="10" height="16" rx="2" fill="#f2f5f7"/>
|
|
5
|
+
<rect x="26" y="36" width="24" height="24" rx="3" fill="#5cc8a8"/>
|
|
6
|
+
</svg>
|