SBC_builder/scripts/software.py
2025-07-05 00:35:34 +02:00

34 lines
1.2 KiB
Python

import json, os
from pathlib import Path
from . import *
class Software:
def __init__(self, os):
self.os = os
js_fn = f"{ROOT_DIR}/config/software.json"
with open(js_fn) as json_data:
js = json.load(json_data)
json_data.close()
self.user = js["user"]
self.user_groups = js["user_groups"]
self.repos = js["repos"]
self.make_venv = js["make_venv"]
def finalize(self, dir):
home_dir = f"/home/{self.user}"
cmds = []
# create user
cmds.append(f"useradd -m -G {self.user_groups} {self.user} --password {self.user}")
#make password for user
cmds.append(f"echo '{self.user}:{self.user}' | chpasswd")
for repo in self.repos:
#clone repos from configuration
repo_dir = repo["directory"]
repo_url = repo["url"]
cmds.append(f"sudo -i -u klipper git clone {repo_url} --depth=1 {home_dir}/{repo_dir}")
if (self.make_venv):
# make python environment
cmds.append(f"sudo -i -u klipper python -m venv {home_dir}/venv")
for cmd in cmds:
self.os.chroot_ext(cmd, dir)