danixfs/danix/templates.py

185 lines
5.4 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","emacs","nano", "micro", "git"]
class Template():
@staticmethod
def install(packages, environment_name, config_commands, 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, config_commands, 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 = []
try:
for pos in packages_selected.split(" "):
list_selected_packages.append(packages[int(pos)-1])
except Exception:
print("🔴 Invalid option: Please select a valid menu option!\n")
Template.languange_menu(packages)
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 = []
try:
for pos in essentials_packages_selected.split(" "):
list_essentials_packages.append(essentials_packages[int(pos)-1])
except Exception:
print("🔴 Invalid option: Please select a valid menu option!\n")
Template.essentials_menu()
return list_essentials_packages
@staticmethod
def menu(packages):
return Template.essentials_menu() + Template.languange_menu(packages)
class Languanges():
class VLang():
packages = ["v"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)
class Python():
packages = ["python3 py3-pip", "python3"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)
class CLike():
packages = ["gcc", "g++", "clang", "rust cargo"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)
class Java():
packages = ["openjdk8", "openjdk11", "openjdk17"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands,template)
class Ruby():
packages = ["ruby", "ruby-full"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)
class Lua():
packages = ["lua5.4", "lua5.3", "lua5.2"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)
class Ada():
packages = ["gcc gcc-gnat", "gcc", "gcc-gnat"]
config_commands = []
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)
class Dotnet():
package = ["dotnet7-sdk", "dotnet6-sdk"]
config_commands = [
"apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib",
"export HOME=/home/"
"export USERPROFILE=root",
]
def install(self, environment_name, template):
Template.install(self.package, environment_name,self.config_commands, template)
class Go():
packages = ["go", "musl-dev go"]
config_commands = []
config_commands = [
"export GOPATH=/root/go >/dev/null 2>&1",
"export PATH=${GOPATH}/bin:/usr/local/go/bin:$PATH >/dev/null 2>&1",
"export GOBIN=$GOROOT/bin >/dev/null 2>&1",
"mkdir -p ${GOPATH}/src ${GOPATH}/bin >/dev/null 2>&1",
"export GO111MODULE=on >/dev/null 2>&1",
"export GOCACHE=/root/go/cache >/dev/null 2>&1"
]
def install(self, environment_name, template):
Template.install(self.packages, environment_name, self.config_commands, template)