Repository navigation
Expand file tree
/
Copy pathmain.js
More file actions
107 lines (88 loc) · 3.26 KB
/
Copy pathmain.js
File metadata and controls
107 lines (88 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env node
/**
* File Unlocker - Ponto de Entrada Inteligente
*
* Este arquivo detecta automaticamente o ambiente de execução:
* - Se executado via Electron: redireciona para electron-main.js
* - Se executado via Node.js CLI: redireciona para cli.js
* - Se requerido como módulo: exporta apenas as funções de negócio
*/
const path = require('path');
const fs = require('fs');
// Detectar se está rodando no Electron
function isElectron() {
return process.versions.electron !== undefined;
}
// Detectar se está sendo executado diretamente (não requerido como módulo)
function isDirectExecution() {
return require.main === module;
}
// Detectar se está sendo executado como CLI
function isCLIExecution() {
return process.argv.length > 2 ||
process.argv[1].includes('cli.js') ||
process.argv[1].includes('file-unlocker');
}
// Função principal para redirecionamento
function main() {
if (isElectron()) {
// Running in Electron - load electron-main.js
console.log('Electron environment detected, loading graphical interface...');
require('./electron-main.js');
} else if (isDirectExecution() && isCLIExecution()) {
// Running as CLI - load cli.js
console.log('CLI environment detected, loading command line interface...');
require('./cli.js');
} else {
// Requerido como módulo - mostrar informações de uso
console.log(`
File Unlocker - Módulo Node.js
Este módulo pode ser usado de três formas:
1. Como aplicação Electron (interface gráfica):
npm start
2. Como CLI (linha de comando):
npx file-unlocker <arquivo> [opções]
node cli.js <arquivo> [opções]
3. Como módulo Node.js:
const fileUnlocker = require('./lib/native-windows-api');
// Exemplo de uso:
const { unlockFile, deleteFile, getProcessesUsingFile } = require('./lib/native-windows-api');
// Desbloquear arquivo
unlockFile('arquivo.txt').then(result => {
console.log(result);
});
// Deletar arquivo (desbloqueia primeiro se necessário)
deleteFile('arquivo.txt', { useRecycleBin: true }).then(result => {
console.log(result);
});
// Verificar processos usando arquivo
getProcessesUsingFile('arquivo.txt').then(processes => {
console.log(processes);
});
`);
}
}
// Exportar funções principais do módulo native-windows-api para uso como módulo
const nativeAPI = require('./lib/native-windows-api');
module.exports = {
// Funções principais
unlockFile: nativeAPI.unlockFile,
deleteFile: nativeAPI.deleteFile,
deleteDirectory: nativeAPI.deleteDirectory,
getProcessesUsingFile: nativeAPI.getProcessesUsingFile,
killProcess: nativeAPI.killProcess,
isRunningAsAdmin: nativeAPI.isRunningAsAdmin,
needsAdminPrivileges: nativeAPI.needsAdminPrivileges,
requestAdminPrivileges: nativeAPI.requestAdminPrivileges,
isProcessActuallyUsingFile: nativeAPI.isProcessActuallyUsingFile,
// Informações do módulo
version: require('./package.json').version,
description: require('./package.json').description,
// Função de inicialização
main
};
// Executar se for o arquivo principal OU se estiver no Electron
console.log('Executando main.js', require.main === module, 'Electron:', isElectron());
if (require.main === module || isElectron()) {
main();
}