Init project
This commit is contained in:
parent
9618f0fdf5
commit
e08bb5baf3
|
|
@ -0,0 +1,88 @@
|
|||
import rich.prompt as prompt
|
||||
from rich_menu import Menu
|
||||
from utils import Utils
|
||||
from termcolor import colored
|
||||
from conn import Connection
|
||||
import info, sys, os
|
||||
from models import Conext
|
||||
|
||||
class Interface():
|
||||
|
||||
@staticmethod
|
||||
def banner():
|
||||
|
||||
if sys.platform == 'win32':
|
||||
os.system('cls')
|
||||
else:
|
||||
os.system('clear')
|
||||
|
||||
base_dir = Utils.get_base_dir()
|
||||
banner = colored(Utils.read_file(f'{base_dir}/icons/banner.ico'), 'blue')
|
||||
print(banner)
|
||||
print(f'Author: {info.__author__} ')
|
||||
print(f'Version: {info.__version__}')
|
||||
print(f'Year: {info.__release__}')
|
||||
print(f'License: {info.__license__}')
|
||||
|
||||
@staticmethod
|
||||
def menu():
|
||||
|
||||
main_menu = Menu("Create new connection" ,
|
||||
"Connect" ,
|
||||
"List connections" ,
|
||||
"Remove connection" ,
|
||||
"System exit" ,
|
||||
color="blue" ,
|
||||
align="center" ,
|
||||
rule_title="Docker Context Manager",
|
||||
panel_title="Options" ,
|
||||
selection_char="->" ,
|
||||
)
|
||||
|
||||
match main_menu.ask(screen=False):
|
||||
case "Create new connection":
|
||||
|
||||
return Connection.new()
|
||||
|
||||
case "Connect":
|
||||
|
||||
|
||||
hosts = Conext().get_all()
|
||||
|
||||
connecions_menu = Menu("Create new connection" ,
|
||||
"Connect" ,
|
||||
"List connections" ,
|
||||
"Back" ,
|
||||
"System exit" ,
|
||||
color="blue" ,
|
||||
align="left" ,
|
||||
rule_title="Docker Context Manager",
|
||||
panel_title="Connections" ,
|
||||
selection_char="->" ,
|
||||
)
|
||||
|
||||
connecions_menu.ask(screen=False)
|
||||
|
||||
match connecions_menu.ask(screen=False):
|
||||
case "Back":
|
||||
Interface.menu()
|
||||
case "System exit":
|
||||
exit()
|
||||
|
||||
return Connection.connect(host)
|
||||
case "List connections":
|
||||
|
||||
return Connection.list()
|
||||
case "Remove connection":
|
||||
|
||||
return Connection.remove()
|
||||
case "System exit":
|
||||
exit()
|
||||
class Cli():
|
||||
|
||||
@staticmethod
|
||||
def new_connection():
|
||||
|
||||
host = prompt.Prompt.ask('Type a hostname')
|
||||
|
||||
return True
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
from models import *
|
||||
from rich.console import Console
|
||||
from rich.table import Table
|
||||
|
||||
class Connection():
|
||||
|
||||
@staticmethod
|
||||
def new():
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def connect(host: str):
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def list():
|
||||
|
||||
table = Table(title="Connections")
|
||||
|
||||
table.add_column("Active" , justify="center", style="green", no_wrap=True)
|
||||
table.add_column("Name" , justify="center", style="green", no_wrap=True)
|
||||
table.add_column("Host" , justify="center", style="green", no_wrap=True)
|
||||
table.add_column("Descriptions", justify="right" , style="green", no_wrap=True)
|
||||
table.add_column("Created" , justify="center", style="green", no_wrap=True)
|
||||
|
||||
contexts = Context().get_all()
|
||||
|
||||
for context in contexts:
|
||||
table.add_row("🟢", context.name, context.host, context.description, context.created_on)
|
||||
|
||||
console = Console()
|
||||
console.print(table)
|
||||
|
||||
@staticmethod
|
||||
def remove():
|
||||
pass
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
class Docker():
|
||||
|
||||
is_installed = 0
|
||||
is_running = 1
|
||||
|
||||
@staticmethod
|
||||
def status():
|
||||
pass
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
........
|
||||
...'''''''''''''..
|
||||
.''''''''''''''''''''.. ,.
|
||||
.,''''''''''''''''''''''''. '''.
|
||||
.''''''''''''''''''''''''''''.. .''''..
|
||||
''''''''''''''''''''''''''''''''. ''''''''.
|
||||
,''''''''''''''''''''''''''''''''''. ''''''''''''.....
|
||||
'''''''''''''''''''''''''''''''''''''.. .''''''''''''
|
||||
'''''''''''''''. .'''''''''''''''''''''.... ..' '''.
|
||||
'''''''''''''',..,'''''''''''''''''''''''''''''.
|
||||
'''''''''''''''''''''''''''''''''''''''''''',:
|
||||
.'''''',;:;'''''''''''''''''''''''''''''';l.
|
||||
:xxkkOOOOOxdoc'''''''''''''''''''',;cok
|
||||
,OOOOOOOOOO,''''''ldooooooddxxkO;
|
||||
:OOOOOl'''''';OOOOOOOo
|
||||
''''''c
|
||||
'''''.
|
||||
.'''
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
__version__ = '0.1'
|
||||
__author__ = 'Vinicius Silva'
|
||||
__release__ = '2024'
|
||||
__license__ = 'MIT'
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
import typer, sys
|
||||
from cli import Cli, Interface
|
||||
|
||||
app = typer.Typer()
|
||||
|
||||
@app.command()
|
||||
def new():
|
||||
|
||||
is_ok = Cli.new_connection()
|
||||
|
||||
if is_ok:
|
||||
|
||||
new()
|
||||
|
||||
else:
|
||||
pass
|
||||
#typer.
|
||||
|
||||
|
||||
@app.command()
|
||||
def connect(name: str):
|
||||
#if formal:
|
||||
# print(f"Goodbye Ms. {name}. Have a good day.")
|
||||
#else:
|
||||
# print(f"Bye {name}!")
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
|
||||
app()
|
||||
else:
|
||||
Interface.banner()
|
||||
Interface.menu()
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
from datetime import datetime
|
||||
|
||||
import db, uuid
|
||||
from utils import Utils
|
||||
from peewee import *
|
||||
|
||||
base_dir = Utils.get_base_dir()
|
||||
db = SqliteDatabase(f"{base_dir}/db/dcm.sqlite3")
|
||||
|
||||
# define a classe do modelo
|
||||
class Conext(Model):
|
||||
|
||||
id = IntegerField(primary_key=True)
|
||||
name = TextField()
|
||||
host = TextField()
|
||||
description = TextField(default="")
|
||||
created_on = DateTimeField(default=datetime.now())
|
||||
|
||||
class Meta:
|
||||
database = db
|
||||
|
||||
def get_all(self):
|
||||
return Context.select()
|
||||
|
||||
def create(self, host, description=""):
|
||||
|
||||
if db.table_exists():
|
||||
|
||||
if host:
|
||||
name = uuid.uuid4().__str__()
|
||||
context = Context(name=name, host=host, description=description)
|
||||
|
||||
if not context:
|
||||
return False, None
|
||||
|
||||
context.save()
|
||||
return True, name
|
||||
else:
|
||||
db.create_tables([Context])
|
||||
self.create(host, description)
|
||||
|
||||
return False, None
|
||||
|
||||
#def delete(self, host):
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
typer
|
||||
rich
|
||||
rich_menu
|
||||
termcolor
|
||||
peewee
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
import os
|
||||
|
||||
class Utils():
|
||||
|
||||
@staticmethod
|
||||
def get_base_dir():
|
||||
return os.path.dirname(__file__)
|
||||
|
||||
@staticmethod
|
||||
def read_file(filepath):
|
||||
|
||||
try:
|
||||
|
||||
file = open(file=filepath, mode="r")
|
||||
return file.read()
|
||||
except FileNotFoundError and FileExistsError:
|
||||
|
||||
panic_msg = 'The system has been returned a unexpected error'
|
||||
raise FileNotFoundError(panic_msg) or FileExistsError(panic_msg)
|
||||
|
||||
Loading…
Reference in New Issue