98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
#! /usr/bin/python3
|
|
|
|
import os
|
|
import argparse
|
|
import subprocess
|
|
import re
|
|
import shutil
|
|
from pathlib import Path
|
|
from distutils.dir_util import copy_tree
|
|
import fileinput
|
|
from dotenv import dotenv_values
|
|
|
|
|
|
def parse_arguments() -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("-n", "--name",
|
|
required=False,
|
|
type=str,
|
|
help="Internal repository part to be built")
|
|
parser.add_argument("-v", "--version",
|
|
required=True,
|
|
type=str,
|
|
help="Repository version")
|
|
return parser.parse_args()
|
|
|
|
|
|
def main() -> None:
|
|
args = parse_arguments()
|
|
if args.name is None or args.name == 'amccore':
|
|
front_path = "frontend"
|
|
back_path = "console"
|
|
|
|
footer_path = f"{front_path}/src/components/Layout/components/Footer"
|
|
console_base_path = "console/settings/base.py"
|
|
|
|
# PUBLIC_URL for react app
|
|
react_env = dotenv_values('deb/react.env')
|
|
os.environ['PUBLIC_URL'] = react_env['PUBLIC_URL']
|
|
|
|
# version
|
|
version_found = False
|
|
|
|
# change base.py version
|
|
with fileinput.input(files=console_base_path, inplace=True) as fileLines:
|
|
for line in fileLines:
|
|
|
|
if re.search('SITE_INFO = {', line) is not None:
|
|
version_found = True
|
|
if version_found and re.search(' *}', line) is not None:
|
|
version_found = False
|
|
|
|
if version_found:
|
|
res = re.sub(r"(.*version': )[^,]*", rf"\g<1>'{args.version}'", line)
|
|
else:
|
|
res = line
|
|
|
|
if res is not None:
|
|
print(res, flush=True, end="")
|
|
|
|
# check environment.js for localhost
|
|
with open(f'{front_path}/src/enviroments/enviroments.js', 'r') as file:
|
|
for line in file:
|
|
if re.match(r'.*localhost: *.*localhost.*', line) is not None:
|
|
print('Error: localhost in enviroments.js')
|
|
exit(1)
|
|
|
|
# -----------------------------build React-------------------------------------
|
|
res = subprocess.Popen(['npm', 'ci'], cwd=front_path)#, env=react_env)
|
|
res.wait()
|
|
|
|
if res.returncode != 0:
|
|
print("npm ci failed", flush=True)
|
|
exit(1)
|
|
else:
|
|
print("npm ci successed", flush=True)
|
|
|
|
res = subprocess.Popen(['npm', 'run', 'build'], cwd=front_path)#, env=react_env)
|
|
res.wait()
|
|
|
|
if res.returncode != 0:
|
|
print("'npm run build' failed", flush=True)
|
|
exit(1)
|
|
else:
|
|
print("'npm run build' successed", flush=True)
|
|
|
|
shutil.rmtree(f'{front_path}/node_modules')
|
|
|
|
shutil.move(f'{front_path}/build/index.html', f'{back_path}/templates/console/index.html')
|
|
|
|
if os.path.exists(f'{back_path}/static/react'):
|
|
shutil.rmtree(f'{back_path}/static/react')
|
|
|
|
Path(f'{back_path}/static/react').mkdir(parents=True, exist_ok=True)
|
|
copy_tree(f'{front_path}/build/', f'{back_path}/static/react/')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|