const gulp = require('gulp');
const ftp = require('basic-ftp');
const log = require('fancy-log');
const dotenv = require('dotenv');
const path = require('path');
const fs = require('fs');

// Laden der Umgebungsvariablen aus der .env-Datei (optional)
dotenv.config();

// Deploy Task mit basic-ftp
gulp.task('deploy', async function () {
  const client = new ftp.Client();
  client.ftp.verbose = true; // Aktiviert detaillierte Logs

  try {
    // Zugriff auf die FTP-Verbindung
    await client.access({
      host: process.env.FTP_HOST || 'ftps.verag.ag',
      user: process.env.FTP_USER || 'daniel',
      password: process.env.FTP_PASS || 'debug',
      secure: true, // Aktiviert FTPS (erfordert PROT P)
      secureOptions: {
        rejectUnauthorized: false // Nur verwenden, wenn Ihr Server ein selbstsigniertes Zertifikat verwendet
      }
    });

    // Wechseln in das Zielverzeichnis
    await client.ensureDir(process.env.FTP_DEST || '/Websites/avisotv.app.verag.ag');
    await client.cd(process.env.FTP_DEST || '/Websites/avisotv.app.verag.ag');

    // Rekursives Hochladen des Inhalts des 'www'-Verzeichnisses
    await client.uploadFromDir('www');

    log('Deployment erfolgreich abgeschlossen.');
  }
  catch (err) {
    log.error('Deployment fehlgeschlagen:', err);
  }
  client.close();
});
