Adapted to latest CLI.

Signed-off-by: Akos Kitta <kittaakos@typefox.io>
This commit is contained in:
Akos Kitta 2019-08-29 09:52:56 +02:00
parent e636e06a7e
commit 9f7aec4091
4 changed files with 44 additions and 33 deletions

View File

@ -43,44 +43,24 @@ export class ArduinoCli {
throw new Error(stderr); throw new Error(stderr);
} }
// const { sketchbook_path: sketchDirPath, arduino_data: dataDirPath } = JSON.parse(raw); const { sketchbook_path, arduino_data } = JSON.parse(stdout.trim());
// https://github.com/arduino/arduino-cli/issues/342 if (!sketchbook_path) {
// XXX: this is a hack. The CLI provides a non-valid JSON.
const config: Partial<Config> = {};
const raw = stdout.trim();
for (const line of raw.split(/\r?\n/) || []) {
// TODO: Named capture groups are avail from ES2018.
// const pair = line.match(/(?<key>[^:]+):(?<value>[^,]+),?/);
const index = line.indexOf(':');
if (index !== -1) {
const key = line.substr(0, index).trim();
const value = line.substr(index + 1, line.length).trim();
if (!!key && !!value) {
if (key === 'sketchbook_path') {
config.sketchDirUri = FileUri.create(value).toString();
} else if (key === 'arduino_data') {
config.dataDirUri = FileUri.create(value).toString();
}
}
}
}
if (!config.dataDirUri) {
reject(new Error(`Could not parse config. 'arduino_data' was missing from: ${stdout}`));
return;
}
if (!config.sketchDirUri) {
reject(new Error(`Could not parse config. 'sketchbook_path' was missing from: ${stdout}`)); reject(new Error(`Could not parse config. 'sketchbook_path' was missing from: ${stdout}`));
return; return;
} }
this.logger.info(`Retrieved the default configuration from the CLI: ${JSON.stringify(config)}`); if (!arduino_data) {
reject(new Error(`Could not parse config. 'arduino_data' was missing from: ${stdout}`));
return;
}
resolve({ sketchDirUri: config.sketchDirUri, dataDirUri: config.dataDirUri }); resolve({
sketchDirUri: FileUri.create(sketchbook_path).toString(),
dataDirUri: FileUri.create(arduino_data).toString()
});
}); });
}); });
} }
} }

View File

@ -33,7 +33,7 @@ export class ArduinoDaemon implements BackendApplicationContribution {
if (!this.cliContribution.debugCli) { if (!this.cliContribution.debugCli) {
const executable = await this.cli.getExecPath(); const executable = await this.cli.getExecPath();
this.logger.info(`>>> Starting 'arduino-cli' daemon... [${executable}]`); this.logger.info(`>>> Starting 'arduino-cli' daemon... [${executable}]`);
const daemon = exec(`${executable} --debug daemon`, (err, stdout, stderr) => { const daemon = exec(`${executable} daemon -v --log-level info --format json`, (err, stdout, stderr) => {
if (err || stderr) { if (err || stderr) {
console.log(err || new Error(stderr)); console.log(err || new Error(stderr));
return; return;

View File

@ -51,6 +51,9 @@ export class CompileReq extends jspb.Message {
getExportfile(): string; getExportfile(): string;
setExportfile(value: string): void; setExportfile(value: string): void;
getJobs(): number;
setJobs(value: number): void;
serializeBinary(): Uint8Array; serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): CompileReq.AsObject; toObject(includeInstance?: boolean): CompileReq.AsObject;
@ -77,6 +80,7 @@ export namespace CompileReq {
quiet: boolean, quiet: boolean,
vidpid: string, vidpid: string,
exportfile: string, exportfile: string,
jobs: number,
} }
} }

View File

@ -81,7 +81,8 @@ proto.cc.arduino.cli.commands.CompileReq.toObject = function(includeInstance, ms
verbose: jspb.Message.getFieldWithDefault(msg, 10, false), verbose: jspb.Message.getFieldWithDefault(msg, 10, false),
quiet: jspb.Message.getFieldWithDefault(msg, 11, false), quiet: jspb.Message.getFieldWithDefault(msg, 11, false),
vidpid: jspb.Message.getFieldWithDefault(msg, 12, ""), vidpid: jspb.Message.getFieldWithDefault(msg, 12, ""),
exportfile: jspb.Message.getFieldWithDefault(msg, 13, "") exportfile: jspb.Message.getFieldWithDefault(msg, 13, ""),
jobs: jspb.Message.getFieldWithDefault(msg, 14, 0)
}; };
if (includeInstance) { if (includeInstance) {
@ -171,6 +172,10 @@ proto.cc.arduino.cli.commands.CompileReq.deserializeBinaryFromReader = function(
var value = /** @type {string} */ (reader.readString()); var value = /** @type {string} */ (reader.readString());
msg.setExportfile(value); msg.setExportfile(value);
break; break;
case 14:
var value = /** @type {number} */ (reader.readInt32());
msg.setJobs(value);
break;
default: default:
reader.skipField(); reader.skipField();
break; break;
@ -292,6 +297,13 @@ proto.cc.arduino.cli.commands.CompileReq.serializeBinaryToWriter = function(mess
f f
); );
} }
f = message.getJobs();
if (f !== 0) {
writer.writeInt32(
14,
f
);
}
}; };
@ -527,6 +539,21 @@ proto.cc.arduino.cli.commands.CompileReq.prototype.setExportfile = function(valu
}; };
/**
* optional int32 jobs = 14;
* @return {number}
*/
proto.cc.arduino.cli.commands.CompileReq.prototype.getJobs = function() {
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 14, 0));
};
/** @param {number} value */
proto.cc.arduino.cli.commands.CompileReq.prototype.setJobs = function(value) {
jspb.Message.setProto3IntField(this, 14, value);
};
/** /**
* Generated by JsPbCodeGenerator. * Generated by JsPbCodeGenerator.