make.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #! /usr/bin/env python3
  2. """Сборка всей программы
  3. """
  4. import os
  5. import sys
  6. import datetime
  7. import subprocess
  8. import shutil
  9. def help() -> None:
  10. """Получить справку по сборке
  11. """
  12. h: str = """
  13. Справка по сборке:
  14. ./make.py help - Справка по сборке
  15. ./make.py build - Сборка всей программы"""
  16. print(h)
  17. class Build:
  18. """Класс сборки
  19. """
  20. def __init__(self) -> None:
  21. self.date_build: str = str(datetime.datetime.now())
  22. """Дата сборки"""
  23. cmd: list[str] = ['git', 'describe', '--tags', '--abbrev=0']
  24. output: bytes = subprocess.Popen(
  25. cmd, stdout=subprocess.PIPE).communicate()[0]
  26. tag: str = output.decode("utf-8")
  27. tag = tag[:-1]
  28. self.tag: str = tag
  29. """Тег из гита"""
  30. cmd = ['go', 'version']
  31. output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
  32. go_version: str = output.decode("utf-8")
  33. go_version = go_version[11:]
  34. out: str = f"date={self.date_build}\t\t" +\
  35. f"tag={self.tag}\t\t" +\
  36. f"go_version={go_version}"
  37. print(out)
  38. self.go_version: str = go_version
  39. """Версия golang"""
  40. def run(self) -> None:
  41. """Запуск сборки"""
  42. try:
  43. shutil.rmtree('./bin')
  44. except OSError:
  45. pass
  46. try:
  47. os.mkdir("bin")
  48. except FileExistsError:
  49. pass
  50. try:
  51. os.mkdir("bin/web")
  52. except FileExistsError:
  53. pass
  54. try:
  55. os.mkdir("bin/web/static")
  56. except FileExistsError:
  57. pass
  58. try:
  59. os.mkdir("bin/web/tmpl")
  60. except FileExistsError:
  61. pass
  62. os.system('cp -r ../app_serv/web ./bin')
  63. os.chdir("../app_serv")
  64. # os.system("go build -o app_work")
  65. cmd: list[str] = ['go', 'fmt', './...']
  66. subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
  67. # go_version: str = output.decode("utf-8")
  68. if __name__ == '__main__':
  69. os.system('clear')
  70. args: list[str] = sys.argv
  71. if len(args) < 2:
  72. help()
  73. sys.exit(0)
  74. strCmd: str = args[1]
  75. match strCmd:
  76. case "help": # Получить справку по сборке
  77. help()
  78. case"build": # Сборка всей программы
  79. b: Build = Build()
  80. b.run()
  81. case "":
  82. help()
  83. case _: pass