转移luban设置

main
刘涛 2023-10-23 16:35:52 +08:00
parent ea235ad542
commit 378fe0f3ca
38 changed files with 336 additions and 46 deletions

3
.gitignore vendored
View File

@ -85,4 +85,5 @@ ProjectNLD/Assets/HotUpdateDlls/MetaDataDll
#Addressables
ProjectNLD/ServerData/
*.tgz
*.tgz
/Tool/Luban/Datas

32
Tool/Luban/.cache.meta Normal file
View File

@ -0,0 +1,32 @@
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/ActorCfg/ItemType.cs,89B22DA9CBF1836DA2C775D6AA3942D,855,1690371134295
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/ActorCfg/ValueItemType.cs,4CC6654B5ED543CCFD0F81E3456927,730,1690371134303
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/AreaCfg/EAreaType.cs,7BA183481291A52E615C148A5F59AE7B,523,1690371134302
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/BuffCfg/EBuffType.cs,D665732DBAA1A0E2BC589CD674FB69E0,911,1690371134306
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/BuffCfg/EExistType.cs,2D091A34ACE816A289ABCF8212581,700,1690371134296
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/BuffCfg/ETriggerType.cs,AE71FC673AF158F6BBE916E5218D2C3,709,1690371134301
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/BulletCfg/EBulletTargetType.cs,4E8F4DF21357EDCDA093461EF15EAB2,711,1690371134305
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/CharacterCfg/Army.cs,C14FA7B4FDE16A5D12D47AB11A23C2C,783,1690371134308
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/CharacterCfg/Efaction.cs,1FAE991E399A9242B66F24C3197C1FA,799,1690371134306
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/CharacterCfg/Ejob.cs,BAE7E98626D96F07F85434146F551,921,1690371134297
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/CharacterCfg/EShootMode.cs,3F9F486255E7B3DA5FA43813A333D,615,1690371134304
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/CharacterCfg/EWeapon.cs,6AB4655FCACE8281837A4DC6ED13B847,770,1690371134296
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/SkillCfg/ESkillType.cs,753DE12FC43FCE71D488FAD3157BBE4C,608,1690371134298
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Code/Scripts/Gameplay/DataTable/SkillCfg/ETargetType.cs,A046FF6CE3DC31638E2BE1EB82DE6C1C,898,1690371134295
C:/Users/82158/Perforce/liutao_LT-Work_ProjectNLD_main_1/ProjectNLD/Assets/Config/Data/charactercfg_characterattri.json,C84BCFF556AAC941B8DF9A2CAB05AC8,25187,1690440666100
C:/Users/82158/Perforce/MiscNLD/config/Datas/__beans__.xlsx,1FB5D353478A118E335F234A4FE2B5C,10303,1690435392313
C:/Users/82158/Perforce/MiscNLD/config/Datas/__enums__.xlsx,2AF124B9C6BACAC1E18BABC4F7F7E758,13514,1690444887326
C:/Users/82158/Perforce/MiscNLD/config/Datas/__tables__.xlsx,2EAD6952E642CDF507D75A5B7F3DEF,12723,1690444887097
C:/Users/82158/Perforce/MiscNLD/config/Datas/ActorBorn.xlsx,6E1C769C2DFE16DBFFF698480424A5F,10653,1690444887212
C:/Users/82158/Perforce/MiscNLD/config/Datas/BuffConfig.xlsx,6C91CE2946B4C9556C99B3053B8D787,23771,1690444887302
C:/Users/82158/Perforce/MiscNLD/config/Datas/BulletConfig.xlsx,4530153340EB7B7814BB0B9AD9D93C1,24741,1690444887338
C:/Users/82158/Perforce/MiscNLD/config/Datas/CharacterBreak.xlsx,A33DF20950B67479C83B543CBD134,17741,1690444887512
C:/Users/82158/Perforce/MiscNLD/config/Datas/CharacterDefault.xlsx,9A62C3B318490D1EB7EB98A4C1698A,29737,1690444887312
C:/Users/82158/Perforce/MiscNLD/config/Datas/CharacterLevelExp.xlsx,80E74EB2AFA7F1B334A8D489FED41C13,11558,1690444887328
C:/Users/82158/Perforce/MiscNLD/config/Datas/EffectConfig.xlsx,BFF6C17CE3BE091FE84A7391B54AF2,25355,1690444887379
C:/Users/82158/Perforce/MiscNLD/config/Datas/GlobalConfig.xlsx,ED264F6CDA5A0FB84820738B6F39C6,14495,1690444887352
C:/Users/82158/Perforce/MiscNLD/config/Datas/InfluenceAreaConfig.xlsx,CDAB22883A7D8E44D0378423D2D9833,22615,1690444887690
C:/Users/82158/Perforce/MiscNLD/config/Datas/Item.xlsx,1D4962FAE48A5615659593AFD69350,17800,1690444887363
C:/Users/82158/Perforce/MiscNLD/config/Datas/ModelSpeed.xlsx,F8D9C729F1B8525FA6C0E2841A259CB1,9541,1690435379416
C:/Users/82158/Perforce/MiscNLD/config/Datas/SkillConfig.xlsx,AEABCC7B3C82616DA3B6A1A4CFE17288,26018,1690444887167
C:/Users/82158/Perforce/MiscNLD/config/Datas/StringConfig.xlsx,83B75145F2724B31CCC786CF63EBC67,16576,1690444887222
C:/Users/82158/Perforce/MiscNLD/config/Datas/SummonConfig.xlsx,C89E4F350F3E7ECB34463BBC44EE23,23513,1690444887240

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,7 +1,6 @@
using Bright.Serialization;
using System.Collections.Generic;
using SimpleJSON;
using Framework;
{{
name = x.name
@ -18,17 +17,24 @@ using Framework;
/// {{x.escape_comment}}
/// </summary>
{{~end~}}
public sealed partial class {{name}}:IDataImportFun
public sealed partial class {{name}}
{
{{~if x.is_map_table ~}}
private Dictionary<{{cs_define_type key_type}}, {{cs_define_type value_type}}> _dataMap;
private List<{{cs_define_type value_type}}> _dataList;
private readonly Dictionary<{{cs_define_type key_type}}, {{cs_define_type value_type}}> _dataMap;
private readonly List<{{cs_define_type value_type}}> _dataList;
public {{name}}()
public {{name}}(JSONNode _json)
{
_dataMap = new Dictionary<{{cs_define_type key_type}}, {{cs_define_type value_type}}>();
_dataList = new List<{{cs_define_type value_type}}>();
foreach(JSONNode _row in _json.Children)
{
var _v = {{cs_define_type value_type}}.Deserialize{{value_type.bean.name}}(_row);
_dataList.Add(_v);
_dataMap.Add(_v.{{x.index_field.convention_name}}, _v);
}
PostInit();
}
public Dictionary<{{cs_define_type key_type}}, {{cs_define_type value_type}}> DataMap => _dataMap;
@ -39,7 +45,14 @@ public sealed partial class {{name}}:IDataImportFun
public T GetAs<T>({{cs_define_type key_type}} key) where T : {{cs_define_type value_type}} => (T)_dataMap[key];
{{~end~}}
public {{cs_define_type value_type}} GetOrDefault({{cs_define_type key_type}} key) => _dataMap.TryGetValue(key, out var v) ? v : null;
public {{cs_define_type value_type}} Get({{cs_define_type key_type}} key) => _dataMap[key];
public {{cs_define_type value_type}} Get({{cs_define_type key_type}} key) {
if (_dataMap.TryGetValue(key, out var v)) {
return v;
} else {
UnityEngine.Debug.LogError($"table {{name}} key not found: {key}");
return null;
}
}
public {{cs_define_type value_type}} this[{{cs_define_type key_type}} key] => _dataMap[key];
public void Resolve(Dictionary<string, object> _tables)
@ -70,19 +83,31 @@ public sealed partial class {{name}}:IDataImportFun
{{~end~}}
{{~end~}}
public {{name}}()
public {{name}}(JSONNode _json)
{
_dataList = new List<{{cs_define_type value_type}}>();
foreach(JSONNode _row in _json.Children)
{
var _v = {{cs_define_type value_type}}.Deserialize{{value_type.bean.name}}(_row);
_dataList.Add(_v);
}
{{~if x.is_union_index~}}
_dataMapUnion = new {{cs_table_union_map_type_name x}}();
foreach(var _v in _dataList)
{
_dataMapUnion.Add(({{cs_table_key_list x "_v"}}), _v);
}
{{~else if !x.index_list.empty?~}}
{{~for idx in x.index_list~}}
_dataMap_{{idx.index_field.name}} = new Dictionary<{{cs_define_type idx.type}}, {{cs_define_type value_type}}>();
{{~end~}}
foreach(var _v in _dataList)
{
{{~for idx in x.index_list~}}
_dataMap_{{idx.index_field.name}}.Add(_v.{{idx.index_field.convention_name}}, _v);
{{~end~}}
}
{{~end~}}
PostInit();
}
@ -150,32 +175,6 @@ public sealed partial class {{name}}:IDataImportFun
}
{{~end~}}
public void _LoadData(string data)
{
JSONNode _json=JSON.Parse(data);
foreach(JSONNode _row in _json.Children)
{
var _v ={{cs_define_type value_type}}.Deserialize{{value_type.bean.name}}(_row);
_dataList.Add(_v);
}
{{~if x.is_list_table~}}
foreach(var _v in _dataList)
{
_dataMapUnion.Add(({{cs_table_key_list x "_v"}}), _v);
}
{{~else if !x.index_list.empty?~}}
{{~for idx in x.index_list~}}
_dataMap = new Dictionary<{{cs_define_type idx.type}}, {{cs_define_type value_type}}>();
{{~end~}}
foreach(var _v in _dataList)
{
{{~for idx in x.index_list~}}
_dataMap.Add(_v.{{idx.index_field.convention_name}}, _v);
{{~end~}}
}
{{~end~}}
PostInit();
}
partial void PostInit();
partial void PostResolve();

View File

@ -1,5 +1,7 @@
using Bright.Serialization;
using SimpleJSON;
using Framework;
using System;
{{
name = x.name
namespace = x.namespace
@ -7,11 +9,7 @@ using SimpleJSON;
}}
{{cs_start_name_space_grace x.namespace}}
//所有生成类继承IDataImportFun接口
public interface IDataImportFun
{
void _LoadData(string data);
}
public sealed partial class {{name}}
{
{{~for table in tables ~}}
@ -23,9 +21,31 @@ public sealed partial class {{name}}
public {{table.full_name}} {{table.name}} {get; }
{{~end~}}
public {{name}}()
public {{name}}(System.Func<string, JSONNode> loader)
{
var tables = new System.Collections.Generic.Dictionary<string, object>();
{{~for table in tables ~}}
{{table.name}} = new {{table.full_name}}(loader("{{table.output_data_file}}"));
tables.Add("{{table.full_name}}", {{table.name}});
{{~end~}}
PostInit();
{{~for table in tables ~}}
{{table.name}}.Resolve(tables);
{{~end~}}
PostResolve();
}
public static void PostPreload(Action<string> loader) {
{{~for table in tables ~}}
loader("{{table.output_data_file}}");
{{~end~}}
}
public static void AfterLoaded(Action<string> loader) {
{{~for table in tables ~}}
loader("{{table.output_data_file}}");
{{~end~}}
}
public void TranslateText(System.Func<string, string, string> translator)

29
Tool/Luban/auto.py Normal file
View File

@ -0,0 +1,29 @@
import download_util
import openpyxl
import os
import sys
if not download_util.download_single_file("AConfigList.xlsx", "e3_AQIA8QbmAKEFwoGRFPhT9uizRsOaA"):
download_util.write_file("./result", "error")
sys.exit()
if os.path.exists("./Datas/AConfigList.xlsx"):
wb = openpyxl.load_workbook("./Datas/AConfigList.xlsx")
sheet = wb.active
config_list = ""
for row in sheet.iter_rows():
if row[0].value is None:
break
if not download_util.download_single_file(row[0].value, row[1].value):
download_util.write_file("./result", "error")
break
else:
download_util.write_file("./result", "error")
print("./Datas/AConfigList.xlsx 不存在,未拉取线上最新配置")
download_util.write_file("./result", "ok")
print("任务执行完毕")

View File

@ -0,0 +1,17 @@
SummonConfig.xlsx,e3_Ab4A8gbmAKEhojQR19gSHuN2xrgbB
BuffConfig.xlsx,e3_Ab4A8gbmAKEU8P0gf5SRxS4ufFVy8
ActorBorn.xlsx,e3_AQIA8QbmAKEdUmKdWxCR1GkGQ7pav
BulletConfig.xlsx,e3_Ab4A8gbmAKETJ3rd182ThytsQoget
CharacterAwaking.xlsx,e3_Ad4AtwZxAO8ISkgF3V8Q5m3tKvc70
CharacterBreak.xlsx,e3_Ad4AtwZxAO81fMbgcBwRWuELc0Ja6
CharacterDefault.xlsx,e3_Ad4AtwZxAO86gHYV0fAT1y6Elp79v
CharacterLevelExp.xlsx,e3_AR0ArwbsAIgoc33GPX0TKuG1SNYXc
CharacterLikability.xlsx,e3_Ad4AtwZxAO8jZdWusZ0T6ussPfef3
EffectConfig.xlsx,e3_Ab4A8gbmAKEl1RfmdFzSfmOV2a0HN
InfluenceAreaConfig.xlsx,e3_Ab4A8gbmAKEtLmYUUxiTPSkj4KrcN
Item.xlsx,e3_Ad4AtwZxAO8hWc3Z5KnSDeW0SZf8r
SkillConfig.xlsx,e3_Ab4A8gbmAKE0TfRBXjNTNiqroKNvv
__enums__.xlsx,e3_AZMADAYCAEwl7C1hE6XTjmfq0bqVJ
__tables__.xlsx,e3_Ab4A8gbmAKE51pfTRw1RWWoDOEbdV
StringConfig.xlsx,e3_AbcARwYBAI8hpxrnM1ARAWwuZ0sME
GlobalConfig.xlsx,e3_AQIA8QbmAKEYLTBo3pQQ40lq5vd15

View File

@ -0,0 +1,81 @@
import requests, json
from datetime import datetime
import time
import sys
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie':'fingerprint=e5e66bd15b0c457ca060f8cb099a69294; loginTime=1690176693133; fingerprint=hyqtq34fqvwxo0mez56g6nmeghu2ip1alsai4ipykxtbohr39ylogud; pgv_pvid=9052429358; backup_cdn_domain=res.wx.qq.com; RK=ibWIwwqIZ3; ptcz=1a80cd4046f3e58dbd941b4a76174d4977265589177c9caef884a16bd9992b5d; low_login_enable=1; tdoc_uid=13102702970838080; wedoc_openid=wozbKqDgAAYt6fSGwDXda25jv2p5OP0w; docMessageCenterCookie=; optimal_cdn_domain=docs2.gtimg.com; wedoc_sid=1kBCdYycYVcuLGgxAMRUNAAA; wedoc_sids=13102701888889220&1oQwT4xhZXMur2NhAINNSgAA|13102702970838080&1kBCdYycYVcuLGgxAMRUNAAA; wedoc_skey=13102701888889220&ac00476fed4403712cae26060dfb39b6||13102702970838080&0c0ef927cbc73439fee11e033cf4bdde; wedoc_ticket=13102701888889220&CAESIG807y5KZMJpoC13g7JnkNY7pdaXE4n_sycBDYT9KEnH|13102702970838080&CAESIAasGW9d_rOy1Vsa38d9xBy8rZdhXF8_Dox8yDl3dYg7; TOK=86b51da63c2ba485; traceid=86b51da63c; hashkey=86b51da6; window_width=701',
}
sid = '1kBCdYycYVcuLGgxAMRUNAAA'
log = ''
def request_download(operationId):
milliseconds = int(time.time() * 1000)
url2 = f"https://doc.weixin.qq.com/v1/export/query_progress?operationId={operationId}&timestamp={milliseconds}"
second = requests.get(url2, headers=headers)
return second.json()
def download_file(name, url):
global log
reqs = requests.get(url, headers=headers)
if reqs.status_code == 200:
with open(f"./Datas/{name}", "wb") as f:
f.write(reqs.content)
log = log + f"下载完成:{name}\n"
return True
else:
log = log + f"下载失败:{name}\n"
return False
def request_operationId(docId):
url = f"https://doc.weixin.qq.com/v1/export/export_office?sid={sid}&wedoc_xsrf=1&docId={docId}&version=2"
#print(url)
first = requests.post(url, headers=headers)
return first.json()
def download_single_file(name, docId):
global log
result = True
log = log + f"开始下载文件:{name}\n"
odata = request_operationId(docId)
if odata.get("ret") == 0:
operationId = odata.get("operationId")
while True:
rddata = request_download(operationId)
if rddata.get("ret") == 0:
if rddata.get("progress") < 100:
time.sleep(0.1)
else:
download_url = rddata.get("file_url")
#print(download_url)
if not download_file(name, download_url):
result = False
break
else:
log = log + f"获取下载链接失败: {name}, rdddata={rddata}\n"
result = False
break
else:
result = False
log = log + f"获取operationId失败: {name}, odata={odata}\n"
file = open("./download.log", "a")
file.write(log)
file.close()
return result
def write_file(path, content):
file = open(path, "w")
file.write(content)
file.close()

View File

@ -0,0 +1,18 @@
REM GEN_CLIENT等号后面填Luban.ClientServer.exe所在路径eg:set GEN_CLIENT=D:\Luban.ClientServer\Luban.ClientServer.exe
REM CONFIG等号后面填需要生成的excel所在文件夹路径,eg:D:\Datas
REM WORKSPACE后面填工程文件夹位置,eg:D:\work\luofang_LAPTOP-E656ULVR_ProjectA_main\ProjectNLD
set GEN_CLIENT="./Luban.ClientServer/Luban.ClientServer.exe"
set CONFIG=./Datas
REM set UNITY_PRJO_NAME=liutao_LT-Work_ProjectNLD_main_1
REM set WORKSPACE=./../../%UNITY_PRJO_NAME%/ProjectNLD
set WORKSPACE=%1
%GEN_CLIENT% -j cfg --^
-d ./Defines/__root__.xml ^
--input_data_dir %CONFIG% ^
--output_code_dir %WORKSPACE%\Code\Scripts\Gameplay\DataTable ^
--output_data_dir %WORKSPACE%\Config\Data ^
--gen_types code_cs_unity_json,data_json ^
-s client
pause

7
Tool/Luban/git.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
cd ..
git fetch origin
git checkout main
git reset --hard origin/main

View File

@ -6,6 +6,20 @@ echo "Start export config ...\n"
CUR_PATH=`pwd`
echo "current work path:$CUR_PATH\n\n\n"
python3 auto.py
file_path="./result"
text=$(cat "$file_path")
if [ "$text" = "ok" ]; then
echo "所有配置下载成功"
echo "next" > $file_path
else
echo "配置下载失败请检查log"
cat ./download.log
echo "exit" > $file_path
exit
fi
PATH_LUBAN_DLL=$CUR_PATH/Luban.ClientServer/Luban.ClientServer.dll
INPUT_DATA_DIR=$CUR_PATH/Datas
PATH_DEFINE_FILE=$CUR_PATH/Defines/__root__.xml
@ -37,4 +51,4 @@ cp -rf $OUTPUT_DATA_DIR/*.json ~/ProjectNLD/bin/scp/
rm -rf $OUTPUT_CODE_DIR
rm -rf $OUTPUT_DATA_DIR
echo "export done ..."
echo "export done ..."

View File

@ -0,0 +1,32 @@
#!/bin/bash
echo "Start export config ...\n"
CUR_PATH=`pwd`
echo "current work path:$CUR_PATH\n\n\n"
OUTPUT_DIR=$1
PATH_LUBAN_DLL=$CUR_PATH/Luban.ClientServer/Luban.ClientServer.dll
INPUT_DATA_DIR=$CUR_PATH/Datas
PATH_DEFINE_FILE=$CUR_PATH/Defines/__root__.xml
OUTPUT_CODE_DIR=$OUTPUT_DIR/Code/Scripts/Gameplay/DataTable
OUTPUT_DATA_DIR=$OUTPUT_DIR/Config/Data
rm -rf $OUTPUT_CODE_DIR
rm -rf $OUTPUT_DATA_DIR
mkdir -p $OUTPUT_CODE_DIR
mkdir -p $OUTPUT_DATA_DIR
echo "start export .."
dotnet $PATH_LUBAN_DLL -j cfg -- \
--input_data_dir $INPUT_DATA_DIR \
--output_code_dir $OUTPUT_CODE_DIR \
--output_data_dir $OUTPUT_DATA_DIR \
--gen_types data_json,code_cs_unity_json -s client \
--define_file $PATH_DEFINE_FILE
echo "export done ..."

View File

@ -0,0 +1,40 @@
#!/bin/bash
echo "Start export config ...\n"
CUR_PATH=`pwd`
echo "current work path:$CUR_PATH\n\n\n"
PATH_LUBAN_DLL=$CUR_PATH/Luban.ClientServer/Luban.ClientServer.dll
INPUT_DATA_DIR=$CUR_PATH/Datas
PATH_DEFINE_FILE=$CUR_PATH/Defines/__root__.xml
OUTPUT_CODE_DIR=$CUR_PATH/code
OUTPUT_DATA_DIR=$CUR_PATH/data
rm -rf $OUTPUT_CODE_DIR
rm -rf $OUTPUT_DATA_DIR
mkdir -p $OUTPUT_CODE_DIR
mkdir -p $OUTPUT_DATA_DIR
echo "start export .."
dotnet $PATH_LUBAN_DLL -j cfg -- \
--input_data_dir $INPUT_DATA_DIR \
--output_code_dir $OUTPUT_CODE_DIR \
--output_data_dir $OUTPUT_DATA_DIR \
--gen_types data_json,code_go_json -s server \
--define_file $PATH_DEFINE_FILE \
--go:bright_module_name xsf_cfg
find $OUTPUT_CODE_DIR -type f -exec sed -i '' 's/package cfg/package xsf_scp/g' {} +
scp $OUTPUT_CODE_DIR/*.go root@8.137.21.7:~/ProjectNLD/schema/
scp $OUTPUT_DATA_DIR/*.json root@8.137.21.7:~/ProjectNLD/bin/scp/
rm -rf $OUTPUT_CODE_DIR
rm -rf $OUTPUT_DATA_DIR
echo "export done ..."