danixfs/danix/templates.py

102 lines
2.8 KiB
Python

import uuid, app
from db.models import Environment
from danixfs import Danix
from utils import check_equal_sentence
class Essentials():
packages = ["build-base", "vim", "nano", "micro", "git"]
class Template():
@staticmethod
def install(packages, environment_name, template):
filesystem_name = uuid.uuid4()
environment_count = Environment.objects.filter(
filesystem_name=filesystem_name
).count()
if check_equal_sentence(environment_count, 0):
Environment.objects.create(
filesystem_name=filesystem_name,
template=template,
name=environment_name).save()
joined_packages = Template.menu(packages)
Environment.set_active(filesystem_name)
Danix.build_environment(joined_packages, filesystem_name)
@staticmethod
def languange_menu(packages):
i = 1
for package in packages:
print(f"[{i}] - Package {package}")
i += 1
print('Select essentials packages:')
print(f'Example: 1 2 to install {packages[0]}, {packages[1]}')
packages_selected = input()
list_selected_packages = []
for pos in packages_selected.split(" "):
list_selected_packages.append(packages[int(pos)-1])
return list_selected_packages
@staticmethod
def essentials_menu():
essentials_packages = Essentials().packages
i = 1
for essential in essentials_packages:
print(f'[{i}] - Package {essential}')
i += 1
print('Select essentials packages:')
print(f'Example: 1 2 3 to install {essentials_packages[0]}, {essentials_packages[1]}, and {essentials_packages[2]}')
essentials_packages_selected = input()
list_essentials_packages = []
for pos in essentials_packages_selected.split(" "):
list_essentials_packages.append(essentials_packages[int(pos)-1])
return list_essentials_packages
@staticmethod
def menu(packages):
return Template.essentials_menu() + Template.languange_menu(packages)
class Languanges():
class Python():
packages = ["python3", "py3-pip"]
def install(self, environment_name, template):
Template.install(self.packages, environment_name, template)
class CLike():
packages = ["gcc", "g++", "clang", "rust cargo"]
def install(self, environment_name, template):
Template.install(self.packages, environment_name, template)
class Java():
packages = ["openjdk8", "openjdk11", "openjdk17"]
def install(self, environment_name, template):
Template.install(self.packages, environment_name, template)