import os
import shutil
import subprocess
INTERFACE_PATH = "interface/sdk-js"
API_PATH = "api"
API_GEN_PATH = "build-tools/api"
CONVERTER_DIR = "build-tools/permissions_converter"
CONVERTER_TOOL = "build-tools/permissions_converter/convert.js"
def copy_sdk_interface(source_root: str, project_path: str):
source = os.path.join(source_root, INTERFACE_PATH)
dest = os.path.join(source_root, project_path)
if os.path.exists(dest) is False:
shutil.copytree(source, dest)
def copy_api(source_root: str, project_path: str):
source = os.path.join(source_root, project_path, API_PATH)
dest = os.path.join(source_root, project_path, API_GEN_PATH)
if os.path.exists(dest) is False:
shutil.copytree(source, dest)
def convert_permission_method(source_root: str, project_path: str, file_name: str, nodejs: str):
permission_convert_dir = os.path.join(INTERFACE_PATH, CONVERTER_DIR)
permission_convert_tool = os.path.join(INTERFACE_PATH, CONVERTER_TOOL)
config_file = os.path.join("base/security/access_token/services/accesstokenmanager", "permission_definitions.json")
permission_gen_path = os.path.join(project_path, API_GEN_PATH, file_name)
tool = os.path.abspath(os.path.join(source_root, permission_convert_tool))
nodejs = os.path.abspath(nodejs)
config = os.path.abspath(os.path.join(source_root, config_file))
output_path = os.path.abspath(os.path.join(source_root, permission_gen_path))
process = subprocess.Popen([nodejs, tool, config, output_path], shell=False,
cwd=os.path.abspath(os.path.join(source_root, permission_convert_dir)),
stdout=subprocess.PIPE)
process.wait()
def replace_sdk_api_dir(source_root: str, project_path: str, file_name: str):
source = os.path.join(source_root, project_path, API_GEN_PATH, file_name)
dest = os.path.join(source_root, project_path, API_PATH, file_name)
if os.path.exists(dest):
os.remove(dest)
shutil.copyfile(source, dest)
def parse_step(source_root: str, project_path: str, file_name: str, nodejs: str):
copy_sdk_interface(source_root, project_path)
copy_api(source_root, project_path)
convert_permission_method(source_root, project_path, file_name, nodejs)
replace_sdk_api_dir(source_root, project_path, file_name)
def convert_permissions(root_build_dir: str, project_path: str, file_name: str, node_js: str):
parse_step(root_build_dir, project_path, file_name, node_js)