Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
deployacc.js 2.06 KiB
require('dotenv').config();
const fs = require('fs');
const path = require('path');
var mime = require('mime-types')
const Minio = require('minio');

const minioClient = new Minio.Client({
  endPoint: 'monitor.control.lofar',
  port: 9000,
  useSSL: false,
  accessKey: process.env.MINIO_ACCESS_KEY,
  secretKey: process.env.MINIO_SECRET,
});

const bucketName = "tmss-frontend-web-acceptance";
const sourceFolder = 'build';

async function uploadRecursive(folderPath) {
  const items = fs.readdirSync(folderPath);

  for (const item of items) {
    const itemPath = path.join(folderPath, item);

    if (fs.statSync(itemPath).isDirectory()) {
      await uploadRecursive(itemPath);  // If it's a directory, recursively upload its contents
    } else {
      // If it's a file, upload it to Minio
      uploadFile(itemPath, item);
    }
  }
}

async function uploadFile(itemPath, item) {
  const minioObjectName = path.relative("", itemPath).replace(/\\/g, '/');
  let mimetype = mime.lookup(minioObjectName);
  try {
    
    let  metaData = { 'Content-Type': mimetype, };
    
    if (item.endsWith("html") ) {  metaData = { 'Content-Type': 'text/html', };}
    

    
    let putResult = await minioClient.fPutObject(bucketName, minioObjectName, itemPath, metaData);
    if (putResult.err) {
      console.log(`File "${item}" Not uploaded . {putResult?.err} ${mimetype}`);
    }
    else {
      console.log(`File "${item}" uploaded successfully to ${itemPath}  etag: ${putResult?.etag} ${mimetype}`);
    }
  }
  catch (e) {
    console.log(`File "${itemPath} ${item}" Not uploaded  to ${minioObjectName} ${mimetype}   ${e}`);
  }
}

async function uploadFolderToMinio() {
  try {
    // BUcket should exist
    /*
    const bucketExists = await minioClient.bucketExists(bucketName);
    if (!bucketExists) {
         console.error(" bucket did not exist, exitting")
     return
    }
    */

    await uploadRecursive(sourceFolder);       // Start recursive upload

    console.log('Folder uploaded successfully.');
  } catch (err) {
    console.error('An error occurred:', err);
  }
}

uploadFolderToMinio()