Skip to content

Commit

Permalink
fix pip.installPackageDependencies order
Browse files Browse the repository at this point in the history
  • Loading branch information
threeal committed Jan 31, 2023
1 parent 5511976 commit 7d40edc
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 79 deletions.
68 changes: 33 additions & 35 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -535,44 +535,42 @@ async function installPackageDependencies(packageInfo) {
}
}
async function installPackage(packageName) {
const pkgInfo = await (0, info_1.showPackageInfo)(packageName);
if (pkgInfo !== null) {
await installPackageDependencies(pkgInfo);
return;
}
packageName = validatePackageName(packageName);
await log.group(`Installing ${packageName} package...`, async () => {
core.info(`Restoring ${packageName} package from cache...`);
if (await (0, cache_1.restorePackage)(packageName)) {
core.info(`Done restoring ${packageName} package from cache`);
let pkgInfo = await (0, info_1.showPackageInfo)(packageName);
if (pkgInfo === null) {
packageName = validatePackageName(packageName);
pkgInfo = await log.group(`Installing ${packageName} package...`, async () => {
core.info(`Restoring ${packageName} package from cache...`);
if (await (0, cache_1.restorePackage)(packageName)) {
core.info(`Done restoring ${packageName} package from cache`);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await (0, info_1.showPackageInfo)(packageName);
if (pkgInfo !== null) {
core.info(`Package ${packageName} is valid`);
return pkgInfo;
}
core.info(`WARNING: Invalid ${packageName} package. Cache probably is corrupted!`);
}
core.info(`Installing ${packageName} package using pip...`);
await exec.exec("python3", [
"-m",
"pip",
"install",
"--user",
"--no-deps",
packageName,
]);
core.info(`Saving ${packageName} package to cache...`);
await (0, cache_1.cachePackage)(packageName);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await (0, info_1.showPackageInfo)(packageName);
if (pkgInfo !== null) {
core.info(`Package ${packageName} is valid`);
await installPackageDependencies(pkgInfo);
return;
if (pkgInfo === null) {
throw new Error(`Invalid ${packageName} package. Installation probably is corrupted!`);
}
core.info(`WARNING: Invalid ${packageName} package. Cache probably is corrupted!`);
}
core.info(`Installing ${packageName} package using pip...`);
await exec.exec("python3", [
"-m",
"pip",
"install",
"--user",
"--no-deps",
packageName,
]);
core.info(`Saving ${packageName} package to cache...`);
await (0, cache_1.cachePackage)(packageName);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await (0, info_1.showPackageInfo)(packageName);
if (pkgInfo === null) {
throw new Error(`Invalid ${packageName} package. Installation probably is corrupted!`);
}
core.info(`Package ${packageName} is valid`);
await installPackageDependencies(pkgInfo);
});
core.info(`Package ${packageName} is valid`);
return pkgInfo;
});
}
await installPackageDependencies(pkgInfo);
}
exports.installPackage = installPackage;

Expand Down
2 changes: 1 addition & 1 deletion dist/index.js.map

Large diffs are not rendered by default.

81 changes: 41 additions & 40 deletions src/deps/pip/install.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,46 +21,47 @@ async function installPackageDependencies(packageInfo: PackageInfo) {
}

export async function installPackage(packageName: string) {
const pkgInfo = await showPackageInfo(packageName);
if (pkgInfo !== null) {
await installPackageDependencies(pkgInfo);
return;
}
packageName = validatePackageName(packageName);
await log.group(`Installing ${packageName} package...`, async () => {
core.info(`Restoring ${packageName} package from cache...`);
if (await restorePackage(packageName)) {
core.info(`Done restoring ${packageName} package from cache`);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await showPackageInfo(packageName);
if (pkgInfo !== null) {
let pkgInfo = await showPackageInfo(packageName);
if (pkgInfo === null) {
packageName = validatePackageName(packageName);
pkgInfo = await log.group(
`Installing ${packageName} package...`,
async (): Promise<PackageInfo> => {
core.info(`Restoring ${packageName} package from cache...`);
if (await restorePackage(packageName)) {
core.info(`Done restoring ${packageName} package from cache`);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await showPackageInfo(packageName);
if (pkgInfo !== null) {
core.info(`Package ${packageName} is valid`);
return pkgInfo;
}
core.info(
`WARNING: Invalid ${packageName} package. Cache probably is corrupted!`
);
}
core.info(`Installing ${packageName} package using pip...`);
await exec.exec("python3", [
"-m",
"pip",
"install",
"--user",
"--no-deps",
packageName,
]);
core.info(`Saving ${packageName} package to cache...`);
await cachePackage(packageName);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await showPackageInfo(packageName);
if (pkgInfo === null) {
throw new Error(
`Invalid ${packageName} package. Installation probably is corrupted!`
);
}
core.info(`Package ${packageName} is valid`);
await installPackageDependencies(pkgInfo);
return;
return pkgInfo;
}
core.info(
`WARNING: Invalid ${packageName} package. Cache probably is corrupted!`
);
}
core.info(`Installing ${packageName} package using pip...`);
await exec.exec("python3", [
"-m",
"pip",
"install",
"--user",
"--no-deps",
packageName,
]);
core.info(`Saving ${packageName} package to cache...`);
await cachePackage(packageName);
core.info(`Validating ${packageName} package...`);
const pkgInfo = await showPackageInfo(packageName);
if (pkgInfo === null) {
throw new Error(
`Invalid ${packageName} package. Installation probably is corrupted!`
);
}
core.info(`Package ${packageName} is valid`);
await installPackageDependencies(pkgInfo);
});
);
}
await installPackageDependencies(pkgInfo);
}
6 changes: 3 additions & 3 deletions src/log.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as core from "@actions/core";
import * as chrono from "./chrono";

export async function group(
export async function group<Type>(
name: string,
fn: () => Promise<unknown>
): Promise<unknown> {
fn: () => Promise<Type>
): Promise<Type> {
const res = await core.group(name, async () => {
const time = chrono.now();
const res = await fn();
Expand Down

0 comments on commit 7d40edc

Please sign in to comment.