mirror of
https://github.com/SamKirkland/FTP-Deploy-Action.git
synced 2026-04-10 12:32:17 +02:00
v4 beta
This commit is contained in:
106
src/main.ts
106
src/main.ts
@@ -1,91 +1,31 @@
|
||||
import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
import fs from 'fs';
|
||||
import { promisify } from 'util';
|
||||
import { IActionArguments } from './types';
|
||||
import * as core from "@actions/core";
|
||||
import { deploy } from "@samkirkland/ftp-deploy";
|
||||
import { IFtpDeployArguments } from "@samkirkland/ftp-deploy/dist/module/types";
|
||||
|
||||
const writeFileAsync = promisify(fs.writeFile);
|
||||
const errorDeploying = "⚠️ Error deploying";
|
||||
|
||||
async function run() {
|
||||
try {
|
||||
const userArguments = getUserArguments();
|
||||
|
||||
await configureHost(userArguments);
|
||||
await syncFiles(userArguments);
|
||||
|
||||
console.log("✅ Deploy Complete");
|
||||
}
|
||||
catch (error) {
|
||||
console.error(errorDeploying);
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
run();
|
||||
|
||||
async function configureHost(args: IActionArguments): Promise<void> {
|
||||
if (args.knownHosts === "") {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const sshFolder = `${process.env['HOME']}/.ssh`;
|
||||
|
||||
await exec.exec(`mkdir -v -p ${sshFolder}`);
|
||||
await exec.exec(`chmod 700 ${sshFolder}`);
|
||||
writeFileAsync(`${sshFolder}/known_hosts`, args.knownHosts);
|
||||
await exec.exec(`chmod 755 ${sshFolder}/known_hosts`);
|
||||
|
||||
console.log("✅ Configured known_hosts");
|
||||
}
|
||||
catch (error) {
|
||||
console.error("⚠️ Error configuring known_hosts");
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
function getUserArguments(): IActionArguments {
|
||||
return {
|
||||
ftp_server: core.getInput("ftp-server", { required: true }),
|
||||
ftp_username: core.getInput("ftp-username", { required: true }),
|
||||
ftp_password: core.getInput("ftp-password", { required: true }),
|
||||
local_dir: withDefault(core.getInput("local-dir"), "./"),
|
||||
gitFtpArgs: withDefault(core.getInput("git-ftp-args"), ""),
|
||||
knownHosts: withDefault(core.getInput("known-hosts"), "")
|
||||
async function runDeployment() {
|
||||
const args: IFtpDeployArguments = {
|
||||
server: core.getInput("server", { required: true }),
|
||||
username: core.getInput("username", { required: true }),
|
||||
password: core.getInput("password", { required: true }),
|
||||
protocol: core.getInput("protocol") as any, // todo fix
|
||||
port: core.getInput("port") as any, // todo fix
|
||||
"local-dir": core.getInput("local-dir") as any, // todo fix
|
||||
"server-dir": core.getInput("server-dir") as any, // todo fix
|
||||
"state-name": core.getInput("state-name") as any, // todo fix
|
||||
"dry-run": core.getInput("dry-run") as any, // todo fix
|
||||
"dangerous-clean-slate": core.getInput("dangerous-clean-slate") as any, // todo fix
|
||||
"include": core.getInput("include") as any, // todo fix
|
||||
"exclude": core.getInput("exclude") as any, // todo fix
|
||||
"log-level": core.getInput("log-level") as any // todo fix
|
||||
};
|
||||
}
|
||||
|
||||
function withDefault(value: string, defaultValue: string) {
|
||||
if (value === "" || value === null || value === undefined) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync changed files
|
||||
*/
|
||||
async function syncFiles(args: IActionArguments) {
|
||||
try {
|
||||
await core.group("Uploading files", async () => {
|
||||
return await exec.exec(
|
||||
"git ftp push",
|
||||
[
|
||||
"--force",
|
||||
"--auto-init",
|
||||
"--verbose",
|
||||
`--syncroot=${args.local_dir}`,
|
||||
`--user=${args.ftp_username}`,
|
||||
`--passwd=${args.ftp_password}`,
|
||||
args.gitFtpArgs!,
|
||||
args.ftp_server!
|
||||
]
|
||||
);
|
||||
});
|
||||
await deploy(args);
|
||||
}
|
||||
catch (error) {
|
||||
core.setFailed(error.message);
|
||||
core.setFailed(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
runDeployment();
|
||||
Reference in New Issue
Block a user