zimbo 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/zimbo +10 -0
- data/lib/zimbo/classes.rb +42 -0
- data/lib/zimbo/main.rb +156 -0
- data/lib/zimbo.rb +2 -0
- metadata +46 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 1d05ee259dfe0426e4fd86d4835aff08acb5e04dbdf2560d05abbc527751c454
|
|
4
|
+
data.tar.gz: 7e251107c738e65e81c332825edefcd15b817cd685a9eb7cf309997cdb73ffa5
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 6cb8e63c69a13f2fb89be3f8c8e692e2b1ddde8c26a0ea4ffe05817346b1bc7b32d140b23d8e0343aae6b2f5d8b2b21ded1d90c26c6ce82a6a9544adbb339b4b
|
|
7
|
+
data.tar.gz: d0c1e37cfcfa248f9379ed7904f5e6973eb8d8b857bd4d28ab3bbaf0664c5579e66f6216cf58d8ab29a699aa0b50ea904349aa8dc5742e41c1869eab25df13fe
|
data/bin/zimbo
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# Adiciona a pasta lib ao caminho de busca do Ruby
|
|
4
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
|
|
5
|
+
|
|
6
|
+
# Carrega o arquivo principal do Zimbo
|
|
7
|
+
require 'zimbo/main'
|
|
8
|
+
|
|
9
|
+
# Inicializa o menu que você construiu
|
|
10
|
+
Zimbo::Actions.menu
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# A classe Zimbo atua como o ponto de entrada principal (entry point)
|
|
2
|
+
# para o sistema de automação.
|
|
3
|
+
#
|
|
4
|
+
# @author Alisson
|
|
5
|
+
# @since 0.1.0
|
|
6
|
+
|
|
7
|
+
module Zimbo
|
|
8
|
+
class Zimbo
|
|
9
|
+
|
|
10
|
+
# Inicializa uma nova instância da classe Zimbo.
|
|
11
|
+
#
|
|
12
|
+
# @return [Zimbo::Zimbo] Uma nova instância configurada.
|
|
13
|
+
def initialize
|
|
14
|
+
@comando_init = "Z -i"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Inicia o loop de recepção de comandos do terminal.
|
|
18
|
+
# Solicita a entrada do usuário e direciona para o menu de ações
|
|
19
|
+
# caso o comando de inicialização seja reconhecido.
|
|
20
|
+
#
|
|
21
|
+
# @example Iniciar o programa:
|
|
22
|
+
# Zimbo = Zimbo::Zimbo.new
|
|
23
|
+
# Zimbo.iniciar
|
|
24
|
+
#
|
|
25
|
+
# @return [void]
|
|
26
|
+
def iniciar
|
|
27
|
+
puts "Digite o comando para iniciar o programa (ou 'sair' para encerrar): "
|
|
28
|
+
comando = STDIN.gets.chomp
|
|
29
|
+
|
|
30
|
+
if comando == "sair"
|
|
31
|
+
puts "Encerrando..."
|
|
32
|
+
exit
|
|
33
|
+
elsif comando == @comando_init
|
|
34
|
+
::Zimbo::Actions.menu
|
|
35
|
+
else
|
|
36
|
+
puts "Comando inválido!"
|
|
37
|
+
iniciar
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
data/lib/zimbo/main.rb
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# O módulo Zimbo::Actions é o núcleo da automação do seu assistente,
|
|
2
|
+
# responsável pela interface de menu e gerenciamento automatizado do Gemfile.
|
|
3
|
+
#
|
|
4
|
+
# @author Alisson
|
|
5
|
+
# @since 0.1.0
|
|
6
|
+
|
|
7
|
+
module Zimbo
|
|
8
|
+
module Actions
|
|
9
|
+
# Definição das cores para o visual "hacker"
|
|
10
|
+
CYAN = "\e[36m"
|
|
11
|
+
RESET = "\e[0m"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Exibe o menu principal de interação no terminal e gerencia o fluxo de navegação.
|
|
15
|
+
#
|
|
16
|
+
# @return [void]
|
|
17
|
+
def self.menu
|
|
18
|
+
puts "\n#{CYAN}=============================="
|
|
19
|
+
puts " BEM-VINDO AO ZIMBO "
|
|
20
|
+
puts "==============================#{RESET}"
|
|
21
|
+
puts "Escolha uma opção:"
|
|
22
|
+
puts "1. Criar arquivo"
|
|
23
|
+
puts "2. Zimbo Run / auto-save"
|
|
24
|
+
puts "3. Sair"
|
|
25
|
+
print "Opção: "
|
|
26
|
+
opcao = STDIN.gets.chomp
|
|
27
|
+
|
|
28
|
+
case opcao
|
|
29
|
+
when "1"
|
|
30
|
+
self.criar_arquivo
|
|
31
|
+
when "2"
|
|
32
|
+
self.load_arquivo
|
|
33
|
+
when "3"
|
|
34
|
+
puts "Saindo..."
|
|
35
|
+
exit
|
|
36
|
+
else
|
|
37
|
+
puts "Opção inválida!"
|
|
38
|
+
self.menu
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Gerencia a adição interativa de novas gems ao Gemfile e executa o bundle install.
|
|
43
|
+
#
|
|
44
|
+
# @example Adicionando gems via terminal:
|
|
45
|
+
# Zimbo::Actions.criar_gem
|
|
46
|
+
#
|
|
47
|
+
# @return [void] O método modifica o arquivo Gemfile local e instala as dependências.
|
|
48
|
+
|
|
49
|
+
def self.load_arquivo
|
|
50
|
+
puts "Digite o comando (z on) para iniciar o server..."
|
|
51
|
+
escolha = STDIN.gets.chomp
|
|
52
|
+
|
|
53
|
+
if escolha != "z on"
|
|
54
|
+
puts "Comando errado... Tente novamente."
|
|
55
|
+
self.menu
|
|
56
|
+
return
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
caminho_app = File.expand_path("../../app.rb", __dir__)
|
|
60
|
+
|
|
61
|
+
unless File.exist?(caminho_app)
|
|
62
|
+
puts "❌ Arquivo app.rb não encontrado em: #{caminho_app}"
|
|
63
|
+
self.menu
|
|
64
|
+
return
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
puts "\n🚀 Zimbo Server Inicializado!"
|
|
68
|
+
puts "Monitorando alterações no arquivo app.rb..."
|
|
69
|
+
puts "Pressione CTRL + C no terminal para encerrar o monitoramento.\n\n"
|
|
70
|
+
|
|
71
|
+
# Executa o arquivo pela primeira vez ao ligar o server
|
|
72
|
+
puts "[Zimbo] Inicializando app.rb..."
|
|
73
|
+
system("ruby #{caminho_app}")
|
|
74
|
+
|
|
75
|
+
# Guarda o horário da última modificação do arquivo
|
|
76
|
+
ultima_modificacao = File.mtime(caminho_app)
|
|
77
|
+
|
|
78
|
+
# Loop infinito que fica vigiando o arquivo em segundo plano
|
|
79
|
+
loop do
|
|
80
|
+
sleep 1 # Checa a cada 1 segundo para não sobrecarregar o processador
|
|
81
|
+
|
|
82
|
+
# Se o horário de modificação mudou, significa que o usuário salvou o arquivo
|
|
83
|
+
if File.mtime(caminho_app) > ultima_modificacao
|
|
84
|
+
puts "\n🔄 Alteração detectada! Reinicializando o script..."
|
|
85
|
+
|
|
86
|
+
# Atualiza a marca de tempo para a nova hora do salvamento
|
|
87
|
+
ultima_modificacao = File.mtime(caminho_app)
|
|
88
|
+
|
|
89
|
+
# Executa o comando do sistema para rodar o arquivo Ruby atualizado
|
|
90
|
+
system("ruby #{caminho_app}")
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
rescue Interrupt
|
|
94
|
+
# Captura o CTRL+C do usuário de forma amigável para voltar ao menu principal
|
|
95
|
+
puts "\n\n🛑 Servidor Zimbo encerrado."
|
|
96
|
+
self.menu
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def self.criar_gem
|
|
103
|
+
path = File.join(Dir.pwd, 'Gemfile')
|
|
104
|
+
gems_adicionadas = 0
|
|
105
|
+
|
|
106
|
+
File.open(path, 'a') do |file|
|
|
107
|
+
loop do
|
|
108
|
+
print "Digite o nome da gem (ou '0' para sair): "
|
|
109
|
+
gem_name = opcao = STDIN.gets.chomp
|
|
110
|
+
break if gem_name == "0"
|
|
111
|
+
next if gem_name.empty?
|
|
112
|
+
|
|
113
|
+
file.puts "gem \"#{gem_name}\""
|
|
114
|
+
gems_adicionadas += 1
|
|
115
|
+
puts "✅ Gem \"#{gem_name}\" adicionada!"
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
if gems_adicionadas > 0
|
|
120
|
+
puts "Instalando dependências..."
|
|
121
|
+
if system("bundle install")
|
|
122
|
+
puts "🎉 Dependências instaladas com sucesso!"
|
|
123
|
+
else
|
|
124
|
+
puts "❌ Ocorreu um erro ao rodar o bundle install."
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
puts "Processo encerrado. Seu Gemfile foi atualizado!"
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Verifica a existência ou cria o arquivo Gemfile na pasta de execução atual.
|
|
131
|
+
#
|
|
132
|
+
# @return [void] Após a criação, redireciona automaticamente para o método de adicionar gems.
|
|
133
|
+
def self.criar_arquivo
|
|
134
|
+
path = File.join(Dir.pwd, 'Gemfile')
|
|
135
|
+
puts "Você está na: #{Dir.pwd}"
|
|
136
|
+
print "Digite 1 para criar o Gemfile aqui: "
|
|
137
|
+
opcao = STDIN.gets.chomp
|
|
138
|
+
|
|
139
|
+
if opcao == "1"
|
|
140
|
+
if File.exist?(path)
|
|
141
|
+
puts "⚠️ Arquivo Gemfile já existe."
|
|
142
|
+
else
|
|
143
|
+
File.open(path, 'a') do |file|
|
|
144
|
+
file.puts "source \"https://rubygems.org\""
|
|
145
|
+
end
|
|
146
|
+
puts "✅ Gemfile criado com sucesso!"
|
|
147
|
+
end
|
|
148
|
+
self.criar_gem
|
|
149
|
+
else
|
|
150
|
+
self.menu
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
end
|
data/lib/zimbo.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: zimbo
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.2.3
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Alisson
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
12
|
+
description: zimbo é uma ferramenta para automatizar a criação de arquivos e configuração
|
|
13
|
+
de dependências em projetos Ruby.
|
|
14
|
+
email:
|
|
15
|
+
- alissonmendesw3@gmail.com
|
|
16
|
+
executables:
|
|
17
|
+
- zimbo
|
|
18
|
+
extensions: []
|
|
19
|
+
extra_rdoc_files: []
|
|
20
|
+
files:
|
|
21
|
+
- bin/zimbo
|
|
22
|
+
- lib/zimbo.rb
|
|
23
|
+
- lib/zimbo/classes.rb
|
|
24
|
+
- lib/zimbo/main.rb
|
|
25
|
+
homepage: https://github.com/alisson-mendes-dev/ruby_zimbo
|
|
26
|
+
licenses:
|
|
27
|
+
- MIT
|
|
28
|
+
metadata: {}
|
|
29
|
+
rdoc_options: []
|
|
30
|
+
require_paths:
|
|
31
|
+
- lib
|
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: '0'
|
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
requirements: []
|
|
43
|
+
rubygems_version: 4.0.10
|
|
44
|
+
specification_version: 4
|
|
45
|
+
summary: Um assistente CLI para automação de fluxo de trabalho.
|
|
46
|
+
test_files: []
|