diff --git a/src/executable.js b/src/executable.js index 7286bcc..8b09eb8 100644 --- a/src/executable.js +++ b/src/executable.js @@ -1,14 +1,11 @@ -import { mix } from "mixwith"; import { NamedDefaultableInMemoryEntity, RuntimeItemsMixin } from "@exabyte-io/code.js/dist/entity"; +import { mix } from "mixwith"; + import { Flavor } from "./flavor"; export class Executable extends mix(NamedDefaultableInMemoryEntity).with(RuntimeItemsMixin) { static Flavor = Flavor; - constructor(config) { - super(config); - } - toJSON(exclude) { return super.toJSON(["flavors"].concat(exclude)); } @@ -18,18 +15,18 @@ export class Executable extends mix(NamedDefaultableInMemoryEntity).with(Runtime } get flavors() { - return Object.keys(this.flavorsTree).map(key => { - return this.constructor.Flavor.create( - Object.assign({}, this.flavorsTree[key], {name: key, executable: this}) - ); + return Object.keys(this.flavorsTree).map((key) => { + return this.constructor.Flavor.create({ + ...this.flavorsTree[key], + name: key, + executable: this, + }); }); } get flavorsFromTree() { - return Object.keys(this.flavorsTree).map(key => { - return new this.constructor.Flavor( - Object.assign({}, this.flavorsTree[key], {name: key}) - ); + return Object.keys(this.flavorsTree).map((key) => { + return new this.constructor.Flavor({ ...this.flavorsTree[key], name: key }); }); } @@ -38,11 +35,15 @@ export class Executable extends mix(NamedDefaultableInMemoryEntity).with(Runtime } getFlavorByName(name) { - return this.getEntityByName(this.flavors, "flavor", name); + let flavor = this.getEntityByName(this.flavors, "flavor", name); + if (!flavor) { + console.warn(`Could not find flavor '${name}'! Using default instead.`); + flavor = this.getEntityByName(this.flavors, "flavor", undefined); // extracts default flavor + } + return flavor; } getFlavorByConfig(config) { return config ? this.getFlavorByName(config.name) : this.defaultFlavor; } - }