1
0
Fork 0

auto deploy from workflow

This commit is contained in:
github-actions[bot] 2022-03-15 02:17:47 +00:00
parent ba910df13e
commit 45d114a223

View file

@ -14,22 +14,43 @@ from shutil import rmtree
# must be synced with `src/__init__.py` # must be synced with `src/__init__.py`
tmp_dir = "/tmp/com.developomp.setup" tmp_dir = "/tmp/com.developomp.setup"
#
# Common
#
def minimal_check():
"""
Minimal checks before executing any code.
Full checks will happen after downloading codes from the internet
"""
# check if the script is running as root def cleanup():
"""Removes temporary files and folders downloaded by this script"""
if os.path.exists(tmp_dir):
rmtree(tmp_dir)
#
# Checks
#
def exit_if_root():
"""Exits script if it was executed as root"""
# todo: allow running script as root when implementing user creation/arch installation logic # todo: allow running script as root when implementing user creation/arch installation logic
if os.geteuid() == 0: if os.geteuid() == 0:
print("Do not run this script as root.", file=sys.stderr) print("Do not run this script as root.", file=sys.stderr)
exit(1) exit(1)
# todo: check if python version is higher than 3.7
# check if OS is linux and if pacman exists def exit_if_invalid_python_version():
"""Exits script if python version is lower than 3.7"""
# todo: implement
pass
def exit_if_system_not_compatible():
"""Exits script if the OS is not linux or if pacman does not exist"""
print("Checking if system is compatible") print("Checking if system is compatible")
if "linux" not in sys.platform.lower() or os.system( if "linux" not in sys.platform.lower() or os.system(
"command -v pacman &> /dev/null" "command -v pacman &> /dev/null"
@ -37,52 +58,87 @@ def minimal_check():
print("This script should only be used on arch linux.", file=sys.stderr) print("This script should only be used on arch linux.", file=sys.stderr)
exit(1) exit(1)
# ping archlinux.org to test if there's internet connection
def exit_if_no_internet():
"""Exits script if there's no internet connection.
Pings archlinux.org for testing."""
print("Checking if there's internet connection") print("Checking if there's internet connection")
if os.system("ping -c 1 archlinux.org &> /dev/null"): if os.system("ping -c 1 archlinux.org &> /dev/null"):
print("Failed to connect to internet.", file=sys.stderr) print("Failed to connect to internet.", file=sys.stderr)
exit(1) exit(1)
#
# Initializations
#
def install_git():
"""Installs git if it's not installed already"""
print("Initializing git")
if os.system("command -v git &> /dev/null"):
print("git was not installed already. Installing now.")
os.system("sudo pacman -S --noconfirm --needed git")
def clone_repository():
"""Clone this repository (https://github.com/developomp/setup) to `/tmp` directory"""
print("Cloning git repository")
# remove existing files first
cleanup()
# clone repository
if os.system(
f"git clone --depth 1 https://github.com/developomp/setup.git {tmp_dir} &> /dev/null"
):
print("Failed to clone repository", file=sys.stderr)
exit(1)
# allow everyone to read and write.
if os.system(f"chmod -R a+rw {tmp_dir}"):
print("Failed to change file permission for cloned repo", file=sys.stderr)
exit(1)
#
#
#
def minimal_check():
"""
Minimal checks before executing any code.
Full checks will happen after downloading codes from the internet
"""
exit_if_root()
exit_if_invalid_python_version()
exit_if_system_not_compatible()
exit_if_no_internet()
def minimal_initialization(): def minimal_initialization():
""" """
Does minimal initialization. Does minimal initialization.
Full initialization will happen after downloading codes from the internet. Full initialization will happen after downloading codes from the internet.
""" """
print("Initializing git") install_git()
if os.system("command -v git &> /dev/null"): clone_repository()
print("git was not installed already. Installing now.")
os.system("sudo pacman -S --noconfirm --needed git")
#
# Download necessary files
#
print("Cloning git repository")
# remove existing files
if os.path.exists(tmp_dir):
rmtree(tmp_dir)
if os.system(
f"git clone --depth 1 https://github.com/developomp/setup.git {tmp_dir} &> /dev/null"
):
print("Failed to clone repository", file=sys.stderr)
exit(1)
# allow everyone to read and write but not execute.
if os.system(f"chmod -R a+rw {tmp_dir}"):
print("Failed to change file permission for cloned repo", file=sys.stderr)
exit(1)
#
# Add cloned directory to path
#
# Add cloned directory to system path
sys.path.append(tmp_dir) sys.path.append(tmp_dir)
#
#
#
def main(): def main():
minimal_check() minimal_check()
minimal_initialization() minimal_initialization()
@ -91,6 +147,8 @@ def main():
entry() entry()
cleanup()
if __name__ == "__main__": if __name__ == "__main__":
main() main()