Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move from variant map to array (rebased) #443

Merged
merged 5 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions src/commands/build/handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import {
defaultVariantsDirName
} from "../../params.js";
import { BuildCommandOptions, VerbosityOptions } from "./types.js";
import { getVariantOptions } from "./variants.js";
import { getPackagesToBuildProps } from "./variants.js";
import { BuildAndUploadOptions } from "../../tasks/buildAndUpload/types.js";
import path from "path";

export async function buildHandler({
provider: contentProvider,
Expand All @@ -29,6 +30,8 @@ export async function buildHandler({
}: BuildCommandOptions): Promise<ListrContextBuild> {
const skipUpload = skip_upload || skipSave;

const variantsDirPath = path.join(dir, variantsDirName);

const buildOptions: BuildAndUploadOptions = {
dir,
contentProvider,
Expand All @@ -39,11 +42,12 @@ export async function buildHandler({
composeFileName,
requireGitData,
deleteOldPins,
...getVariantOptions({
variantsDirPath,
packagesToBuildProps: getPackagesToBuildProps({
allVariants: Boolean(allVariants),
variantsStr: variants,
commaSeparatedVariants: variants,
rootDir: dir,
variantsDirName,
variantsDirPath,
composeFileName
})
};
Expand Down
40 changes: 16 additions & 24 deletions src/commands/build/variants.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,30 @@
import chalk from "chalk";
import { getAllVariantsInPath } from "../../files/variants/getAllPackageVariants.js";
import path from "path";
import { BuildVariantsMap } from "../../types.js";
import { buildVariantMap } from "../../tasks/buildAndUpload/buildVariantMap.js";
import { PackageToBuildProps } from "../../types.js";
import { generatePackagesProps } from "../../tasks/buildAndUpload/generatePackagesProps.js";

export function getVariantOptions({
export function getPackagesToBuildProps({
allVariants,
variantsStr,
commaSeparatedVariants,
rootDir,
variantsDirName,
variantsDirPath,
composeFileName
}: {
allVariants: boolean;
variantsStr?: string;
commaSeparatedVariants?: string;
rootDir: string;
variantsDirName: string;
variantsDirPath: string;
composeFileName: string;
}): { variantsMap: BuildVariantsMap; variantsDirPath: string } {
const variantsDirPath = path.join(rootDir, variantsDirName);
}): PackageToBuildProps[] {

const buildVariantMapArgs = { rootDir, variantsDirPath, composeFileName };

if (!allVariants && !variantsStr)
return {
variantsMap: buildVariantMap({ ...buildVariantMapArgs, variants: null }),
variantsDirPath
};
if (!allVariants && !commaSeparatedVariants)
return generatePackagesProps({ ...buildVariantMapArgs, variants: null });

const validVariantNames = getValidVariantNames({
variantsDirPath,
variants: variantsStr
variants: commaSeparatedVariants
});

if (validVariantNames.length === 0)
Expand All @@ -39,17 +34,14 @@ export function getVariantOptions({

console.log(
`${chalk.dim(
`Building package from template for variant(s) ${variantsStr}...`
`Building package from template for variant(s) ${commaSeparatedVariants}...`
)}`
);

return {
variantsMap: buildVariantMap({
...buildVariantMapArgs,
variants: validVariantNames
}),
variantsDirPath
};
return generatePackagesProps({
...buildVariantMapArgs,
variants: validVariantNames
});
}

/**
Expand Down
16 changes: 9 additions & 7 deletions src/commands/publish/handler.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Listr from "listr";
import path from "path";
import {
defaultComposeFileName,
defaultDir,
Expand All @@ -9,7 +10,7 @@ import { VerbosityOptions } from "../build/types.js";
import { PublishCommandOptions } from "./types.js";
import { publish } from "../../tasks/publish/index.js";
import { parseReleaseType } from "./parseReleaseType.js";
import { getVariantOptions } from "../build/variants.js";
import { getPackagesToBuildProps } from "../build/variants.js";

/**
* Common handler for CLI and programatic usage
Expand Down Expand Up @@ -37,7 +38,6 @@ export async function publishHandler({
}: PublishCommandOptions): Promise<ListrContextPublish> {
let ethProvider = provider || eth_provider;
let contentProvider = provider || content_provider;
const isMultiVariant = Boolean(allVariants) || Boolean(variants);

const isCi = process.env.CI;

Expand All @@ -61,6 +61,8 @@ export async function publishHandler({

const releaseType = parseReleaseType({ type });

const variantsDirPath = path.join(dir, variantsDirName);

const publishTasks = new Listr(
publish({
releaseType,
Expand All @@ -75,14 +77,14 @@ export async function publishHandler({
developerAddress,
githubRelease,
verbosityOptions,
...getVariantOptions({
variantsDirPath,
packagesToBuildProps: getPackagesToBuildProps({
allVariants: Boolean(allVariants),
variantsStr: variants,
commaSeparatedVariants: variants,
rootDir: dir,
variantsDirName,
variantsDirPath,
composeFileName
}),
isMultiVariant
})
}),
verbosityOptions
);
Expand Down
1 change: 0 additions & 1 deletion src/params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ export const branchNameRoot = "dappnodebot/bump-upstream/";

export const defaultDir = "./";
export const defaultVariantsDirName = "package_variants";
export const singleVariantName = "single-variant";
// This is the default name of the environment variable that will be used to select each of the variants
export const defaultVariantsEnvName = "NETWORK";
export const defaultVariantsEnvValues = ["mainnet", "testnet"];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import {
readManifest
} from "../../files/index.js";
import { Compose, Manifest } from "@dappnode/types";
import { defaultComposeFileName, singleVariantName } from "../../params.js";
import { BuildVariantsMap, BuildVariantsMapEntry } from "../../types.js";
import { defaultComposeFileName } from "../../params.js";
import { PackageToBuildProps } from "../../types.js";

export function buildVariantMap({
export function generatePackagesProps({
variants,
rootDir,
variantsDirPath,
Expand All @@ -20,37 +20,37 @@ export function buildVariantMap({
rootDir: string;
variantsDirPath: string;
composeFileName?: string;
}): BuildVariantsMap {
if (!variants || variants.length === 0)
return { [singleVariantName]: createVariantMapEntry({ rootDir, composeFileName }) };
}): PackageToBuildProps[] {
if (variants === null)
return [createPackagePropsItem({ rootDir, composeFileName, variant: null, variantsDirPath })];

const map: BuildVariantsMap = {};

for (const variant of variants) {
const variantPath = path.join(variantsDirPath, variant);
map[variant] = createVariantMapEntry({
return variants.map((variant) =>
createPackagePropsItem({
rootDir,
composeFileName,
variantPath
});
}

return map;
variant,
variantsDirPath
})
);
}

export function createVariantMapEntry({
function createPackagePropsItem({
rootDir,
composeFileName,
variantPath
variant,
variantsDirPath
}: {
rootDir: string;
composeFileName: string;
variantPath?: string;
}): BuildVariantsMapEntry {
variant: string | null;
variantsDirPath: string;
}): PackageToBuildProps {
const manifestPaths = [{ dir: rootDir }];
const composePaths = [{ dir: rootDir, composeFileName }];

if (variantPath) {
if (variant) {
const variantPath = path.join(variantsDirPath, variant);

manifestPaths.push({ dir: variantPath });
composePaths.push({ dir: variantPath, composeFileName });
}
Expand All @@ -65,6 +65,8 @@ export function createVariantMapEntry({
manifest.upstreamVersion = getUpstreamVersion({ compose, manifest });

return {
variant,

manifest,
manifestFormat,

Expand Down
22 changes: 10 additions & 12 deletions src/tasks/buildAndUpload/getBuildTasks.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import path from "path";
import Listr, { ListrTask } from "listr/index.js";
import { BuildVariantsMap, BuildVariantsMapEntry, ListrContextBuild } from "../../types.js";
import { PackageToBuildProps, ListrContextBuild } from "../../types.js";
import { buildWithBuildx } from "./buildWithBuildx.js";
import { buildWithCompose } from "./buildWithCompose.js";
import { Architecture, defaultArch } from "@dappnode/types";
Expand All @@ -14,22 +14,20 @@ import { getImageFileName } from "../../utils/getImageFileName.js";
* const imageEntry = files.find(file => /\.tar\.xz$/.test(file));
*/
export function getBuildTasks({
variantsMap,
packagesToBuildProps,
buildTimeout,
skipSave,
rootDir
}: {
variantsMap: BuildVariantsMap;
packagesToBuildProps: PackageToBuildProps[];
buildTimeout: number;
skipSave?: boolean;
rootDir: string;
}): ListrTask<ListrContextBuild>[] {
const buildTasks: ListrTask<ListrContextBuild>[] = Object.entries(
variantsMap
).flatMap(([, variantSpecs]) => {
return variantSpecs.architectures.map(architecture =>
const buildTasks: ListrTask<ListrContextBuild>[] = packagesToBuildProps.flatMap((pkgProps) => {
return pkgProps.architectures.map(architecture =>
createBuildTask({
variantSpecs,
pkgProps,
architecture,
buildTimeout,
skipSave,
Expand All @@ -42,19 +40,19 @@ export function getBuildTasks({
}

function createBuildTask({
variantSpecs,
pkgProps,
architecture,
buildTimeout,
skipSave,
rootDir
}: {
variantSpecs: BuildVariantsMapEntry;
pkgProps: PackageToBuildProps;
architecture: Architecture;
buildTimeout: number;
skipSave?: boolean;
rootDir: string;
}): ListrTask {
const { manifest, releaseDir, images, compose } = variantSpecs;
}): ListrTask<ListrContextBuild> {
const { manifest, releaseDir, images, compose } = pkgProps;
const { name, version } = manifest;
const buildFn =
architecture === defaultArch ? buildWithCompose : buildWithBuildx;
Expand Down
8 changes: 4 additions & 4 deletions src/tasks/buildAndUpload/getDeleteOldPinsTask.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { ListrTask } from "listr/index.js";
import { BuildVariantsMap, ListrContextBuild } from "../../types.js";
import { PackageToBuildProps, ListrContextBuild } from "../../types.js";
import { getGitHead } from "../../utils/git.js";
import { fetchPinsWithBranchToDelete } from "../../pinStrategy/index.js";
import { PinataPinManager } from "../../providers/pinata/pinManager.js";
import { ReleaseUploaderProvider } from "../../releaseUploader/index.js";

export function getDeleteOldPinsTask({
variantsMap,
packagesToBuildProps,
deleteOldPins,
releaseUploaderProvider
}: {
variantsMap: BuildVariantsMap;
packagesToBuildProps: PackageToBuildProps[];
deleteOldPins: boolean;
releaseUploaderProvider: ReleaseUploaderProvider;
}): ListrTask<ListrContextBuild> {
Expand All @@ -25,7 +25,7 @@ export function getDeleteOldPinsTask({
// Unpin items on the same branch but previous (ancestor) commits
const pinata = new PinataPinManager(releaseUploaderProvider);

for (const [, { manifest }] of Object.entries(variantsMap)) {
for (const { manifest } of packagesToBuildProps) {
const pinsToDelete = await fetchPinsWithBranchToDelete(
pinata,
manifest,
Expand Down
Loading
Loading