Phing, bir komut bir özellik haline çıkışını olsun diyoruz

4 Cevap php

Ben arama ve çıkış ya da bir metin dosyasına benim geçerli sürüm # yazabilirsiniz bir komut dosyası var. Şimdi tek sorun nasıl bir Phing mülkiyet halinde bu sürüm numarasını almak yapmaktır.

Şu anda benim Phing hedef build.zip ve built.tar oluşturur, bunu yap-1.0.0.zip veya ne olursa olsun versiyon komut geçerli sürüm karar kurmak istiyorum. Bunu nasıl yapabilirim? Ben kendi "görev" oluşturmak zorunda mı?

4 Cevap

Bunun için, kendi görev oluşturmak gerekebilir. Görev gibi bir şey görünebilir ...

<?php
require_once "phing/Task.php";

class VersionNumberTask extends Task
{
    private $versionprop;

    public function setVersionProp($versionprop)
    {
        $this->versionprop = $versionprop;
    }

    public function init()
    {
    }

    public function main()
    {
        // read the version text file in to a variable
        $version = file_get_contents("version.txt");
        $this->project->setProperty($this->versionprop, $version);
    }
}

Sonra yapı xml görev tanımlarsınız

<taskdef classname="VersionNumberTask" name="versiontask" />

Ardından görevi çağrı

<target name="dist">
    <versiontask versionprop="version.number"/>
</target>

Bu noktada, size yapı xml boyunca $ {version.number} kullanarak sürüm numarasını erişmek gerekir.

Bu yardımcı olur umarım!

Alternatif bir yaklaşım, yapı dosyasında bir özellik sağlamak için ExecTask üzerinde outputProperty niteliğini kullanmaktır.

<target name="version">
  <exec command="cat version.txt" outputProperty="version.number" />
  <echo msg="Version: ${version.number}" />
</target>

More information

Windows hem de Linux üzerinde çalışan bir alternatif yaklaşımdır.

<exec executable="php" outputProperty="version.number">
    <arg value="-r" />
    <arg value="$fh=file('version.txt'); echo trim(array_pop($fh));" />
</exec>
<echo msg="Current version is: ${version.number}"/>

Dosyanın son satırı sadece sürüm numarası ve dosya sürüm numarasını güncellemek istiyorsanız varsayar. Bu deneyin.

<propertyprompt propertyName="release_version" defaultValue="${version.numver}" promptText="Enter version to be released."/>
<exec executable="php">
    <arg value="-r" />
    <arg value="$file=file_get_contents('version.txt'); $file = str_replace('${version.number}', '${release_version}', $file); file_put_contents('version.txt', $file);" />
</exec>
<echo msg="Version number updated." />
<property name="version.number" value="${release_version}" override="true" />

Ayrıca alternatif ve en iyi yolu yerli görevi kullanıyoruz Windows hem de Linux üzerinde çalışır (benim görüşüm) LoadFileTask

<loadfile property="myVersion" file="version.txt" />
<echo msg="Current version is: ${myVersion}"/>

Ayrıca kullanabileceğiniz filterchain

<loadfile property="myVersion" file="version.txt">
    <filterchain><striplinebreaks /></filterchain>
</loadfile>
<echo msg="Current version is: ${myVersion}"/>

More information