mirror of
https://github.com/php/doc-base.git
synced 2026-03-24 07:12:14 +01:00
* Add --lang= parameter and simple file listing to sync XML tools Allow all qaxml-*.php scripts to accept --lang=XX to specify the target language directly, without requiring temp/lang from configure.php. Also accept file paths as positional arguments for checking specific files instead of the full translation tree. Existing behavior without parameters is preserved. Relates to #199. * Rename $files to $filterFiles and warn on missing source files Address review feedback: rename parameter for clarity and add STDERR warning when a command-line file is not found in sourceDir.
100 lines
3.3 KiB
PHP
100 lines
3.3 KiB
PHP
<?php /*
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 1997-2025 The PHP Group |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 3.01 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available through the world-wide-web at the following url: |
|
|
| https://www.php.net/license/3_01.txt. |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net, so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
| Authors: André L F S Bacci <ae php.net> |
|
|
+----------------------------------------------------------------------+
|
|
|
|
# Description
|
|
|
|
Generates (and caches) the list of files with TranslatedOk status. */
|
|
|
|
require_once __DIR__ . '/all.php';
|
|
|
|
class SyncFileList
|
|
{
|
|
static function load( ?string $lang = null , array $filterFiles = [] )
|
|
{
|
|
if ( $lang === null )
|
|
{
|
|
$file = __DIR__ . "/../../../temp/lang";
|
|
if ( ! file_exists( $file ) )
|
|
{
|
|
fwrite( STDERR , "Language not found, run 'doc-base/configure.php' or use '--lang='.\n" );
|
|
exit();
|
|
}
|
|
$lang = trim( file_get_contents( $file ) );
|
|
}
|
|
|
|
$sourceDir = 'en';
|
|
$targetDir = $lang;
|
|
|
|
if ( count( $filterFiles ) > 0 )
|
|
{
|
|
$ret = [];
|
|
|
|
foreach ( $filterFiles as $file )
|
|
{
|
|
if ( ! file_exists( "$sourceDir/$file" ) )
|
|
{
|
|
fwrite( STDERR , "File not found in source: $sourceDir/$file\n" );
|
|
continue;
|
|
}
|
|
if ( ! file_exists( "$targetDir/$file" ) )
|
|
continue;
|
|
|
|
$item = new SyncFileItem();
|
|
$item->sourceDir = $sourceDir;
|
|
$item->targetDir = $targetDir;
|
|
$item->file = $file;
|
|
$ret[] = $item;
|
|
}
|
|
|
|
if ( $ret === [] )
|
|
throw new Exception( "No matching files found." );
|
|
|
|
return $ret;
|
|
}
|
|
|
|
$cacheFilename = __DIR__ . "/../../../temp/qaxml.files.$lang";
|
|
|
|
if ( file_exists( $cacheFilename ) )
|
|
{
|
|
return unserialize( gzdecode( file_get_contents( $cacheFilename ) ) );
|
|
}
|
|
|
|
require_once __DIR__ . '/../lib/all.php';
|
|
|
|
$revFiles = new RevcheckFileList( $sourceDir );
|
|
$ret = [];
|
|
|
|
foreach( $revFiles->iterator() as $file )
|
|
{
|
|
if ( ! file_exists( "$targetDir/{$file->file}" ) )
|
|
continue;
|
|
|
|
$item = new SyncFileItem();
|
|
$item->sourceDir = $sourceDir;
|
|
$item->targetDir = $targetDir;
|
|
$item->file = $file->file;
|
|
$ret[] = $item;
|
|
}
|
|
|
|
if ( $ret === [] )
|
|
throw new Exception( "No files found. Called from wrong directory?" );
|
|
|
|
$contents = gzencode( serialize( $ret ) );
|
|
file_put_contents( $cacheFilename , $contents );
|
|
|
|
return $ret;
|
|
}
|
|
}
|