fix: omit macos files and create folders every time

This commit is contained in:
Mauricio Siu
2024-12-25 04:51:49 -06:00
parent 229a9a3a5e
commit d4a3c5cff9
2 changed files with 22 additions and 10 deletions

View File

@@ -555,9 +555,9 @@ export const applicationRouter = createTRPCRouter({
}); });
} }
updateApplication(input.applicationId as string, { await updateApplication(input.applicationId as string, {
sourceType: "drop", sourceType: "drop",
dropBuildPath: input.dropBuildPath, dropBuildPath: input.dropBuildPath || "",
}); });
await unzipDrop(zipFile, app); await unzipDrop(zipFile, app);

View File

@@ -27,7 +27,9 @@ export const unzipDrop = async (zipFile: File, application: Application) => {
const buffer = Buffer.from(arrayBuffer); const buffer = Buffer.from(arrayBuffer);
const zip = new AdmZip(buffer); const zip = new AdmZip(buffer);
const zipEntries = zip.getEntries(); const zipEntries = zip
.getEntries()
.filter((entry) => !entry.entryName.startsWith("__MACOSX"));
const rootEntries = zipEntries.filter( const rootEntries = zipEntries.filter(
(entry) => (entry) =>
@@ -59,14 +61,22 @@ export const unzipDrop = async (zipFile: File, application: Application) => {
if (!filePath) continue; if (!filePath) continue;
const fullPath = path.join(outputPath, filePath); const fullPath = path.join(outputPath, filePath).replace(/\\/g, "/");
if (application.serverId) { if (application.serverId) {
if (entry.isDirectory) { if (!entry.isDirectory) {
await execAsyncRemote(application.serverId, `mkdir -p ${fullPath}`);
} else {
if (sftp === null) throw new Error("No SFTP connection available"); if (sftp === null) throw new Error("No SFTP connection available");
await uploadFileToServer(sftp, entry.getData(), fullPath); try {
const dirPath = path.dirname(fullPath);
await execAsyncRemote(
application.serverId,
`mkdir -p "${dirPath}"`,
);
await uploadFileToServer(sftp, entry.getData(), fullPath);
} catch (err) {
console.error(`Error uploading file ${fullPath}:`, err);
throw err;
}
} }
} else { } else {
if (entry.isDirectory) { if (entry.isDirectory) {
@@ -103,7 +113,6 @@ const getSFTPConnection = async (serverId: string): Promise<SFTPWrapper> => {
port: server.port, port: server.port,
username: server.username, username: server.username,
privateKey: server.sshKey?.privateKey, privateKey: server.sshKey?.privateKey,
timeout: 99999,
}); });
}); });
}; };
@@ -115,7 +124,10 @@ const uploadFileToServer = (
): Promise<void> => { ): Promise<void> => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
sftp.writeFile(remotePath, data, (err) => { sftp.writeFile(remotePath, data, (err) => {
if (err) return reject(err); if (err) {
console.error(`SFTP write error for ${remotePath}:`, err);
return reject(err);
}
resolve(); resolve();
}); });
}); });