Commit 9fdf9bea by sikang

update

parent 3204b5e9
cd ..
if [ ${1} = 'motion' ];then
./sdk_manager.py open MOTION
./sdk_manager.py close ADVANCE
./sdk_manager.py close YITU
elif [ ${1} = 'advance' ];then
./sdk_manager.py open ADVANCE
./sdk_manager.py close MOTION
./sdk_manager.py close YITU
else
./sdk_manager.py open YITU
./sdk_manager.py close MOTION
./sdk_manager.py close ADVANCE
fi
\ No newline at end of file
echo "1、同盾列表添加最少选择数量"
echo "2、gradle.properties 添加同盾开关"
echo "3、注释 app module中所有权限"
echo "4、替换引用到的同盾R资源"
echo "5、将BuildConfig配置移动到gradle.properties"
echo "6、依图升级,实现新抽象"
echo "7、添加客户等级"
echo -n "请输入指令编号:"
read commod
if (($commod == '1'))
then
chmod a+x thirdpart_list.py
./thirdpart_list.py
elif (($commod == '2'))
then
chmod a+x update_properties.py
./update_properties.py 'td_mode=close'
elif (($commod == '3'))
then
chmod a+x remove_permission.py
./remove_permission.py
elif (($commod == '4'))
then
chmod a+x remove_td_res.py
./remove_td_res.py
elif (($commod == '5'))
then
chmod a+x move_buildconfig.py
./move_buildconfig.py
elif (($commod == '6'))
then
chmod a+x update_yitu.py
./update_yitu.py
elif (($commod == '7'))
then
echo -n "客户等级:"
read level
chmod a+x update_properties.py
./update_properties.py "level=${level}"
fi
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
def addToProperties(code):
path = "../../../gradle.properties"
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if code in line:
line = "#"+line
if "#MARK-END" in line:
line = code + "\n" + line
f_w.write(line)
def needChange(code,line):
return code in line and "${" not in line
def getResValue(line):
return line.split(",")[2].replace("\\\"","").replace("\"","").replace("'","").replace(" ","").replace(")","").replace("\n","")
def getStringFiled(key,value):
return "\t\t\tbuildConfigField 'String', '" + key + "', " + value + "\n"
def getColorRes(key,value):
return "\t\t\tresValue('color', '"+key+"', " + value + ")\n"
def getStringRes(key,value):
return "\t\t\tresValue('string', '"+key+"', " + value + ")\n"
def move_config(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
move_finished=0
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if "product {" in line:
move_finished += 1
if move_finished == 1 and "}" in line:
move_finished +=1
if move_finished >1:
f_w.write(line)
continue
if needChange("app_name_str",line):
addToProperties("app_name="+getResValue(line))
line = getStringRes("app_name_str","\"${app_name}\"")
elif needChange("LANGUAGE",line):
if line.startswith("//"):
line = ""
else:
addToProperties("\n#语言 in / zh / en")
addToProperties("language=\"in\"")
line = getStringFiled("LANGUAGE","\"${language}\"")
elif needChange("main_color",line):
addToProperties("main_color="+getResValue(line))
line = getColorRes("main_color","\"${main_color}\"")
elif needChange("main_text_color",line):
addToProperties("main_text_color="+getResValue(line))
line = getColorRes("main_text_color","\"${main_text_color}\"")
elif needChange("FACEBOOK_APP_ID",line):
addToProperties("\n#Accoubt Kit")
addToProperties("facebook_app_id="+getResValue(line))
line = getStringRes("FACEBOOK_APP_ID","\"${facebook_app_id}\"")
elif needChange("ACCOUNT_KIT_CLIENT_TOKEN",line):
addToProperties("account_kit_client_token="+getResValue(line))
line = getStringRes("ACCOUNT_KIT_CLIENT_TOKEN","\"${account_kit_client_token}\"")
#zendesk
elif needChange("ZENDESK_URL",line):
addToProperties("\n#zendesk 客服")
addToProperties("zendesk_url=\""+getResValue(line)+"\"")
line = getStringFiled("ZENDESK_URL","\"${zendesk_url}\"")
elif needChange("ZENDESK_APP_ID",line):
addToProperties("zendesk_app_id=\""+getResValue(line)+"\"")
line = getStringFiled("ZENDESK_APP_ID","\"${zendesk_app_id}\"")
elif needChange("ZENDESK_CLIENT_ID",line):
addToProperties("zendesk_client_id=\""+getResValue(line)+"\"")
line = getStringFiled("ZENDESK_CLIENT_ID","\"${zendesk_client_id}\"")
#同盾
elif needChange("TONGDUN_PARENT_CODE",line):
addToProperties("\n#同盾")
addToProperties("tongdun_parent_code=\""+getResValue(line)+"\"")
line = getStringFiled("TONGDUN_PARENT_CODE","\"${tongdun_parent_code}\"")
elif needChange("TONGDUN_PARENT_KEY",line):
addToProperties("tongdun_parent_key=\""+getResValue(line)+"\"")
line = getStringFiled("TONGDUN_PARENT_KEY","\"${tongdun_parent_key}\"")
elif needChange("TONGDUN_APP_NAME",line):
addToProperties("tongdun_app_name=\""+getResValue(line)+"\"")
line = getStringFiled("TONGDUN_APP_NAME","\"${tongdun_app_name}\"")
elif needChange("octopus_open_whatsapp",line):
line = getStringRes("octopus_open_whatsapp","\"${tongdun_app_name} Open Whatsapp\"")
#appsflyer
elif needChange("APPSFLYER_DEV_KEY",line):
addToProperties("\n#Appsflyer")
addToProperties("appsflyer_key=\""+getResValue(line)+"\"")
line = getStringFiled("APPSFLYER_DEV_KEY","\"${appsflyer_key}\"")
elif needChange("HOTLINE",line):
addToProperties("\n#客服电话")
addToProperties("hot_line=\""+getResValue(line)+"\"")
line = getStringFiled("HOTLINE","\"${hot_line}\"")
#server
elif needChange("API_BASE_URL",line):
addToProperties("\n#server")
addToProperties("base_url=\""+getResValue(line)+"\"")
line = getStringFiled("API_BASE_URL","\"${base_url}\"")
elif needChange("HARVESTER_IP",line):
addToProperties("harvest_ip=\""+getResValue(line)+"\"")
line = getStringFiled("HARVESTER_IP","\"${harvest_ip}\"")
elif needChange("HARVESTER_PORT",line):
addToProperties("harvest_port="+getResValue(line))
line = "\t\t\tbuildConfigField 'int', 'HARVESTER_PORT', \"${harvest_port}\"\n"
elif needChange("GATEWAY_HOST_G0",line):
addToProperties("gateway_url=\""+getResValue(line)+"\"")
line = getStringFiled("GATEWAY_HOST_G0","\"${gateway_url}\"")
elif needChange("GATEWAY_HOST_G1",line):
addToProperties("gateway_ip=\""+getResValue(line)+"\"")
line = getStringFiled("GATEWAY_HOST_G1","\"${gateway_ip}\"")
elif needChange("REPAYMENT_H5",line):
addToProperties("repayment_h5=\""+getResValue(line)+"\"")
line = getStringFiled("REPAYMENT_H5","\"${repayment_h5}\"")
elif needChange("ADMIN_HOST",line):
addToProperties("admin_host=\""+getResValue(line)+"\"")
line = getStringFiled("ADMIN_HOST","\"${admin_host}\"")
elif needChange("AGREEMENT_URL",line):
addToProperties("agreement_url=\""+getResValue(line)+"\"")
line = getStringFiled("AGREEMENT_URL","\"${agreement_url}\"")
f_w.write(line)
return
move_config("../../../app/app_config.gradle")
\ No newline at end of file
#!/bin/sh
cd ../../../
alias="keystore${RANDOM}"
certificate="..\/jks\/${alias}.keystore"
certificatePassword=${alias}
storePassword=${alias}
sed -i "s/signing_keyAlias=.*/signing_keyAlias=${alias}/g" gradle.properties
sed -i "s/signing_certificate=.*/signing_certificate=${certificate}/g" gradle.properties
sed -i "s/signging_certificatePassword=.*/signging_certificatePassword=${certificatePassword}/g" gradle.properties
sed -i "s/signging_storePassword=.*/signging_storePassword=${storePassword}/g" gradle.properties
rm -rf jks/*
echo "ready to create new kestore ${alias}"
keytool -genkey -alias "${alias}" -keypass "${alias}" -storepass "${alias}" -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -keyalg RSA -validity 20000 -keystore jks/"${alias}".keystore
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
path = "../../../app/src/main/AndroidManifest.xml"
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
isPermissionDoce = False
isFinished = False;
for line in lines:
if "<uses-permission" in line:
isPermissionDoce = True
if "<application" in line:
isFinished = True
if isPermissionDoce and not isFinished and "<!--" not in line:
line = "<!-- " + line.replace("\n"," -->\n")
f_w.write(line)
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
def remove_res(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if "R.color.color_line_gray" in line:
line = line.replace("R.color.color_line_gray","R.color.qmui_config_color_gray_5")
f_w.write(line)
return
for root, dirs, files in os.walk("../../../app/src/main"):
directory = os.path.join(os.getcwd(), root)
for file in files:
if file.endswith("LoginActivity.java"):
# get the path of the java file
path = os.path.join(directory, file)
remove_res(path)
\ No newline at end of file
#!/usr/bin/env python3
import glob, os
def rename_api(path):
with open("../../../script/api_mapping", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
if "/sysdict/$1/$2" in line:
continue
#去除无用字符
line = line.replace(" "," ").replace("rewrite ^/","").replace("rewrite /","").replace("/(.+)","")\
.replace("/(.*)","").replace(" last;","").replace("\n","") \
.replace("/$1","").replace("/$2","").replace("/$3","").replace("/$4","").replace("/$5","")
if "$ /" in line:
line = line.replace("$ /","*-*")
else:
line = line.replace(" /","*-*")
api_map = line.split("*-*")
api_map[0].replace(" ","")
api_map[1].replace(" ","")
# print(api_map[1]+ " -> " + api_map[0])
with open(path, "r", encoding="utf-8") as api_file:
api_lines = api_file.readlines()
#替换api
with open(path, "w", encoding="utf-8") as f_w:
for api_l in api_lines:
# if "//API-REPAIR*-*" in api_l:
# api_l = "\t"+api_l.split("*-*")[1]
old_line = "//" + api_l.replace("\n","//rewrited\n")
if "loanapp/{loanAppId}/bank" in api_l:
api_l = api_l.replace("loanapp/{loanAppId}/bank","loanapp/bank/{loanAppId}")
if "*Keep*" not in api_l and (api_map[1]+"/{" in api_l or api_map[1]+"\"" in api_l) and ( "@GET" in api_l or "@PUT" in api_l or "@POST" in api_l):
# if "//rewrited" not in api_l:
api_l = api_l.replace(api_map[1], api_map[0])
api_l = old_line + api_l.replace("\n","//rewrited\n")
print(api_map[1]+ " -> " + api_map[0])
# else:
# api_l = old_line + "********************"
f_w.write(api_l)
print(path + " done\n")
return
#java目录的路径
for root, dirs, files in os.walk("../../src/main"):
dir = os.path.join(os.getcwd(), root)
for file in files:
#要检索的文件名
if file.endswith("LoanApi.java") or file.endswith("UploadApi.java") or file.endswith("UserApi.java"):
# get the path of the java file
path = os.path.join(dir, file)
rename_api(path)
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
def get_brackets(line):
left = line.count("{")
right = line.count("}")
return left - right
def code_loanapplyfragment(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
flag1 = False
flag2 = False
flag3 = False
flag4 = False
brackets = 0
for line in lines:
if "getPresenter(LoanPresenter.class).checkQualification(\"action_checkQualification\");" in line:
code = "\n\t\t\t\t\tnew LoanApplyProxy(getActivity(), this, productBean).startLoan(basicAck -> {\n" + \
"\t\t\t\t\t\tnew EventSender.Builder(MessageID.LOAN_STATUS_CHANGED).build().sendEvent();\n" + \
"\t\t\t\t\t});\n"
line = "// " + line + code;
# 3
if "case \"action_checkQualification\":" in line:
flag3 = True
if flag3:
line = "// " + line
if "break;" in line:
flag3 = False;
# 2
if "case \"action_faceVerify\":" in line:
flag2 = True
if flag2:
line = "// " + line
if "break;" in line:
flag2 = False;
# 1
if "public void startFaceVerify() {" in line:
flag1 = True
if flag1:
line = "// " + line
brackets += get_brackets(line)
if brackets == 0:
flag1=False
f_w.write(line)
print ("code_LoanAppFragment updated !")
return
def code_certifyactivity(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if "setTopBarTitle(getString(R.string.text_certification));" in line:
code = "\n\t\tButton nextStepBtn = findViewById(R.id.activity_certify_next_btn);\n" + \
"\t\tif (!TextUtils.isEmpty(BuildConfig.TONGDUN_PARENT_KEY)) {\n" + \
"\t\t\tnextStepBtn.setVisibility(View.VISIBLE);\n" + \
"\t\t\tnextStepBtn.setOnClickListener(v -> {\n" + \
"\t\t\t\tCertifyProgressActivity.start(CertifyActiviy.this, CertifyProgressActivity.CertifyType.CERTIFY_ACCOUNT);\n" + \
"\t\t\t});\n" + \
"\t\t}\n\n"
line = line + code
f_w.write(line)
print ("code_CertifyActivity updated !")
return
def code_fragments(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if "startFragment(PersonalInfoFragment.create(mGenderBtn.getText().toString()), true);" in line:
code = "\n\t\t\t\t\t\t\tnew EventSender.Builder(MessageID.CERTIFY_PROGRESS_CHANGED).obj(PersonalInfoFragment.create(mGenderBtn.getText().toString())).build().sendEvent();\n"
line = "// " + line + code
if "startFragment(ContactInfoFragment.create(), true);" in line:
code = "\n\t\t\t\tnew EventSender.Builder(MessageID.CERTIFY_PROGRESS_CHANGED).obj(ContactInfoFragment.create()).build().sendEvent();\n"
line = "// " + line + code
if "startFragment(ProfessionalFragment.create(), true);" in line:
code = "\n\t\t\t\tnew EventSender.Builder(MessageID.CERTIFY_PROGRESS_CHANGED).obj(ProfessionalFragment.create()).build().sendEvent();"
line = "// " + line + code
if "startFragment(AccountFragment.create(), true);" in line:
code = "\n\t\t\t\t\tnew EventSender.Builder(MessageID.CERTIFY_PROGRESS_CHANGED).obj(AccountFragment.create()).build().sendEvent();\n"
line = "// " + line + code
f_w.write(line)
print ("code_fragments updated !")
return
def code_certifyprogress(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
flag = False
for line in lines:
#1
if "public static void start(FragmentActivity context, CertifyType certifyType) {" in line:
flag = True
if flag and "}" in line:
flag = False
code = "\n\tpublic static void start(FragmentActivity context, CertifyType certifyType, ProductBean productBean) {\n" + \
"\t\tnew ActivityJumper.Builder(context, CertifyProgressActivity.class).put(\"certigy_type\", certifyType).put(\"productBean\", productBean).build().start();\n" + \
"\t}\n"
code += "\n\n"
code += "\t@Subscribe\n" + \
"\tpublic void onEvent(EventMessage msg) {\n" + \
"\t\tif (msg.what == MessageID.CERTIFY_PROGRESS_CHANGED) {\n" +\
"\t\t\tFragment fragment = (Fragment) msg.obj;\n" + \
"\t\t\tBundle arguments = fragment.getArguments();\n" + \
"\t\t\tif (arguments != null) {" + \
"\t\t\t\targuments.putAll(getIntent().getExtras());\n" + \
"\t\t\t}else{\n" + \
"\t\t\t\targuments= getIntent().getExtras();\n" + \
"\t\t\t}\n" + \
"\t\tfragment.setArguments(arguments);\n"+\
"\t\tstartFragment(fragment, true);\n" + \
"\t\t}\n" + \
"\t}\n\n"
line = line + code
#2
if "startFragment(AccountFragment.create(), false);" in line :
code = "\t\t\t\tAccountFragment accountFragment = AccountFragment.create();\n" + \
"\t\t\t\taccountFragment.setArguments(getIntent().getExtras());\n" + \
"\t\t\t\tstartFragment(accountFragment, false);\n"
line = line + code
f_w.write(line)
print ("code_Progress updated !")
return
def code_messageid(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if "public static final int LOAN_STATUS_CHANGED = 3;" in line:
line += "\n\tpublic static final int CERTIFY_PROGRESS_CHANGED = 4;//贷款进度更新\n"
f_w.write(line)
print ("code_MessageID updated !")
return
for root, dirs, files in os.walk("../../../app/src/main"):
directory = os.path.join(os.getcwd(), root)
for file in files:
if file.endswith("LoanApplyFragment.java"):
# get the path of the java file
path = os.path.join(directory, file)
code_loanapplyfragment(path)
elif file.endswith("CertifyActiviy.java"):
path = os.path.join(directory, file)
code_certifyactivity(path)
elif file.endswith("IdentityInfoFragment.java") or file.endswith(
"PersonalInfoFragment.java") or file.endswith(
"ContactInfoFragment.java") or file.endswith("ProfessionalFragment.java"):
path = os.path.join(directory, file)
code_fragments(path)
elif file.endswith("CertifyProgressActivity.java"):
path = os.path.join(directory, file)
code_certifyprogress(path)
elif file.endswith("MessageID.java"):
path = os.path.join(directory, file)
code_messageid(path)
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
path = "../../../gradle.properties"
code = sys.argv[1]
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if code in line:
line = "#"+line
if "MARK-END" in line:
line = code + "\n" + line
f_w.write(line)
\ No newline at end of file
import json
import string
import random
import glob, os
import sys
path = "../../../settings.gradle"
with open(path, "r") as f:
lines = f.readlines()
with open(path, "w") as f_w:
for line in lines:
if "include" in line and 'cash_plugin_toolbox' not in line:
line = line.replace("'lib_base',","'lib_base', 'cash_plugin_toolbox',")
f_w.write(line)
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
def new_func_code():
code = "\t@Override\n" + \
"\tpublic void onLivenessSuccess(OliveappFaceInfo oliveappFaceInfo) {\n" + \
"\t\tLivenessDetectionFrames pkg = this.getLivenessDetectionPackage();\n" + \
"\t\tif ((pkg != null ? pkg.verificationData : null) == null) {\n" + \
"\t\t\tfinishForResult(false, getResources().getString(R.string.faceid_detect_fail));\n" + \
"\t\t} else {\n" + \
"\t\t\tPreferencesManager.get().saveVerificationData(pkg.verificationData);\n" + \
"\t\t\tfinishForResult(true, \"\");\n" + \
"\t\t}\n" + \
"\t}\n"
return code
def add_func(path):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
# readlines以列表的形式将文件读出
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if "FaceDetectActivity extends LivenessDetectionMainActivity" in line:
line = line + "\n" + new_func_code() + "\n"
f_w.write(line)
return
for root, dirs, files in os.walk("../../../app/src/main"):
directory = os.path.join(os.getcwd(), root)
for file in files:
if file.endswith("FaceDetectActivity.java"):
# get the path of the java file
path = os.path.join(directory, file)
add_func(path)
\ No newline at end of file
#!/usr/bin/env python3
import json
import string
import random
import glob, os
import sys
def close_sdk(path, sdk):
# print("processing content: %s..." % path)
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
is_sdk_code = False
for line in lines:
if "//SDK-"+sdk+"-END" in line or "<!--SDK-"+sdk+"-END-->" in line:
is_sdk_code = False
java_mark ="//SDK-" + sdk + "-CODE ->";
xml_mark ="<!--SDK-" + sdk + "-CODE//";
if (path.endswith(".java") or path.endswith(".gradle")) and is_sdk_code and java_mark not in line:
line = java_mark + line
if path.endswith(".xml") and is_sdk_code and xml_mark not in line:
line = xml_mark + line.replace("\n","//-->\n")
if "//SDK-"+sdk+"-START" in line or "<!--SDK-"+sdk+"-START-->" in line:
is_sdk_code = True
f_w.write(line)
return
def open_sdk(path, sdk):
# print("processing content: %s..." % path)
code_mark = "//SDK-" + sdk + "-CODE ->"
xml_mark = "<!--SDK-" + sdk + "-CODE//"
with open(path, "r", encoding="utf-8") as f:
lines = f.readlines()
with open(path, "w", encoding="utf-8") as f_w:
for line in lines:
if code_mark in line:
line = line.replace(code_mark,"")
if xml_mark in line:
line = line.replace(xml_mark,"").replace("//-->","")
f_w.write(line)
return
print ("params "+sys.argv[1] + " "+sys.argv[2])
lib_base_gradle = "../build.gradle"
if sys.argv[1] == 'open':
open_sdk(lib_base_gradle, sys.argv[2])
else:
close_sdk(lib_base_gradle, sys.argv[2])
app_build_gradle = "../../app/build.gradle"
if sys.argv[1] == 'open':
open_sdk(app_build_gradle, sys.argv[2])
else:
close_sdk(app_build_gradle, sys.argv[2])
for root, dirs, files in os.walk("../../app/src/main"):
directory = os.path.join(os.getcwd(), root)
for file in files:
if file.endswith(".java") or file.endswith("AndroidManifest.xml") or file.endswith(".gradle"):
# get the path of the java file
path = os.path.join(directory, file)
if sys.argv[1] == 'open':
open_sdk(path, sys.argv[2])
else:
close_sdk(path, sys.argv[2])
for root, dirs, files in os.walk("../../lib_base/src/main"):
directory = os.path.join(os.getcwd(), root)
for file in files:
if file.endswith(".java") or file.endswith("AndroidManifest.xml") or file.endswith(".gradle"):
# get the path of the java file
path = os.path.join(directory, file)
if sys.argv[1] == 'open':
open_sdk(path, sys.argv[2])
else:
close_sdk(path, sys.argv[2])
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment