@altronix/cli 0.2.0 → 0.4.0
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/build/about.d.ts +1 -0
- package/build/about.js +10 -0
- package/build/about.js.map +1 -0
- package/build/cloud.d.ts +2 -0
- package/build/cloud.js +16 -0
- package/build/cloud.js.map +1 -0
- package/build/common.d.ts +16 -0
- package/build/common.js +83 -0
- package/build/common.js.map +1 -0
- package/build/dhcp.d.ts +1 -0
- package/build/dhcp.js +10 -0
- package/build/dhcp.js.map +1 -0
- package/build/index.js +48 -8
- package/build/index.js.map +1 -1
- package/build/ip.d.ts +2 -0
- package/build/ip.js +14 -0
- package/build/ip.js.map +1 -0
- package/build/poe.d.ts +3 -0
- package/build/poe.js +20 -0
- package/build/poe.js.map +1 -0
- package/build/update.d.ts +1 -0
- package/build/update.js +83 -0
- package/build/update.js.map +1 -0
- package/package.json +6 -4
- package/src/about.ts +6 -0
- package/src/cloud.ts +12 -0
- package/src/common.ts +113 -0
- package/src/dhcp.ts +6 -0
- package/src/index.ts +52 -7
- package/src/ip.ts +10 -0
- package/src/poe.ts +16 -0
- package/src/update.ts +98 -0
- package/tsconfig.lib.tsbuildinfo +1 -1
- package/src/setCloud.ts +0 -41
- package/src/setDhcp.ts +0 -40
- package/src/setIp.ts +0 -44
package/build/about.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getter(): Promise<void>;
|
package/build/about.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getter = void 0;
|
|
4
|
+
const cbor_1 = require("@altronix/cbor");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function getter() {
|
|
7
|
+
return (0, common_1.cliRunGet)("/api/v1/about", cbor_1.About);
|
|
8
|
+
}
|
|
9
|
+
exports.getter = getter;
|
|
10
|
+
//# sourceMappingURL=about.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"about.js","sourceRoot":"","sources":["../src/about.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AACvC,qCAAqC;AAErC,SAAgB,MAAM;IACpB,OAAO,IAAA,kBAAS,EAAC,eAAe,EAAE,YAAK,CAAC,CAAC;AAC3C,CAAC;AAFD,wBAEC"}
|
package/build/cloud.d.ts
ADDED
package/build/cloud.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getter = exports.setter = void 0;
|
|
4
|
+
const cbor_1 = require("@altronix/cbor");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function setter(endpoint) {
|
|
7
|
+
const [ip, port] = endpoint.split(":");
|
|
8
|
+
const cbor = new cbor_1.NetCloud({ ip, port: parseInt(port), portEn: true });
|
|
9
|
+
return (0, common_1.cliRunPut)("/api/v1/net/cloud", cbor);
|
|
10
|
+
}
|
|
11
|
+
exports.setter = setter;
|
|
12
|
+
function getter() {
|
|
13
|
+
return (0, common_1.cliRunGet)("/api/v1/net/cloud", cbor_1.NetCloud);
|
|
14
|
+
}
|
|
15
|
+
exports.getter = getter;
|
|
16
|
+
//# sourceMappingURL=cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAC1C,qCAAgD;AAEhD,SAAgB,MAAM,CAAC,QAAgB;IACrC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,eAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,OAAO,IAAA,kBAAS,EAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAJD,wBAIC;AAED,SAAgB,MAAM;IACpB,OAAO,IAAA,kBAAS,EAAC,mBAAmB,EAAE,eAAQ,CAAC,CAAC;AAClD,CAAC;AAFD,wBAEC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Writable } from "@altronix/cbor";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
type Data = Writable & {
|
|
4
|
+
json: () => object;
|
|
5
|
+
};
|
|
6
|
+
type FromCbor = {
|
|
7
|
+
fromCbor(arg: Uint8Array): Data;
|
|
8
|
+
};
|
|
9
|
+
type FromCborArray = {
|
|
10
|
+
fromCborArray(arg: Uint8Array): Data[];
|
|
11
|
+
};
|
|
12
|
+
export declare function put<D extends Writable>(serial: string, path: string, data: D): Observable<void>;
|
|
13
|
+
export declare function cliRunGet<D extends FromCbor>(path: string, data: D): Promise<void>;
|
|
14
|
+
export declare function cliRunGetArray<D extends FromCborArray>(path: string, data: D): Promise<void>;
|
|
15
|
+
export declare function cliRunPut<D extends Data>(path: string, data: D): Promise<void>;
|
|
16
|
+
export {};
|
package/build/common.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cliRunPut = exports.cliRunGetArray = exports.cliRunGet = exports.put = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const device_1 = require("@altronix/device");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const operators_1 = require("rxjs/operators");
|
|
8
|
+
const linq_1 = tslib_1.__importDefault(require("./linq"));
|
|
9
|
+
function put(serial, path, data) {
|
|
10
|
+
return (0, rxjs_1.concat)((0, rxjs_1.defer)(() => linq_1.default.put(serial, path, data)), (0, rxjs_1.defer)(() => linq_1.default.get(serial, "/api/v1/exe/saveAndReboot"))).pipe((0, operators_1.switchMap)(() => rxjs_1.EMPTY));
|
|
11
|
+
}
|
|
12
|
+
exports.put = put;
|
|
13
|
+
function cliRunGet(path, data) {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const logger = (0, device_1.getLogger)();
|
|
16
|
+
logger.debug(path);
|
|
17
|
+
const sub = linq_1.default
|
|
18
|
+
.listen()
|
|
19
|
+
.pipe((0, operators_1.filter)((ev) => ev.type == device_1.CONNECTED), (0, operators_1.take)(1), (0, operators_1.switchMap)(({ device }) => linq_1.default.get(device.about.sid, path)), (0, operators_1.map)(data.fromCbor))
|
|
20
|
+
.subscribe({
|
|
21
|
+
next: async (data) => {
|
|
22
|
+
logger.info("<-", { ...data.json() });
|
|
23
|
+
await linq_1.default.shutdown();
|
|
24
|
+
sub.unsubscribe();
|
|
25
|
+
resolve();
|
|
26
|
+
},
|
|
27
|
+
error: async (error) => (await linq_1.default.shutdown(), reject(error)),
|
|
28
|
+
complete: async () => (await linq_1.default.shutdown(), resolve()),
|
|
29
|
+
});
|
|
30
|
+
process.on("SIGINT", async () => {
|
|
31
|
+
await linq_1.default.shutdown();
|
|
32
|
+
sub.unsubscribe();
|
|
33
|
+
resolve();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.cliRunGet = cliRunGet;
|
|
38
|
+
function cliRunGetArray(path, data) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
const logger = (0, device_1.getLogger)();
|
|
41
|
+
logger.debug(path);
|
|
42
|
+
const sub = linq_1.default
|
|
43
|
+
.listen()
|
|
44
|
+
.pipe((0, operators_1.filter)((ev) => ev.type == device_1.CONNECTED), (0, operators_1.take)(1), (0, operators_1.switchMap)(({ device }) => linq_1.default.get(device.about.sid, path)), (0, operators_1.map)(data.fromCborArray))
|
|
45
|
+
.subscribe({
|
|
46
|
+
next: async (data) => {
|
|
47
|
+
data.forEach((d, idx) => logger.info(`<- ${idx}`, { ...d.json() }));
|
|
48
|
+
await linq_1.default.shutdown();
|
|
49
|
+
sub.unsubscribe();
|
|
50
|
+
resolve();
|
|
51
|
+
},
|
|
52
|
+
error: async (error) => (await linq_1.default.shutdown(), reject(error)),
|
|
53
|
+
complete: async () => (await linq_1.default.shutdown(), resolve()),
|
|
54
|
+
});
|
|
55
|
+
process.on("SIGINT", async () => {
|
|
56
|
+
await linq_1.default.shutdown();
|
|
57
|
+
sub.unsubscribe();
|
|
58
|
+
resolve();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
exports.cliRunGetArray = cliRunGetArray;
|
|
63
|
+
function cliRunPut(path, data) {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
const logger = (0, device_1.getLogger)();
|
|
66
|
+
logger.debug(path, data.json());
|
|
67
|
+
const sub = linq_1.default
|
|
68
|
+
.listen()
|
|
69
|
+
.pipe((0, operators_1.filter)((ev) => ev.type == device_1.CONNECTED), (0, operators_1.take)(1), (0, operators_1.switchMap)(({ device }) => put(device.about.sid, path, data)))
|
|
70
|
+
.subscribe({
|
|
71
|
+
next: async () => (await linq_1.default.shutdown(), sub.unsubscribe(), resolve()),
|
|
72
|
+
error: async (error) => (await linq_1.default.shutdown(), reject(error)),
|
|
73
|
+
complete: async () => (await linq_1.default.shutdown(), resolve()),
|
|
74
|
+
});
|
|
75
|
+
process.on("SIGINT", async () => {
|
|
76
|
+
await linq_1.default.shutdown();
|
|
77
|
+
sub.unsubscribe();
|
|
78
|
+
resolve();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
exports.cliRunPut = cliRunPut;
|
|
83
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
package/build/dhcp.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function setter(): Promise<void>;
|
package/build/dhcp.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setter = void 0;
|
|
4
|
+
const cbor_1 = require("@altronix/cbor");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
async function setter() {
|
|
7
|
+
return (0, common_1.cliRunPut)("/api/v1/net/ip", new cbor_1.NetIp({ dhcp: true }));
|
|
8
|
+
}
|
|
9
|
+
exports.setter = setter;
|
|
10
|
+
//# sourceMappingURL=dhcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhcp.js","sourceRoot":"","sources":["../src/dhcp.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AACvC,qCAAqC;AAE9B,KAAK,UAAU,MAAM;IAC1B,OAAO,IAAA,kBAAS,EAAC,gBAAgB,EAAE,IAAI,YAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAFD,wBAEC"}
|
package/build/index.js
CHANGED
|
@@ -1,30 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
"use strict";
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
const device_1 = require("@altronix/device");
|
|
5
6
|
const commander_1 = require("commander");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const poe = tslib_1.__importStar(require("./poe"));
|
|
8
|
+
const cloud = tslib_1.__importStar(require("./cloud"));
|
|
9
|
+
const ip = tslib_1.__importStar(require("./ip"));
|
|
10
|
+
const dhcp = tslib_1.__importStar(require("./dhcp"));
|
|
11
|
+
const about = tslib_1.__importStar(require("./about"));
|
|
12
|
+
const update_1 = require("./update");
|
|
9
13
|
(async function main() {
|
|
10
14
|
(0, device_1.getLogger)().debug("starting app");
|
|
11
15
|
commander_1.program.name("atx").description("access linq device via cli").version("TODO");
|
|
16
|
+
commander_1.program
|
|
17
|
+
.command("get-about")
|
|
18
|
+
.description("get about data on the device")
|
|
19
|
+
.action(about.getter);
|
|
12
20
|
commander_1.program
|
|
13
21
|
.command("set-cloud")
|
|
14
22
|
.description("update network interface on the device")
|
|
15
23
|
.argument("<endpoint>", "cloud service location")
|
|
16
|
-
.action(
|
|
24
|
+
.action(cloud.setter);
|
|
25
|
+
commander_1.program
|
|
26
|
+
.command("get-cloud")
|
|
27
|
+
.description("get cloud endpoint on the device")
|
|
28
|
+
.action(cloud.getter);
|
|
17
29
|
commander_1.program
|
|
18
30
|
.command("set-ip")
|
|
19
31
|
.description("update ip interface on the device")
|
|
20
32
|
.argument("<ip>", "set IP address")
|
|
21
33
|
.argument("<sn>", "set SN address")
|
|
22
34
|
.argument("<gw>", "set GW address")
|
|
23
|
-
.action(
|
|
35
|
+
.action(ip.setter);
|
|
36
|
+
commander_1.program
|
|
37
|
+
.command("get-ip")
|
|
38
|
+
.description("get ip interface on the device")
|
|
39
|
+
.action(ip.getter);
|
|
24
40
|
commander_1.program
|
|
25
41
|
.command("set-dhcp")
|
|
26
42
|
.description("update ip interface [DHCP]")
|
|
27
|
-
.action(
|
|
28
|
-
|
|
43
|
+
.action(dhcp.setter);
|
|
44
|
+
commander_1.program
|
|
45
|
+
.command("set-poe-port-on")
|
|
46
|
+
.description("turn on a poe port")
|
|
47
|
+
.argument("<port>", "index of port to turn on")
|
|
48
|
+
.action(poe.setPortOn);
|
|
49
|
+
commander_1.program
|
|
50
|
+
.command("set-poe-port-off")
|
|
51
|
+
.description("turn off a poe port")
|
|
52
|
+
.argument("<port>", "index of port to turn on")
|
|
53
|
+
.action(poe.setPortOff);
|
|
54
|
+
commander_1.program
|
|
55
|
+
.command("get-poe-ports")
|
|
56
|
+
.description("read the poe port data")
|
|
57
|
+
.action(poe.getPorts);
|
|
58
|
+
commander_1.program
|
|
59
|
+
.command("update")
|
|
60
|
+
.description("run firmware update from file")
|
|
61
|
+
.argument("<file>", "file to update device with")
|
|
62
|
+
.action(update_1.runUpdate);
|
|
63
|
+
try {
|
|
64
|
+
await commander_1.program.parseAsync();
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
console.error(e.json ? e.json() : e);
|
|
68
|
+
}
|
|
29
69
|
})();
|
|
30
|
-
//# sourceMappingURL=index.js.map
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,yCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,yCAAoC;AACpC,mDAA6B;AAC7B,uDAAiC;AACjC,iDAA2B;AAC3B,qDAA+B;AAC/B,uDAAiC;AACjC,qCAAqC;AAErC,CAAC,KAAK,UAAU,IAAI;IAClB,IAAA,kBAAS,GAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAElC,mBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E,mBAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAExB,mBAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;SAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAExB,mBAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAExB,mBAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;SAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;SAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAErB,mBAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAErB,mBAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvB,mBAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,oBAAoB,CAAC;SACjC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEzB,mBAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE1B,mBAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExB,mBAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;SAChD,MAAM,CAAC,kBAAS,CAAC,CAAC;IAErB,IAAI;QACF,MAAM,mBAAO,CAAC,UAAU,EAAE,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;AACH,CAAC,CAAC,EAAE,CAAC"}
|
package/build/ip.d.ts
ADDED
package/build/ip.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getter = exports.setter = void 0;
|
|
4
|
+
const cbor_1 = require("@altronix/cbor");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function setter(ip, sn, gw) {
|
|
7
|
+
return (0, common_1.cliRunPut)("/api/v1/net/ip", new cbor_1.NetIp({ ip, sn, gw }));
|
|
8
|
+
}
|
|
9
|
+
exports.setter = setter;
|
|
10
|
+
function getter() {
|
|
11
|
+
return (0, common_1.cliRunGet)("/api/v1/net/ip", cbor_1.NetIp);
|
|
12
|
+
}
|
|
13
|
+
exports.getter = getter;
|
|
14
|
+
//# sourceMappingURL=ip.js.map
|
package/build/ip.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ip.js","sourceRoot":"","sources":["../src/ip.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AACvC,qCAAgD;AAEhD,SAAgB,MAAM,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU;IACvD,OAAO,IAAA,kBAAS,EAAC,gBAAgB,EAAE,IAAI,YAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAFD,wBAEC;AAED,SAAgB,MAAM;IACpB,OAAO,IAAA,kBAAS,EAAC,gBAAgB,EAAE,YAAK,CAAC,CAAC;AAC5C,CAAC;AAFD,wBAEC"}
|
package/build/poe.d.ts
ADDED
package/build/poe.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setPortOff = exports.setPortOn = exports.getPorts = void 0;
|
|
4
|
+
const cbor_1 = require("@altronix/cbor");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function getPorts() {
|
|
7
|
+
return (0, common_1.cliRunGetArray)("/api/v1/netway/ports", cbor_1.PoePort);
|
|
8
|
+
}
|
|
9
|
+
exports.getPorts = getPorts;
|
|
10
|
+
function setPortOn(port) {
|
|
11
|
+
let data = new cbor_1.PoePort({ enabled: true });
|
|
12
|
+
return (0, common_1.cliRunPut)(`/api/v1/netway/ports?port=${port}`, data);
|
|
13
|
+
}
|
|
14
|
+
exports.setPortOn = setPortOn;
|
|
15
|
+
function setPortOff(port) {
|
|
16
|
+
let data = new cbor_1.PoePort({ enabled: false });
|
|
17
|
+
return (0, common_1.cliRunPut)(`/api/v1/netway/ports?port=${port}`, data);
|
|
18
|
+
}
|
|
19
|
+
exports.setPortOff = setPortOff;
|
|
20
|
+
//# sourceMappingURL=poe.js.map
|
package/build/poe.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poe.js","sourceRoot":"","sources":["../src/poe.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,qCAAqD;AAErD,SAAgB,QAAQ;IACtB,OAAO,IAAA,uBAAc,EAAC,sBAAsB,EAAE,cAAO,CAAC,CAAC;AACzD,CAAC;AAFD,4BAEC;AAED,SAAgB,SAAS,CAAC,IAAY;IACpC,IAAI,IAAI,GAAG,IAAI,cAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,OAAO,IAAA,kBAAS,EAAC,6BAA6B,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAHD,8BAGC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,GAAG,IAAI,cAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAO,IAAA,kBAAS,EAAC,6BAA6B,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAHD,gCAGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runUpdate(file: string): Promise<void>;
|
package/build/update.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runUpdate = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/*
|
|
6
|
+
* This example will listen for the first connected device and make a get
|
|
7
|
+
* request for the about data and log the about data to the console.
|
|
8
|
+
*/
|
|
9
|
+
const device_1 = require("@altronix/device");
|
|
10
|
+
const cbor_1 = require("@altronix/cbor");
|
|
11
|
+
const rxjs_1 = require("rxjs");
|
|
12
|
+
const operators_1 = require("rxjs/operators");
|
|
13
|
+
const linq_1 = tslib_1.__importDefault(require("./linq"));
|
|
14
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
15
|
+
function chunks(data, size) {
|
|
16
|
+
let arr = [];
|
|
17
|
+
let remainder = data.length % size;
|
|
18
|
+
function slicer(n) {
|
|
19
|
+
for (let i = 0; i < n; i++) {
|
|
20
|
+
let idx = i * size;
|
|
21
|
+
arr.push(data.slice(idx, idx + size));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (remainder == 0) {
|
|
25
|
+
slicer(data.length / size);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
let n = Math.ceil(data.length / size);
|
|
29
|
+
let end = size * (n - 1);
|
|
30
|
+
slicer(n - 1);
|
|
31
|
+
let last = new Uint8Array(size);
|
|
32
|
+
last.set(data.slice(end));
|
|
33
|
+
arr.push(last);
|
|
34
|
+
}
|
|
35
|
+
return arr;
|
|
36
|
+
}
|
|
37
|
+
(0, device_1.installDebugLogger)();
|
|
38
|
+
const logger = (0, device_1.getLogger)();
|
|
39
|
+
// Reduce a blob of binary data and convert into an Update[]
|
|
40
|
+
function updateReducer(arr, data, idx) {
|
|
41
|
+
let update = new cbor_1.Update({ data, offset: idx * 512 });
|
|
42
|
+
// NOTE: Have to initialize the Uint8Array across binding this way
|
|
43
|
+
// https://gitlab.altronix.com/software-engineering/sdk/atx-zdk/-/issues/1
|
|
44
|
+
update.data = data;
|
|
45
|
+
return arr.concat(update);
|
|
46
|
+
}
|
|
47
|
+
function runUpdate(file) {
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
const sub = linq_1.default
|
|
50
|
+
.listen()
|
|
51
|
+
.pipe((0, operators_1.filter)((ev) => ev.type == device_1.CONNECTED), (0, operators_1.take)(1), (0, operators_1.switchMap)(({ device }) => linq_1.default.get(device.about.sid, "/api/v1/about")), (0, operators_1.map)(cbor_1.About.fromCbor), (0, operators_1.switchMap)(({ sid: serial, verPrj }) => {
|
|
52
|
+
logger.info("found device", { serial, version: verPrj });
|
|
53
|
+
logger.info("sending update :", { file });
|
|
54
|
+
return (0, rxjs_1.from)(fs_1.default.promises.readFile(file)).pipe((0, operators_1.switchMap)((update) => {
|
|
55
|
+
// Chunk up the update file into packets and send update to device
|
|
56
|
+
const packets = chunks(update, 512).reduce(updateReducer, []);
|
|
57
|
+
const length = packets.length;
|
|
58
|
+
const urlStart = "/api/v1/update/start";
|
|
59
|
+
const urlTransfer = "/api/v1/update/transfer";
|
|
60
|
+
const urlFinish = "/api/v1/update/finish";
|
|
61
|
+
let sent = 0;
|
|
62
|
+
const start$ = (0, rxjs_1.defer)(() => linq_1.default.get(serial, urlStart));
|
|
63
|
+
const transfer$ = (0, rxjs_1.from)(packets).pipe((0, operators_1.concatMap)((u) => linq_1.default.put(serial, urlTransfer, u.cbor())), (0, operators_1.map)((meta) => ({ code: meta.json().code, sent, length })), (0, operators_1.tap)(() => sent++));
|
|
64
|
+
const finished$ = (0, rxjs_1.defer)(() => linq_1.default.get(serial, urlFinish));
|
|
65
|
+
return (0, rxjs_1.concat)(start$, transfer$, finished$);
|
|
66
|
+
}));
|
|
67
|
+
}))
|
|
68
|
+
.subscribe({
|
|
69
|
+
next: async (mesg) => {
|
|
70
|
+
logger.info("<-", { ...mesg });
|
|
71
|
+
resolve();
|
|
72
|
+
},
|
|
73
|
+
error: async (error) => (await linq_1.default.shutdown(), reject(error)),
|
|
74
|
+
complete: async () => (await linq_1.default.shutdown(), resolve()),
|
|
75
|
+
});
|
|
76
|
+
process.on("SIGINT", async () => {
|
|
77
|
+
await linq_1.default.shutdown();
|
|
78
|
+
sub.unsubscribe();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
exports.runUpdate = runUpdate;
|
|
83
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@altronix/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "",
|
|
5
|
-
"
|
|
5
|
+
"bin": {
|
|
6
|
+
"atx": "build/index.js"
|
|
7
|
+
},
|
|
6
8
|
"devDependencies": {
|
|
7
9
|
"@types/jest": "~29.2",
|
|
8
10
|
"@types/node": "~18",
|
|
@@ -27,8 +29,8 @@
|
|
|
27
29
|
"commander": "^10.0.0",
|
|
28
30
|
"rxjs": "^7.6.0",
|
|
29
31
|
"serialport": "^10.5.0",
|
|
30
|
-
"@altronix/cbor": "0.2
|
|
31
|
-
"@altronix/device": "0.2
|
|
32
|
+
"@altronix/cbor": "0.4.2",
|
|
33
|
+
"@altronix/device": "0.4.2"
|
|
32
34
|
},
|
|
33
35
|
"scripts": {
|
|
34
36
|
"start": "node ./build/index.js",
|
package/src/about.ts
ADDED
package/src/cloud.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NetCloud } from "@altronix/cbor";
|
|
2
|
+
import { cliRunGet, cliRunPut } from "./common";
|
|
3
|
+
|
|
4
|
+
export function setter(endpoint: string): Promise<void> {
|
|
5
|
+
const [ip, port] = endpoint.split(":");
|
|
6
|
+
const cbor = new NetCloud({ ip, port: parseInt(port), portEn: true });
|
|
7
|
+
return cliRunPut("/api/v1/net/cloud", cbor);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function getter(): Promise<void> {
|
|
11
|
+
return cliRunGet("/api/v1/net/cloud", NetCloud);
|
|
12
|
+
}
|
package/src/common.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ConnectedEvent, getLogger, CONNECTED } from "@altronix/device";
|
|
2
|
+
import { Writable } from "@altronix/cbor";
|
|
3
|
+
import { Observable, defer, EMPTY, concat } from "rxjs";
|
|
4
|
+
import { take, filter, switchMap, map } from "rxjs/operators";
|
|
5
|
+
import linq from "./linq";
|
|
6
|
+
|
|
7
|
+
type Data = Writable & { json: () => object };
|
|
8
|
+
type FromCbor = { fromCbor(arg: Uint8Array): Data };
|
|
9
|
+
type FromCborArray = { fromCborArray(arg: Uint8Array): Data[] };
|
|
10
|
+
|
|
11
|
+
export function put<D extends Writable>(
|
|
12
|
+
serial: string,
|
|
13
|
+
path: string,
|
|
14
|
+
data: D
|
|
15
|
+
): Observable<void> {
|
|
16
|
+
return concat(
|
|
17
|
+
defer(() => linq.put(serial, path, data)),
|
|
18
|
+
defer(() => linq.get(serial, "/api/v1/exe/saveAndReboot"))
|
|
19
|
+
).pipe(switchMap(() => EMPTY));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function cliRunGet<D extends FromCbor>(
|
|
23
|
+
path: string,
|
|
24
|
+
data: D
|
|
25
|
+
): Promise<void> {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
const logger = getLogger();
|
|
28
|
+
logger.debug(path);
|
|
29
|
+
const sub = linq
|
|
30
|
+
.listen()
|
|
31
|
+
.pipe(
|
|
32
|
+
filter((ev): ev is ConnectedEvent => ev.type == CONNECTED),
|
|
33
|
+
take(1),
|
|
34
|
+
switchMap(({ device }) => linq.get(device.about.sid, path)),
|
|
35
|
+
map(data.fromCbor)
|
|
36
|
+
)
|
|
37
|
+
.subscribe({
|
|
38
|
+
next: async (data) => {
|
|
39
|
+
logger.info("<-", { ...data.json() });
|
|
40
|
+
await linq.shutdown();
|
|
41
|
+
sub.unsubscribe();
|
|
42
|
+
resolve();
|
|
43
|
+
},
|
|
44
|
+
error: async (error) => (await linq.shutdown(), reject(error)),
|
|
45
|
+
complete: async () => (await linq.shutdown(), resolve()),
|
|
46
|
+
});
|
|
47
|
+
process.on("SIGINT", async () => {
|
|
48
|
+
await linq.shutdown();
|
|
49
|
+
sub.unsubscribe();
|
|
50
|
+
resolve();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function cliRunGetArray<D extends FromCborArray>(
|
|
56
|
+
path: string,
|
|
57
|
+
data: D
|
|
58
|
+
): Promise<void> {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const logger = getLogger();
|
|
61
|
+
logger.debug(path);
|
|
62
|
+
const sub = linq
|
|
63
|
+
.listen()
|
|
64
|
+
.pipe(
|
|
65
|
+
filter((ev): ev is ConnectedEvent => ev.type == CONNECTED),
|
|
66
|
+
take(1),
|
|
67
|
+
switchMap(({ device }) => linq.get(device.about.sid, path)),
|
|
68
|
+
map(data.fromCborArray)
|
|
69
|
+
)
|
|
70
|
+
.subscribe({
|
|
71
|
+
next: async (data) => {
|
|
72
|
+
data.forEach((d, idx) => logger.info(`<- ${idx}`, { ...d.json() }));
|
|
73
|
+
await linq.shutdown();
|
|
74
|
+
sub.unsubscribe();
|
|
75
|
+
resolve();
|
|
76
|
+
},
|
|
77
|
+
error: async (error) => (await linq.shutdown(), reject(error)),
|
|
78
|
+
complete: async () => (await linq.shutdown(), resolve()),
|
|
79
|
+
});
|
|
80
|
+
process.on("SIGINT", async () => {
|
|
81
|
+
await linq.shutdown();
|
|
82
|
+
sub.unsubscribe();
|
|
83
|
+
resolve();
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function cliRunPut<D extends Data>(
|
|
89
|
+
path: string,
|
|
90
|
+
data: D
|
|
91
|
+
): Promise<void> {
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
const logger = getLogger();
|
|
94
|
+
logger.debug(path, data.json());
|
|
95
|
+
const sub = linq
|
|
96
|
+
.listen()
|
|
97
|
+
.pipe(
|
|
98
|
+
filter((ev): ev is ConnectedEvent => ev.type == CONNECTED),
|
|
99
|
+
take(1),
|
|
100
|
+
switchMap(({ device }) => put(device.about.sid, path, data))
|
|
101
|
+
)
|
|
102
|
+
.subscribe({
|
|
103
|
+
next: async () => (await linq.shutdown(), sub.unsubscribe(), resolve()),
|
|
104
|
+
error: async (error) => (await linq.shutdown(), reject(error)),
|
|
105
|
+
complete: async () => (await linq.shutdown(), resolve()),
|
|
106
|
+
});
|
|
107
|
+
process.on("SIGINT", async () => {
|
|
108
|
+
await linq.shutdown();
|
|
109
|
+
sub.unsubscribe();
|
|
110
|
+
resolve();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|