-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.lua
More file actions
executable file
·87 lines (72 loc) · 2.52 KB
/
main.lua
File metadata and controls
executable file
·87 lines (72 loc) · 2.52 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
#!/usr/bin/env luajit
-- Determina o diretório base do shell
local function get_shell_base_dir()
return "/usr/local/share/deepshell/"
end
-- Configura o path para módulos
local base_dir = get_shell_base_dir()
package.path = base_dir .. "?.lua;" ..
base_dir .. "modulos/?.lua;" ..
package.path
-- Adiciona logger para debug
local logger = require("modulos.logger")
logger.log("Iniciando DeepShell")
logger.log("Package path: " .. package.path)
logger.log("Base dir: " .. base_dir)
local check_deps = require("modulos.check_deps")
if not check_deps.check_dependencies() then
print("Por favor, instale as dependências faltantes")
os.exit(1)
end
-- Importação de módulos
local configs = require("modulos.configs")
local parser = require("modulos.parser")
local executor = require("modulos.executor")
local prompt = require("modulos.prompt")
local utils = require("modulos.utils")
local atalhos = require("modulos.atalhos")
local autocomplete = require("modulos.autocomplete")
-- Configuração inicial do terminal
local function configure_terminal()
-- Temporariamente volta ao modo normal para a mensagem de boas-vindas
os.execute("stty sane")
-- Exibe mensagem de boas-vindas
os.execute("clear") -- Limpa a tela antes de mostrar a mensagem
print(utils.colorize(configs.CONFIG.shell_name .. " v" .. configs.CONFIG.version, "bright_yellow"))
print(utils.colorize("Digite 'help' para ver os comandos disponíveis", "dim"))
print("") -- Linha em branco para melhor espaçamento
-- Configura modo raw para o shell
os.execute("stty raw -echo")
end
-- Restaura configurações do terminal
local function restore_terminal()
os.execute("stty sane")
end
-- Configura manipulador de saída
local function setup_exit_handler()
local old_handler = os.exit
os.exit = function(code)
restore_terminal()
old_handler(code)
end
end
-- Inicialização
configure_terminal()
setup_exit_handler()
-- Loop principal
while true do
local input = atalhos.read_line(prompt.get_prompt())
if input then
local parsed = parser.parse_command(input)
if parsed then
-- Temporariamente restaura o terminal para a execução do comando
restore_terminal()
local success, err = pcall(executor.executar, parsed)
if not success then
print(utils.colorize("Erro: " .. tostring(err), "red"))
end
-- Volta para modo raw
os.execute("stty raw -echo")
end
end
end