fix(all): TRUE multicloud.
This commit is contained in:
		
							parent
							
								
									a98323dfd1
								
							
						
					
					
						commit
						85fab5bbc1
					
				
					 3 changed files with 46 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -54,6 +54,7 @@ import { GBServer } from '../../../src/app.js';
 | 
			
		|||
import { GuaribasUser } from '../../security.gbapp/models/index.js';
 | 
			
		||||
import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js';
 | 
			
		||||
import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js';
 | 
			
		||||
import { GBUtil } from '../../../src/util.js';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Services for server administration.
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +190,7 @@ export class GBAdminService implements IGBAdminService {
 | 
			
		|||
 | 
			
		||||
      if (!GBConfigService.get('STORAGE_NAME')) {
 | 
			
		||||
        const path = Path.join(GBConfigService.get('STORAGE_LIBRARY'), gbaiPath);
 | 
			
		||||
        Fs.cpSync(path, localFolder, { errorOnExist: false, force: true, recursive: true});
 | 
			
		||||
        GBUtil.copyIfNewerRecursive(path, localFolder);
 | 
			
		||||
      } else {
 | 
			
		||||
        await deployer['downloadFolder'](min, Path.join('work', `${gbai}`), Path.basename(localFolder));
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ export class GBVMService extends GBService {
 | 
			
		|||
 | 
			
		||||
    if (Fs.existsSync(jsfile)) {
 | 
			
		||||
      const jsStat = Fs.statSync(jsfile);
 | 
			
		||||
      const interval = 30000; // If compiled is older 30 seconds, then recompile.
 | 
			
		||||
      const interval = 1000; // If compiled is older 1 seconds, then recompile.
 | 
			
		||||
      if (compiledAt.isFile() && compiledAt['mtimeMs'] > jsStat['mtimeMs'] + interval) {
 | 
			
		||||
        await this.translateBASIC(mainName, fullFilename, min);
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										43
									
								
								src/util.ts
									
										
									
									
									
								
							
							
						
						
									
										43
									
								
								src/util.ts
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -37,6 +37,7 @@ import * as YAML from 'yaml';
 | 
			
		|||
import SwaggerClient from 'swagger-client';
 | 
			
		||||
import Fs from 'fs';
 | 
			
		||||
import { GBConfigService } from '../packages/core.gbapp/services/GBConfigService.js';
 | 
			
		||||
import path from 'path';
 | 
			
		||||
 | 
			
		||||
export class GBUtil {
 | 
			
		||||
  public static repeat(chr, count) {
 | 
			
		||||
| 
						 | 
				
			
			@ -123,4 +124,46 @@ export class GBUtil {
 | 
			
		|||
      return createCaseInsensitiveProxy(listOrRow);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  public static copyIfNewerRecursive(src, dest) {
 | 
			
		||||
    if (!Fs.existsSync(src)) {
 | 
			
		||||
        console.error(`Source path "${src}" does not exist.`);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Check if the source is a directory
 | 
			
		||||
    if (Fs.statSync(src).isDirectory()) {
 | 
			
		||||
        // Create the destination directory if it doesn't exist
 | 
			
		||||
        if (!Fs.existsSync(dest)) {
 | 
			
		||||
            Fs.mkdirSync(dest, { recursive: true });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Read all files and directories in the source directory
 | 
			
		||||
        const entries = Fs.readdirSync(src);
 | 
			
		||||
 | 
			
		||||
        for (let entry of entries) {
 | 
			
		||||
            const srcEntry = path.join(src, entry);
 | 
			
		||||
            const destEntry = path.join(dest, entry);
 | 
			
		||||
 | 
			
		||||
            // Recursively copy each entry
 | 
			
		||||
            this.copyIfNewerRecursive(srcEntry, destEntry);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        // Source is a file, check if we need to copy it
 | 
			
		||||
        if (Fs.existsSync(dest)) {
 | 
			
		||||
            const srcStat = Fs.statSync(src);
 | 
			
		||||
            const destStat = Fs.statSync(dest);
 | 
			
		||||
 | 
			
		||||
            // Copy only if the source file is newer than the destination file
 | 
			
		||||
            if (srcStat.mtime > destStat.mtime) {
 | 
			
		||||
                Fs.cpSync(src, dest, { force: true });
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // Destination file doesn't exist, so copy it
 | 
			
		||||
            Fs.cpSync(src, dest, { force: true });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue