Subversion Repositories php-qbpwcf

Rev

Rev 226 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/php
<?php

/*
        QBPWCF, Quick Build PHP website Component base on Fedora Linux.
    Copyright (C) 2014~2026 MIN ZHI, CHEN

    This file is part of QBPWCF.

    QBPWCF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    QBPWCF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.

*/

/*
說明:
將指定的svn目錄輸出、打包、壓縮、上傳到目標Server,然後解壓縮、安裝、移除伺服端跟local端安裝檔案.

範例:

依照 myConfig.php 設定檔的內容執行
packetFromSvnToRemoteServer.php myConfig.php

建立新的設定檔案 myConfig.php
packetFromSvnToRemoteServer.php --create-conf myConfig.php

*/

#使用命名空間qbpwcf
namespace qbpwcf;

#取得 lib path
exec("php -f ".escapeshellarg(pathinfo(__FILE__)["dirname"]."/libexec/folderOfUsrLib.php"),$output,$status);

#如果執行失敗
if($status!==0){

        #debug
        var_dump(__LINE__,$output);

        #結束執行,回傳shell 1.
        exit(1);

        }#if end

#儲存lib path
$folderOfUsrLib=$output[0];

#以該檔案的實際位置的 lib path 為 include path 首位
$output=array();
exec("cd ".escapeshellarg(pathinfo(__FILE__)["dirname"]."/../".$folderOfUsrLib."/qbpwcf").";pwd;",$output,$status);

#如果執行失敗
if($status!==0){

        #debug
        var_dump(__LINE__,$output);

        #結束執行,回傳shell 1.
        exit(1);

        }#if end

#設置 include path
set_include_path($output[0].PATH_SEPARATOR.get_include_path());

#匯入外部套件
include("allInOne.php");

#函式說明:
#export svn 上的檔案目錄,進行打包放到遠端伺服器上並進行安裝或更新的動作.
#回傳結果:
#無.
#必填參數:
#無.
#可省略參數:
#無.
#參考資料:
#無.
#備註:
#用戶端上需要有安裝php,openssh-clients,subversion(svn),openssh-askpass,zstd套件.
#網站伺服器端需要有安裝openssh-server,zstd套件.
#待測試
#建議將svn預先輸入密碼的功能分離出來
cmd::packetFromSvnToRemoteServer();

?>