#! /usr/bin/env python3 """Сборка всей программы """ import os import sys import datetime import subprocess import shutil def help() -> None: """Получить справку по сборке """ h: str = """ Справка по сборке: ./make.py help - Справка по сборке ./make.py build - Сборка всей программы""" print(h) class Build: """Класс сборки """ def __init__(self) -> None: self.date_build: str = str(datetime.datetime.now()) """Дата сборки""" cmd: list[str] = ['git', 'describe', '--tags', '--abbrev=0'] output: bytes = subprocess.Popen( cmd, stdout=subprocess.PIPE).communicate()[0] tag: str = output.decode("utf-8") tag = tag[:-1] self.tag: str = tag """Тег из гита""" cmd = ['go', 'version'] output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] go_version: str = output.decode("utf-8") go_version = go_version[11:] out: str = f"date={self.date_build}\t\t" +\ f"tag={self.tag}\t\t" +\ f"go_version={go_version}" print(out) self.go_version: str = go_version """Версия golang""" def run(self) -> None: """Запуск сборки""" try: shutil.rmtree('./bin') except OSError: pass try: os.mkdir("bin") except FileExistsError: pass try: os.mkdir("bin/web") except FileExistsError: pass try: os.mkdir("bin/web/static") except FileExistsError: pass try: os.mkdir("bin/web/tmpl") except FileExistsError: pass os.system('cp -r ../app_serv/web ./bin') os.chdir("../app_serv") # os.system("go build -o app_work") cmd: list[str] = ['go', 'fmt', './...'] subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] # go_version: str = output.decode("utf-8") if __name__ == '__main__': os.system('clear') args: list[str] = sys.argv if len(args) < 2: help() sys.exit(0) strCmd: str = args[1] match strCmd: case "help": # Получить справку по сборке help() case"build": # Сборка всей программы b: Build = Build() b.run() case "": help() case _: pass