63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import { FarmwareManifestInfo } from "./interfaces";
|
|
import {
|
|
LegacyFarmwareManifest as FarmwareManifestV1,
|
|
FarmwareManifest as FarmwareManifestV2,
|
|
} from "farmbot";
|
|
import { t } from "../i18next_wrapper";
|
|
|
|
const addMinorAndPatchZeros = (version: string | undefined): string =>
|
|
version ? ">=" + version + ".0.0" : "";
|
|
|
|
/** Generate FarmwareManifestInfo for any version of Farmware manifest. */
|
|
// tslint:disable-next-line:no-any
|
|
export const manifestInfo = (manifest: any): FarmwareManifestInfo => {
|
|
if (manifest.farmware_manifest_version) {
|
|
const fw: FarmwareManifestV2 = manifest;
|
|
return {
|
|
name: fw.package,
|
|
installation_pending: false,
|
|
url: fw.url,
|
|
config: Object.values(fw.config),
|
|
meta: {
|
|
fbos_version: fw.farmbot_os_version_requirement,
|
|
farmware_tools_version: fw.farmware_tools_version_requirement,
|
|
description: fw.description,
|
|
language: fw.language,
|
|
version: fw.package_version,
|
|
author: fw.author,
|
|
}
|
|
};
|
|
} else {
|
|
const fw: FarmwareManifestV1 = manifest;
|
|
return {
|
|
name: fw.name,
|
|
installation_pending: false,
|
|
url: fw.url,
|
|
config: fw.config,
|
|
meta: {
|
|
fbos_version: addMinorAndPatchZeros(fw.meta.min_os_version_major),
|
|
farmware_tools_version: fw.farmware_tools_version || ">=0.0.0",
|
|
description: fw.meta.description,
|
|
language: fw.meta.language,
|
|
version: fw.meta.version,
|
|
author: fw.meta.author,
|
|
}
|
|
};
|
|
}
|
|
};
|
|
|
|
export const manifestInfoPending = (name: string, url: string) => ({
|
|
name,
|
|
installation_pending: true,
|
|
url,
|
|
config: [],
|
|
meta: {
|
|
fbos_version: "",
|
|
farmware_tools_version: "",
|
|
description: t("installation pending"),
|
|
language: "",
|
|
version: "",
|
|
author: "",
|
|
}
|
|
});
|