Skip to content
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
24 changes: 19 additions & 5 deletions lib/DeploymentProvider/Providers/WebAppDeploymentProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,20 +121,26 @@ class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebApp
}
deleteReleaseZipForLinuxPhpApps(webPackage) {
return __awaiter(this, void 0, void 0, function* () {
const releaseZipPath = path_1.default.join(webPackage, 'release.zip');
// Ignore if the app is not a Linux app or if release.zip does not exist
if (!this.actionParams.isLinux || !fs_1.default.existsSync(releaseZipPath)) {
if (!this.actionParams.isLinux) {
core.info(`It's not a Linux app, skipping deletion of release.zip`);
return;
}
const releaseZipPath = path_1.default.join(webPackage, 'release.zip');
if (!fs_1.default.existsSync(releaseZipPath)) {
core.info(`release.zip does not exist, skipping deletion: ${releaseZipPath}`);
return;
}
let isPhpApp = yield this.checkIfTheAppIsPhpApp(webPackage);
// No need to delete release.zip for non-PHP apps
if (!isPhpApp) {
core.info(`Not a PHP app, skipping deletion of release.zip: ${releaseZipPath}`);
return;
}
// Delete release.zip if it exists
try {
yield fs_1.default.promises.unlink(releaseZipPath);
core.debug(`Deleted release.zip`);
core.info(`Deleted release.zip`);
}
catch (error) {
core.debug(`Error while deleting release.zip for Linux PHP app: ${error}`);
Expand All @@ -147,14 +153,22 @@ class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebApp
// Check if the webPackage folder contains a composer.json file
const composerFile = 'composer.json';
if (fs_1.default.existsSync(path_1.default.join(webPackage, composerFile))) {
core.info(`Detected PHP app by presence of ${composerFile}`);
return true;
}
// Check if the webPackage folder contains a .php file
const hasPhpFiles = fs_1.default.readdirSync(webPackage).some(file => file.endsWith('.php'));
core.info(`Checking for .php files in the web package directory: ${webPackage}`);
const hasPhpFiles = fs_1.default.readdirSync(webPackage, { withFileTypes: true, recursive: true }).some(file => file.isFile() && file.name.endsWith('.php'));
if (hasPhpFiles) {
core.info(`Detected PHP app by presence of .php files`);
}
else {
core.info(`No .php files found in the web package directory.`);
}
return hasPhpFiles;
}
catch (error) {
core.debug(`Error while checking if the app is PHP: ${error}`);
core.info(`Error while checking if the app is PHP: ${error}`);
}
return false;
});
Expand Down
29 changes: 23 additions & 6 deletions src/DeploymentProvider/Providers/WebAppDeploymentProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { addAnnotation } from 'azure-actions-appservice-rest/Utilities/Annotatio

import fs from 'fs';
import path from 'path';
import { dir } from 'console';

export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider {

Expand Down Expand Up @@ -86,25 +87,32 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider {
}

private async deleteReleaseZipForLinuxPhpApps(webPackage: string): Promise<void> {
const releaseZipPath = path.join(webPackage, 'release.zip');

// Ignore if the app is not a Linux app or if release.zip does not exist
if (!this.actionParams.isLinux || !fs.existsSync(releaseZipPath)) {
if (!this.actionParams.isLinux) {
core.info(`It's not a Linux app, skipping deletion of release.zip`);
return;
}

const releaseZipPath = path.join(webPackage, 'release.zip');

if (!fs.existsSync(releaseZipPath)) {
core.info(`release.zip does not exist, skipping deletion: ${releaseZipPath}`);
return;
}

let isPhpApp = await this.checkIfTheAppIsPhpApp(webPackage);

// No need to delete release.zip for non-PHP apps
if (!isPhpApp) {
core.info(`Not a PHP app, skipping deletion of release.zip: ${releaseZipPath}`);
return;
}

// Delete release.zip if it exists

try {
await fs.promises.unlink(releaseZipPath);
core.debug(`Deleted release.zip`);
core.info(`Deleted release.zip`);
} catch (error) {
core.debug(`Error while deleting release.zip for Linux PHP app: ${error}`);
}
Expand All @@ -116,17 +124,26 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider {
// Check if the webPackage folder contains a composer.json file
const composerFile = 'composer.json';
if (fs.existsSync(path.join(webPackage, composerFile))) {
core.info(`Detected PHP app by presence of ${composerFile}`);
return true;
}

// Check if the webPackage folder contains a .php file
const hasPhpFiles = fs.readdirSync(webPackage).some(file => file.endsWith('.php'));
core.info(`Checking for .php files in the web package directory: ${webPackage}`);
const hasPhpFiles = fs.readdirSync(webPackage, {withFileTypes: true, recursive: true}).some(file => file.isFile() && file.name.endsWith('.php'));

if (hasPhpFiles) {
core.info(`Detected PHP app by presence of .php files`);
} else {
core.info(`No .php files found in the web package directory.`);
}

return hasPhpFiles;
} catch (error) {
core.debug(`Error while checking if the app is PHP: ${error}`);
core.info(`Error while checking if the app is PHP: ${error}`);
}

return false;
}

}
Loading