diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..ca30fa2 --- /dev/null +++ b/src/main.js @@ -0,0 +1,46 @@ +// Importing necessary modules +const fs = require('fs'); +const core = require('@actions/core'); +// eslint-disable-next-line no-unused-vars +const github = require('@actions/github'); + +// Getting the path to the workspace from environment variables +const workspacePath = process.env.GITHUB_WORKSPACE; + +// Getting inputs from the workflow +const options = core.getInput('options'); +const path = core.getInput('path'); + +// Importing the child_process module for executing shell commands +var exec = require('child_process').exec; + +// Initializing an error variable +let error; + +// Checking if the platform is Windows +if (process.platform === 'win32') { + // Checking if the GitHub workspace exists and is not empty + if (fs.existsSync(process.env.GITHUB_WORKSPACE) && fs.readdirSync(workspacePath).length > 0) { + // Building and executing the Inno Setup compiler command + exec(`"%PROGRAMFILES(X86)%\\Inno Setup 6\\iscc.exe" ${options} "${workspacePath}\\${path}"`, { stdio: 'ignore' }, function (error, stdout, stderr) { + // Logging the standard output of the command + console.log(stdout); + + // Handling errors, if any + if (error) { + core.setFailed(stderr); + process.exit(error.code || 1); + } + }); + } else { + // Setting an error code and failing the workflow if the repository is not cloned + error = { code: 1 } + core.setFailed('The repository was not cloned. Please specify the actions/checkout action before this step.'); + process.exit(error.code); + } +} else { + // Setting an error code and failing the workflow if the platform is not Windows + error = { code: 1 }; + core.setFailed('This action is only supported on Windows!'); + process.exit(error.code); +}