Skip to content

Commit a3fdc01

Browse files
committed
Added option to specify the ioBroker.admin version to use
1 parent e5adacb commit a3fdc01

File tree

4 files changed

+49
-18
lines changed

4 files changed

+49
-18
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- (UncleSamSwiss) Added possibility to restore a backup file during `dev-server setup` (#28)
1414
- (UncleSamSwiss) Added automatic installation of adapter dependencies (#8)
1515
- (UncleSamSwiss) Added version check when starting dev-server
16+
- (UncleSamSwiss) Added option to specify the ioBroker.admin version to use
1617

1718
## 0.1.4 (2021-04-14)
1819

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ The following options are available:
9898

9999
`--jsController <version>` Define which version of js-controller to be used (default: "latest").
100100

101+
`--admin <version>` Define which version of admin to be used (default: "latest").
102+
101103
`--backupFile <filename>` Provide an ioBroker backup file to restore in this dev-server. Use this option to populate the dev-server with data (and possibly other adapters).
102104

103105
### `dev-server run`

dist/index.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,19 @@ class DevServer {
7373
default: 'latest',
7474
description: 'Define which version of js-controller to be used',
7575
},
76+
admin: {
77+
type: 'string',
78+
alias: 'a',
79+
default: 'latest',
80+
description: 'Define which version of admin to be used',
81+
},
7682
backupFile: {
7783
type: 'string',
7884
alias: 'b',
7985
description: 'Provide an ioBroker backup file to restore in this dev-server',
8086
},
8187
force: { type: 'boolean', hidden: true },
82-
}, async (args) => await this.setup(args.adminPort, args.jsController, args.backupFile, !!args.force))
88+
}, async (args) => await this.setup(args.adminPort, { jsController: args.jsController, admin: args.admin }, args.backupFile, !!args.force))
8389
.command(['update [profile]', 'ud'], 'Update ioBroker and its dependencies to the latest versions', {}, async () => await this.update())
8490
.command(['run [profile]', 'r'], 'Run ioBroker dev-server, the adapter will not run, but you may test the Admin UI with hot-reload', {}, async () => await this.run())
8591
.command(['watch [profile]', 'w'], 'Run ioBroker dev-server and start the adapter in "watch" mode. The adapter will automatically restart when its source code changes. You may attach a debugger to the running adapter.', {}, async () => await this.watch())
@@ -216,7 +222,7 @@ class DevServer {
216222
return port;
217223
}
218224
////////////////// Command Handlers //////////////////
219-
async setup(adminPort, jsController, backupFile, force) {
225+
async setup(adminPort, dependencies, backupFile, force) {
220226
if (force) {
221227
this.log.notice(`Deleting ${this.profileDir}`);
222228
await this.rimraf(this.profileDir);
@@ -226,7 +232,7 @@ class DevServer {
226232
this.log.debug(`Use --force to set it up from scratch (all data will be lost).`);
227233
return;
228234
}
229-
await this.setupDevServer(adminPort, jsController, backupFile);
235+
await this.setupDevServer(adminPort, dependencies, backupFile);
230236
this.log.box(`dev-server was sucessfully set up in\n${this.profileDir}.`);
231237
}
232238
async update() {
@@ -696,7 +702,7 @@ class DevServer {
696702
const debigPid = await this.waitForNodeChildProcess(parseInt(match[1]));
697703
this.log.box(`Debugger is now available on process id ${debigPid}`);
698704
}
699-
async setupDevServer(adminPort, jsController, backupFile) {
705+
async setupDevServer(adminPort, dependencies, backupFile) {
700706
this.log.notice(`Setting up in ${this.profileDir}`);
701707
// create the data directory
702708
const dataDir = path.join(this.profileDir, 'iobroker-data');
@@ -778,8 +784,8 @@ class DevServer {
778784
version: '1.0.0',
779785
private: true,
780786
dependencies: {
781-
'iobroker.js-controller': jsController,
782-
'iobroker.admin': 'latest',
787+
'iobroker.js-controller': dependencies.jsController,
788+
'iobroker.admin': dependencies.admin,
783789
},
784790
'dev-server': {
785791
adminPort: adminPort,
@@ -802,12 +808,12 @@ class DevServer {
802808
this.uploadAndAddAdapter(this.adapterName);
803809
// installing any dependencies
804810
const { common } = await fs_extra_1.readJson(path.join(this.rootDir, 'io-package.json'));
805-
const dependencies = [
811+
const adapterDeps = [
806812
...this.getDependencies(common.dependencies),
807813
...this.getDependencies(common.globalDependencies),
808814
];
809-
this.log.debug(`Found ${dependencies.length} adapter dependencies`);
810-
for (const adapter of dependencies) {
815+
this.log.debug(`Found ${adapterDeps.length} adapter dependencies`);
816+
for (const adapter of adapterDeps) {
811817
try {
812818
await this.installRepoAdapter(adapter);
813819
}

src/index.ts

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ interface DevServerConfig {
4949
adminPort: number;
5050
}
5151

52+
interface DependencyVersions {
53+
jsController: string;
54+
admin: string;
55+
}
56+
5257
class DevServer {
5358
private readonly log = new Logger();
5459
private rootDir!: string;
@@ -78,14 +83,26 @@ class DevServer {
7883
default: 'latest',
7984
description: 'Define which version of js-controller to be used',
8085
},
86+
admin: {
87+
type: 'string',
88+
alias: 'a',
89+
default: 'latest',
90+
description: 'Define which version of admin to be used',
91+
},
8192
backupFile: {
8293
type: 'string',
8394
alias: 'b',
8495
description: 'Provide an ioBroker backup file to restore in this dev-server',
8596
},
8697
force: { type: 'boolean', hidden: true },
8798
},
88-
async (args) => await this.setup(args.adminPort, args.jsController, args.backupFile, !!args.force),
99+
async (args) =>
100+
await this.setup(
101+
args.adminPort,
102+
{ jsController: args.jsController, admin: args.admin },
103+
args.backupFile,
104+
!!args.force,
105+
),
89106
)
90107
.command(
91108
['update [profile]', 'ud'],
@@ -274,7 +291,12 @@ class DevServer {
274291

275292
////////////////// Command Handlers //////////////////
276293

277-
async setup(adminPort: number, jsController: string, backupFile?: string, force?: boolean): Promise<void> {
294+
async setup(
295+
adminPort: number,
296+
dependencies: DependencyVersions,
297+
backupFile?: string,
298+
force?: boolean,
299+
): Promise<void> {
278300
if (force) {
279301
this.log.notice(`Deleting ${this.profileDir}`);
280302
await this.rimraf(this.profileDir);
@@ -286,7 +308,7 @@ class DevServer {
286308
return;
287309
}
288310

289-
await this.setupDevServer(adminPort, jsController, backupFile);
311+
await this.setupDevServer(adminPort, dependencies, backupFile);
290312

291313
this.log.box(`dev-server was sucessfully set up in\n${this.profileDir}.`);
292314
}
@@ -830,7 +852,7 @@ class DevServer {
830852
this.log.box(`Debugger is now available on process id ${debigPid}`);
831853
}
832854

833-
async setupDevServer(adminPort: number, jsController: string, backupFile?: string): Promise<void> {
855+
async setupDevServer(adminPort: number, dependencies: DependencyVersions, backupFile?: string): Promise<void> {
834856
this.log.notice(`Setting up in ${this.profileDir}`);
835857

836858
// create the data directory
@@ -915,8 +937,8 @@ class DevServer {
915937
version: '1.0.0',
916938
private: true,
917939
dependencies: {
918-
'iobroker.js-controller': jsController,
919-
'iobroker.admin': 'latest',
940+
'iobroker.js-controller': dependencies.jsController,
941+
'iobroker.admin': dependencies.admin,
920942
},
921943
'dev-server': {
922944
adminPort: adminPort,
@@ -948,12 +970,12 @@ class DevServer {
948970
949971
// installing any dependencies
950972
const { common } = await readJson(path.join(this.rootDir, 'io-package.json'));
951-
const dependencies = [
973+
const adapterDeps = [
952974
...this.getDependencies(common.dependencies),
953975
...this.getDependencies(common.globalDependencies),
954976
];
955-
this.log.debug(`Found ${dependencies.length} adapter dependencies`);
956-
for (const adapter of dependencies) {
977+
this.log.debug(`Found ${adapterDeps.length} adapter dependencies`);
978+
for (const adapter of adapterDeps) {
957979
try {
958980
await this.installRepoAdapter(adapter);
959981
} catch (error) {

0 commit comments

Comments
 (0)