Skip to content

Commit

Permalink
error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
tido64 committed Oct 6, 2022
1 parent 880262c commit b910879
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 4 deletions.
57 changes: 54 additions & 3 deletions packages/dep-check/src/check.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { KitConfig } from "@rnx-kit/config";
import { getKitCapabilities, getKitConfig } from "@rnx-kit/config";
import { error, info, warn } from "@rnx-kit/console";
import { isPackageManifest, readPackage } from "@rnx-kit/tools-node/package";
Expand All @@ -19,6 +20,7 @@ import type {
CheckConfig,
CheckOptions,
Command,
Preset,
} from "./types";

export function getCheckConfig(
Expand Down Expand Up @@ -161,6 +163,34 @@ export function checkPackageManifest(
return 0;
}

function containsValidPresets(config: KitConfig["alignDeps"]): boolean {
const presets = config?.presets;
return !presets || (Array.isArray(presets) && presets.length > 0);
}

function containsValidRequirements(config: KitConfig["alignDeps"]): boolean {
const requirements = config?.requirements;
if (requirements) {
if (Array.isArray(requirements)) {
return requirements.length > 0;
} else if (typeof requirements === "object") {
return (
Array.isArray(requirements.production) &&
requirements.production.length > 0
);
}
}
return false;
}

function ensurePreset(preset: Preset, requirements: string[]): void {
if (Object.keys(preset).length === 0) {
throw new Error(
`No profiles could satisfy requirements: ${requirements.join(", ")}`
);
}
}

export function v2_getConfig(
manifestPath: string,
{ uncheckedReturnCode }: CheckOptions
Expand Down Expand Up @@ -191,6 +221,19 @@ export function v2_getConfig(

const { kitType = "library", alignDeps, ...config } = kitConfig;
if (alignDeps) {
const errors = [];
if (!containsValidPresets(alignDeps)) {
errors.push("'alignDeps.presets' cannot be empty");
}
if (!containsValidRequirements(alignDeps)) {
errors.push("'alignDeps.requirements' cannot be empty");
}
if (errors.length > 0) {
for (const e of errors) {
error(e);
}
throw new Error("align-deps was not properly configured");
}
return {
kitType,
alignDeps: {
Expand Down Expand Up @@ -228,23 +271,31 @@ function resolve(
) {
const { capabilities, presets, requirements } = alignDeps;

const prodRequirements = Array.isArray(requirements)
? requirements
: requirements.production;
const initialProdPreset = v2_profilesSatisfying(
Array.isArray(requirements) ? requirements : requirements.production,
prodRequirements,
presets,
projectRoot
);
ensurePreset(initialProdPreset, prodRequirements);

const devPreset = (() => {
if (kitType === "app") {
// Preset for development is unused when the package is an app.
return {};
} else if (Array.isArray(requirements)) {
return initialProdPreset;
} else {
return v2_profilesSatisfying(
requirements.development,
const devRequirements = requirements.development;
const devPreset = v2_profilesSatisfying(
devRequirements,
presets,
projectRoot
);
ensurePreset(devPreset, devRequirements);
return devPreset;
}
})();

Expand Down
5 changes: 4 additions & 1 deletion packages/dep-check/src/compatibility/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ import { warn } from "@rnx-kit/console";
import type { AlignDepsConfig, CheckConfig } from "../types";

function dropPatchFromVersion(version: string): string {
return version.replace(/(\d+\.\d+)[-.\w]+/g, "$1");
return version
.split("||")
.map((v) => v.trim().split(".").slice(0, 2).join("."))
.join(" || ");
}

function oldConfigKeys(config: KitConfig): (keyof KitConfig)[] {
Expand Down

0 comments on commit b910879

Please sign in to comment.