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 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
@@ -0,0 +1,2 @@
1
+ require "Zimbo/classes" # Carrega a classe Zimbo
2
+ require "Zimbo/main" # Carrega o menu
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: []