#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from inc import CliTool
from app_const import *
import sys, os

app = sys.argv[1]
isIntra = (sys.argv[2] == 'intra')
pubEnv = sys.argv[3]

#编译node参数
npmCmd = sys.argv[4]
onlyPubApi =  (sys.argv[4] == 'api')
onlyPubWeb = False

mode = sys.argv[4]
timeout = '120'

argvNum = len(sys.argv)
if onlyPubApi is True:
    npmCmd = False
    mode = sys.argv[5]

if isIntra is True:
    localPwdFile = '/home/porsche/publish/tjds1.passwd'
else:
    localPwdFile = '/Users/tangjianhui/Documents/publish/tjds1.passwd'

def getDictKeyByValue(app, distMap):
    for realRepo, apps in distMap.items():
        if app in apps:
           return realRepo
        
    return False


if isIntra is True:
    localSrc = '/alidata/www/' + app + '/'
else:
    repoAppMap = {
        'earth': [APP_EARTH, APP_ERP_BAIKE],
        'earth-dbf': [APP_ERP_DESKTOP, APP_ERP_DIANJIUFANG],
        'earth-chat-shopee': [APP_EARTH_CS, APP_EARTH_DESKTOP_CS],
        'tms': [APP_TMS, APP_TMS_DESKTOP, APP_TMS_MOBILE, APP_TMS_APP],
        'dm-erp': [APP_EASYBOSS],
        'xiuxiu': [APP_XIUXIU, APP_XIUXIU_DZ],
        'honor-1688-v2': [APP_ACN_V2, APP_ACN_DM],
        'honor-1688-cg': [APP_ACN_CG, APP_ACN_DM_CG],
        'honor-1688-order-v2': [APP_ACN_OD_V2, APP_ACN_OD_RY_V2],
        'honor-ks-v2': [APP_KS_V2, APP_KSDZ_V2],
        'honor-ks-move': [APP_KS_MOVE, APP_KSDZ_MOVE],
        'honor-dd-order-v2': [APP_DDDZ_OD_V2, APP_DD_OD_V2, APP_DDY_DD_OD_V2, APP_DDY_DDDZ_OD_V2, APP_DDY_RY_OD_V2, APP_DDY_TBK_OD_V2, APP_DDY_FY_OD_V2],
        'honor-dd-v2': [APP_DDY_DD_V2, APP_DDY_DDDZ_V2, APP_DDY_TBK_V2, APP_DDY_FY_V2],
        'honor-dd-ir': [APP_DDY_DD_IR, APP_DDY_DDDZ_IR],
        'honor-dd-order-ir': [APP_DDY_DD_OD_IR, APP_DDY_DDDZ_OD_IR],
        'honor-dd-mobile-web': [APP_DD_MOBILE, APP_DDDZ_MOBILE],
        'honor-dd-order-mobile-web': [APP_DD_OD_MOBILE, APP_DDDZ_OD_MOBILE],
        'xiuxiu-v2': [APP_YKT, APP_YKT_DIGSHOW],
        'honor-tb-v2': [APP_TBKSH_v2, APP_TBMS_v2, APP_TBDZ_v2],
        'joy-order': [APP_JOY_ORDER_RY, APP_JOY_ORDER_TBK, APP_JOY_ORDER_DZ, APP_JOY_ORDER_DZFX, APP_JOY_ORDER_FX],
        'joy-order-mobile-web': [APP_JOY_ORDER_FX_MOBILE_WEB, APP_JOY_ORDER_DZFX_MOBILE_WEB],
        'joy-mobile-web': [APP_JOY_FX_MOBILE_WEB, APP_JOY_DZFX_MOBILE_WEB],
        'joy': [APP_JOY_GOLD, APP_JOY_HONOR, APP_JOY_ZNDZ, APP_JOY_TBK, APP_JOY_YZ, APP_JOY_DZ_FX, APP_JOY_FX],
        'jvc': [APP_JVC_GOLD, APP_JVC_MS, APP_JVC_DZ, APP_JVC_TBK],
        'honor-xhs': [APP_XHS_RY, APP_XHS_TBK, APP_XHS_DZ],
        'honor-sphxd': [APP_SPHXD, APP_SPHXD_DZ, APP_SPHXD_TBK, APP_SPHXD_RY],
        'fetch-bank-v2': [APP_FB_v2, APP_FB_v2_DZ, APP_FB_v2_RY, APP_FB_v2_TBK, APP_FB_v2_GOLD, APP_FB_v2_DS, APP_FB_v2_DMDS],
        'honor-xhs-order-v2': [APP_XHS_OD_V2, APP_XHS_DZ_OD_V2, APP_XHS_TBK_OD_V2, APP_XHS_RY_OD_V2],
        'honor-sphxd-order': [APP_SPHXD_OP_DZ, APP_SPHXD_OP_RY, APP_SPHXD_OP_TBK],
        'honor-sphxd-mobile-web': [APP_SPHXD_MOBILE, APP_SPHXD_MOBILE_DZ],
        'galaxy': [APP_GALAXY_DZ, APP_GALAXY],
    }
    repoAlias = getDictKeyByValue(app, repoAppMap)
    repo = app if repoAlias is False else repoAlias

    localSrc = CliTool.workspace() + repo + '.git/'
    if os.path.isdir(localSrc) is False:
        print('目录 {}.git 未找到， 非有效的程序目录'.format(repo))
        exit()

buildWeb = npmCmd in ['npmbd', 'npmi', 'npmbd-web', 'npmi-web']
isWebOnly = app in [
    APP_TMS_MOBILE, 
    APP_TMS_APP, 
    APP_YKT_APP, 
    APP_MKT_EDITOR, 
    APP_DD_MOBILE, 
    APP_DDDZ_MOBILE, 
    APP_DD_OD_MOBILE, 
    APP_DDDZ_OD_MOBILE,
    APP_BARCODE_EDITOR,
    APP_SPHXD_MOBILE
]

if isWebOnly is True and buildWeb is False and npmCmd != 'web':
    print('前端发布命令npmbd/npmi/npmbd-web/npmi-web')
    exit()

if buildWeb is True:
    feGitDir = {
        APP_TMS_MOBILE: 'mobile',
        APP_TMS_APP: 'tms-applet',
    }.get(app, 'web')
    
    baseCmd = 'export NODE_OPTIONS="--max-old-space-size=8192"; cd ' + localSrc + feGitDir

    yarnCmdMap = {
        'build:earth': [APP_EARTH],
        'build:bkerp': [APP_ERP_BAIKE],
        'build-desktop': [APP_ERP_DESKTOP, APP_TMS_DESKTOP], 
        'build-dianjiufang': [APP_ERP_DIANJIUFANG], 
        'build-dianbafang': [APP_EARTH_DESKTOP_CS], 
        'build:h5': [APP_TMS_APP], 
        'build': [
            APP_TMS_MOBILE,
            APP_GALAXY,
            APP_GWMS,
            APP_EARTH_CS,
            APP_ERP_CHAT,
            APP_TMS,
            APP_JCRM,
            APP_YKT_APP
        ], 
        'xxweb:build.digshow': [APP_YKT_DIGSHOW], 
        'build-dz': [APP_XIUXIU_DZ], 
        'build:apple': [
            APP_JOY_YZ, 
        ], 
        'build:gold': [
            APP_JOY_GOLD, 
            APP_JVC_GOLD,
            APP_FB_v2_GOLD
        ], 
        'build:greatboss': [APP_GREATBOSS], 
        'build:easyboss': [APP_EASYBOSS], 
        'build:dm': [
            APP_ACN_DM,
            APP_ACN_DM_CG,
        ], 
        'build:msds': [
            APP_FB_v2_DS,
        ], 
        'build:dmds': [
            APP_FB_v2_DMDS,
        ], 
        'xxweb:build': [
            APP_YKT,
            APP_MKT_EDITOR,
            APP_BARCODE_EDITOR,
        ], 
        ##店长分销
        'build:dzfx': [
            APP_JOY_ORDER_DZFX,
            APP_JOY_ORDER_DZFX_MOBILE_WEB,
            APP_JOY_DZFX_MOBILE_WEB,
            APP_JOY_DZ_FX
        ],
        ##妙手分销
        'build:msfx': [
            APP_JOY_ORDER_FX,
            APP_JOY_ORDER_FX_MOBILE_WEB,
            APP_JOY_FX_MOBILE_WEB,
            APP_JOY_FX
        ],
        ##店长
        'build:dz': [
            APP_KSDZ_V2,
            APP_KSDZ_OD_V2,
            APP_KSDZ_MOVE,
            APP_DDDZ_OD_V2,
            APP_DDY_DDDZ_IR,
            APP_DDY_DDDZ_OD_IR,
            APP_DDY_DDDZ_V2,
            APP_DDY_DDDZ_OD_V2,
            APP_TBDZ_v2,
            APP_DDDZ_MOBILE,
            APP_DDDZ_OD_MOBILE,
            APP_JOY_ZNDZ, 
            APP_SPHXD_DZ, 
            APP_FB_v2_DZ,
            APP_XHS_DZ,
            APP_XHS_DZ_OD_V2,
            APP_SPHXD_OP_DZ,
            APP_JOY_ORDER_DZ,
            APP_SPHXD_MOBILE_DZ,
            APP_GALAXY_DZ,
            APP_JVC_DZ
        ], 
        ##妙手
        'build:ms': [
            APP_KS_V2,
            APP_KS_OD_V2,
            APP_KS_MOVE,
            APP_ACN_V2,
            APP_ACN_OD_V2,
            APP_ACN_CG,
            APP_DD_OD_V2,
            APP_DDY_DD_IR,
            APP_DDY_DD_OD_IR,
            APP_DDY_DD_V2,
            APP_DDY_DD_OD_V2,
            APP_TB_v2,
            APP_TBMS_v2,
            APP_XHS,
            APP_XHS_OD_V2,
            APP_SPHXD,
            APP_SPHXD_OP,
            APP_ZFB, 
            APP_ZFB_OD, 
            APP_JOY_ORDER,
            APP_JOY_HONOR,
            APP_FB_v2,
            APP_BILI_OD,
            APP_BILI,
            APP_DEWU,
            APP_FB_v2,
            APP_SPHXD_MOBILE,
            APP_JVC_MS
        ],
        
        ##淘百客
        'build:tbk': [
            APP_KSTBK_OD_V2,
            APP_TBKSH_v2,
            APP_JOY_TBK,
            APP_FB_v2_TBK,
            APP_XHS_TBK,
            APP_XHS_TBK_OD_V2,
            APP_JOY_ORDER_TBK,
            APP_DDY_TBK_OD_V2,
            APP_DDY_TBK_V2,
            APP_SPHXD_OP_TBK,
            APP_SPHXD_TBK,
            APP_TB_OD,
            APP_JVC_TBK
        ], 
        ##聚宝
        'build:ry': [
            APP_JOY_ORDER_RY,
            APP_DDY_RY_OD_V2,
            APP_ACN_OD_RY_V2,
            APP_FB_v2_RY,
            APP_XHS_RY,
            APP_XHS_RY_OD_V2,
            APP_SPHXD_OP_RY,
            APP_SPHXD_RY
        ], 
        ##飞渔
        'build:fy': [
            APP_DDY_FY_V2,
            APP_DDY_FY_OD_V2
        ], 
    }
            
    buildCmd = getDictKeyByValue(app, yarnCmdMap)


    ##零时兼容默认build命令，之前全部废除
    if buildCmd is False:
        print("app {}编译命令为False,请检查".format(app))
        exit()


    for tag in ['dz', 'ry', 'tbk', 'dm', 'digshow', 'desktop', 'gold', 'greatboss', 'easyboss']:
        if app in [APP_EARTH_DESKTOP_CS]:
            continue
         
        if tag in app.lower() and tag not in buildCmd.lower():
            print("app [{}] 中包含({})关键字，但是编译命令（{}）不存在，清检查编译命令是否正确".format(app, tag, buildCmd))
            exit()

    if pubEnv == 'pre':
        buildCmd = {
            APP_EASYBOSS: 'build:easyboss-pre',
        }.get(app, buildCmd)

        if app in [APP_YKT, APP_YKT_DIGSHOW]:
            buildCmd += '-pre'
    
    cmd = '{} && yarn && VITE_BUILD_ENV={} yarn {}'.format(baseCmd, pubEnv, buildCmd)

    print("start run command " + cmd)
    if buildCmd in ['xxweb:build', 'xxweb:build.digshow']:
        print("start xxweb:build for os.system ")
        os.system(cmd)
    else:
        CliTool.processCmd(cmd)

    if(app in [APP_EARTH, APP_ERP_DESKTOP, APP_ERP_DIANJIUFANG, APP_ERP_BAIKE]):
        cmd = baseCmd + ' && rm -rf dist distv1 && /bin/bash scripts/bundle.sh '
        print("start run command " + cmd)
        CliTool.processCmd(cmd)

        cmd = baseCmd + ' && mv dist disttmp && mv disttmp/* ./ && rm -rf disttmp'
        print("start run command " + cmd)
        CliTool.processCmd(cmd)

    if(app in [APP_YKT, APP_YKT_DIGSHOW, APP_MKT_EDITOR, APP_BARCODE_EDITOR]):
        cmd = baseCmd + ' && rm -rf dist && mv packages/xiuxiu-web/dist ./'
        print("start run command " + cmd)
        CliTool.processCmd(cmd)

    mode = sys.argv[5]

###erpchat 前端增量发布
isIncPub = False
if npmCmd in ['npmbd-web', 'npmi-web', 'web'] or isWebOnly is True:
    if app == APP_ERP_CHAT and pubEnv == 'pre':
        isIncPub = True

    onlyPubWeb = True
    mode = sys.argv[5]

if (npmCmd is False and onlyPubApi is False) or isWebOnly is True:
    fsDIstDir = {
        APP_TMS_MOBILE: 'mobile/dist',
        APP_TMS_APP: 'tms-applet/dist/build/h5',
        APP_ACN_DS_v2: 'web/build',
    }.get(app, 'web/dist')

    distDir = localSrc + fsDIstDir
    distv1Dir = localSrc + 'web/distv1'
    if os.path.isfile(distDir + '/index.html') is False:
        print(distDir + ' 编译文件不存在!')
        exit()
        
    if (app in [APP_EARTH, APP_ERP_DESKTOP, APP_ERP_DIANJIUFANG, APP_EASYBOSS, APP_ERP_BAIKE]) and os.path.isfile(distv1Dir + '/index.html') is False:
        print(distv1Dir + ' web/distv1 编译文件不存在!')
        exit()

if onlyPubApi is True:
    apiDir = localSrc + 'api'
    if os.path.exists(apiDir) is False:
        print(apiDir + ' api 目录不存在!')
        exit()

def get_module(app, pubEnv):
    # If environment is "mc-pre", always use the "-pre" suffix.
    if pubEnv == 'mc-pre':
        return 'www/{}-pre'.format(app)
    
    if pubEnv == 'pre':
        if app in [
            APP_ACN_V2, APP_ACN_DM, APP_ACN_OD_V2, APP_ACN_OD_RY_V2,
            APP_ACN_CG, APP_ACN_DM_CG, APP_TB_OD, APP_DDY_TBK_V2,
            APP_DDY_TBK_OD_V2, APP_TMS, APP_DDY_RY_OD_V2, APP_JOY_GOLD,APP_DDY_FY_V2,APP_DDY_FY_OD_V2,
            APP_GREATBOSS, APP_JOY_TBK, APP_JOY_ORDER_TBK,
            APP_GWMS
        ]:
            return 'www/{}-pre'.format(app)
        
        if app in [
            APP_TMS_MOBILE, APP_TMS_APP
        ]:
            return 'www/tms-pre'
        
        if app in [
            APP_TBKSH_v2, APP_TBMS_v2, APP_TBDZ_v2
        ]:
            return 'www/honor-tb-v2-pre'
        
        if app in [APP_EASYBOSS]:
            return 'www/dm-erp-pre'
        
    if pubEnv == 'test':
        if app in [APP_EASYBOSS]:
            return 'www/dm-erp-test'
        if app in [APP_GREATBOSS]:
            return 'www/{}-test'.format(app)

    if app in [
        APP_TBKSH_v2, APP_TBMS_v2, APP_TBDZ_v2
    ]:
        return 'www/honor-tb-v2'
    
    return {
        APP_ERP_DESKTOP: 'www/earth-desktop',
        APP_ERP_DIANJIUFANG: 'www/earth-dianjiufang',
        APP_TMS_DESKTOP: 'www/tms-desktop',
        APP_TMS_MOBILE: 'www/tms',
        APP_TMS_APP: 'www/tms',
        APP_DDY_DD_V2: 'www/honor-dd-v2',
        APP_DDY_DDDZ_V2: 'www/honor-dddz-v2',
        APP_DDY_DD_OD_V2: 'www/honor-dd-order-v2',
        APP_DDY_DDDZ_OD_V2: 'www/honor-dddz-order-v2',
        APP_DDY_DD_IR: 'www/honor-dd-ir',
        APP_DDY_DDDZ_IR: 'www/honor-dddz-ir',
        APP_DDY_DD_OD_IR: 'www/honor-dd-order-ir',
        APP_DDY_DDDZ_OD_IR: 'www/honor-dddz-order-ir',
        APP_TBKSH_v2: 'www/honor-tb-v2', 
        APP_TBMS_v2:'www/honor-tb-v2', 
        APP_TBDZ_v2: 'www/honor-tb-v2',
        APP_EASYBOSS: 'www/dm-erp',
        APP_YKT: 'www/xiuxiu-v2',
        APP_YKT_DIGSHOW: 'www/xiuxiu-digshow',
    }.get(app, 'www/{}'.format(app))

# Get module based on app and pubEnv
module = get_module(app, pubEnv)


file_hosts = {
    'hosts/hosts-honor-vpc-sw.txt': [
        APP_EARTH_CS, APP_EARTH_DESKTOP_CS, 
        APP_XIUXIU_DZ, APP_DDDZ_OD_V2,
        APP_JCRM, APP_SPHXD_MOBILE, APP_SPHXD_MOBILE_DZ
    ],
    'hosts/hosts-earth-sw.txt': [
        APP_ERP_DESKTOP, APP_ERP_DIANJIUFANG
    ],
    'hosts-mjs-vpc.txt': [
        APP_TMS, APP_TMS_DESKTOP, APP_TMS_MOBILE, APP_TMS_APP
    ],
    'hosts/hosts-honor-ddy-ms.txt': [
        APP_DDY_DD_OD_V2, APP_DDY_DD_V2, APP_DDY_DD_IR, APP_DDY_DD_OD_IR
    ],
    'hosts/hosts-honor-ddy-dz.txt': [
        APP_DDY_DDDZ_OD_V2, APP_DDY_DDDZ_V2, APP_DDY_DDDZ_IR, APP_DDY_DDDZ_OD_IR
    ],
    'hosts/hosts-honor-ddy-ry.txt': [
        APP_DDY_RY_OD_V2
    ],
    'hosts/hosts-honor-ddy-fy.txt': [
       APP_DDY_FY_V2,APP_DDY_FY_OD_V2
    ],
    'hosts/hosts-honor-ddy-tbk.txt': [
        APP_DDY_TBK_OD_V2, APP_DDY_TBK_V2
    ],
    'hosts-acn.txt': [
        APP_ACN_V2, APP_ACN_CG, APP_ACN_OD_V2
    ],
    'hosts-jst-tbdz.txt': [
        APP_ACN_DM, APP_ACN_DM_CG, APP_TBDZ_v2
    ],
    'hosts/hosts-easyboss.txt': [
        APP_EASYBOSS
    ],
    'hosts-tc-us-vpc.txt': [
        APP_GREATBOSS
    ],
    'hosts-jst-tbk.txt': [
        APP_TBKSH_v2, APP_TB_OD
    ],
    'hosts-jst-tbms.txt': [
        APP_TBMS_v2
    ],
    'hosts-op-ms.txt': [
        APP_JOY_ORDER
    ],
    'hosts-op-ry.txt': [
        APP_JOY_ORDER_RY
    ],
    'hosts/hosts-jddz-fx.txt': [
        APP_JOY_DZ_FX, APP_JOY_ORDER_DZFX, APP_JOY_DZFX_MOBILE_WEB, APP_JOY_ORDER_DZFX_MOBILE_WEB, 
    ],
    'hosts/hosts-jdms-fx.txt': [
        APP_JOY_FX, APP_JOY_ORDER_FX, APP_JOY_ORDER_FX_MOBILE_WEB, APP_JOY_FX_MOBILE_WEB
    ],
    'hosts/hosts-gold.txt': [
        APP_JOY_GOLD, APP_JVC_GOLD
    ],
    'hosts/hosts-honor-i.txt': [
        APP_JOY_HONOR, APP_JVC_MS
    ],
    'hosts/hosts-zndz-i.txt': [
        APP_JOY_ZNDZ, APP_JOY_ORDER_DZ, APP_JVC_DZ
    ],
    'hosts/hosts-honor-jdbk.txt': [
        APP_JOY_TBK, APP_JVC_TBK
    ],
    'hosts-apple.txt': [
        APP_JOY_YZ
    ],
    'hosts-honor-jdbk-od.txt': [
        APP_JOY_ORDER_TBK
    ],
    'hosts/hosts-wms.txt': [
        APP_GWMS
    ],
    'hosts/hosts-ykt.txt': [
        APP_YKT, APP_YKT_DIGSHOW, APP_BARCODE_EDITOR, APP_MKT_EDITOR, APP_YKT_APP
    ],
    'hosts/hosts-earth.txt': [
        APP_EARTH
    ]
}
file_host = next((host for host, apps in file_hosts.items() if app in apps), 'hosts/hosts-honor-vpc.txt')

if pubEnv in ['pub', 'real'] and mode == 'real' and onlyPubApi is True:
    realLocalSrc = localSrc if os.path.exists(localSrc + ".git") else localSrc + 'api/'
    res = os.popen("cd " + realLocalSrc + " && git branch -a | grep '*' | awk '{print $2}'")
    branch = res.read().strip("\n")

    if any(keyword.lower() in branch.lower() for keyword in ['real', 'master', 'revert']) is False:
        print(("清检查分支: {} 是否为正式发布分支?， 正式发布分支名称需包含 real、master、revert等关键词".format(branch)))
        exit()

filePath = os.path.dirname(sys.argv[0]) + '/' + file_host

pubPort = {
    APP_JOY_ORDER: '3389',
    APP_JOY_ORDER_RY: '3389',
    APP_JOY_GOLD: '3389',
}.get(app, '8873')

ipsMap = CliTool.getIpsMap(filePath, isIntra, pubPort, module)

if (pubEnv == 'pre'):
    switcher = {
        APP_EARTH: 'pre,jst-pre',
    }
    pubEnv = switcher.get(app, 'pre')

envList = CliTool.getEnvList(pubEnv, ipsMap, isIntra)

ips = {}
for env in envList:
    ips = dict(ips, **ipsMap[env])

if onlyPubWeb is False: 
    htaccess = os.path.isfile(localSrc + '.htaccess')
    htaccessPath = 'api/root.htaccess'
    existsHtaccessPath = os.path.isfile(localSrc + htaccessPath)

    if existsHtaccessPath is True:
        cmd = ('cd ' + localSrc + ' && rm -rf root.htaccess .htaccess && cp ' + htaccessPath + ' ./ && mv root.htaccess .htaccess')
        print("start process zip command: " + cmd + "\n")
        outputStr = CliTool.execCommand(cmd)
        print(outputStr)
    elif htaccess is False:
        print(htaccessPath + ' 文件不存在，请先添加!')
        exit()
    else:
        print("root.htaccess not exists but .htacces exists")

rsync_del='--del' if isIncPub is False else ''
cmdTpl = 'rsync -%s --delay-updates {} --stats --port=%s --password-file={} --timeout={}'.format(rsync_del, localPwdFile, timeout)

sshCmdTpl = 'rsync -%s -e ssh --delay-updates --del --stats --port=%s --timeout=' + timeout

cmdTplExt = ''
if onlyPubWeb is True:
    if app in [APP_TMS_MOBILE]:
        cmdTplExt += ' --exclude=/api/* --include=/mobile/dist/ '
    elif app in [APP_TMS_APP]:
        cmdTplExt += ' --exclude=/api/* --include=/tms-applet/dist/ '
    else:
        cmdTplExt += ' --exclude=/api/* --include=/web/dist/ --include=/web/distv1/ '
        
elif onlyPubApi is True:
    cmdTplExt += ' --include=/api/ '
else:
    cmdTplExt += ' --include=/api/ --include=/web/dist/ --include=/web/distv1/ '

if app in [APP_TMS, APP_TMS_APP, APP_TMS_DESKTOP, APP_TMS_MOBILE]:
    cmdTplExt += ' --exclude=/mobile/* --exclude=/tms-applet/*  '

cmdTplExt += ' --exclude=/web/* --exclude=/log ' + CliTool.excludeFile() + localSrc

cmdTpl += cmdTplExt + ' www@%s::%s/'
sshCmdTpl += cmdTplExt + ' root@%s:/alidata/%s/'

Ct = CliTool()

syntax_check = False if (isIntra is True) or (isWebOnly is True) else True
Ct.publish(ips, mode, cmdTpl, False, sshCmdTpl, php_syntax_check = syntax_check)


