111 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
<?php
 | 
						|
 | 
						|
// release script
 | 
						|
// PHP 5.0 only
 | 
						|
 | 
						|
if (php_sapi_name() != 'cli') {
 | 
						|
    echo 'Release script cannot be called from web-browser.';
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
if (!isset($argv[1])) {
 | 
						|
    echo
 | 
						|
'php release.php [version]
 | 
						|
    HTML Purifier release script
 | 
						|
';
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
$version = trim($argv[1]);
 | 
						|
 | 
						|
// Bump version numbers:
 | 
						|
 | 
						|
// ...in VERSION
 | 
						|
file_put_contents('VERSION', $version);
 | 
						|
 | 
						|
// ...in NEWS
 | 
						|
if ($is_dev = (strpos($version, 'dev') === false)) {
 | 
						|
  $date = date('Y-m-d');
 | 
						|
  $news_c = str_replace(
 | 
						|
      $l = "$version, unknown release date",
 | 
						|
      "$version, released $date",
 | 
						|
      file_get_contents('NEWS'),
 | 
						|
      $c
 | 
						|
  );
 | 
						|
  if (!$c) {
 | 
						|
      echo 'Could not update NEWS, missing ' . $l . PHP_EOL;
 | 
						|
      exit;
 | 
						|
  } elseif ($c > 1) {
 | 
						|
      echo 'More than one release declaration in NEWS replaced' . PHP_EOL;
 | 
						|
      exit;
 | 
						|
  }
 | 
						|
  file_put_contents('NEWS', $news_c);
 | 
						|
}
 | 
						|
 | 
						|
// ...in Doxyfile
 | 
						|
$doxyfile_c = preg_replace(
 | 
						|
    '/(?<=PROJECT_NUMBER {9}= )[^\s]+/m', // brittle
 | 
						|
    $version,
 | 
						|
    file_get_contents('Doxyfile'),
 | 
						|
    1, $c
 | 
						|
);
 | 
						|
if (!$c) {
 | 
						|
    echo 'Could not update Doxyfile, missing PROJECT_NUMBER.' . PHP_EOL;
 | 
						|
    exit;
 | 
						|
}
 | 
						|
file_put_contents('Doxyfile', $doxyfile_c);
 | 
						|
 | 
						|
// ...in HTMLPurifier.php
 | 
						|
$htmlpurifier_c = file_get_contents('library/HTMLPurifier.php');
 | 
						|
$htmlpurifier_c = preg_replace(
 | 
						|
    '/HTML Purifier .+? - /',
 | 
						|
    "HTML Purifier $version - ",
 | 
						|
    $htmlpurifier_c,
 | 
						|
    1, $c
 | 
						|
);
 | 
						|
if (!$c) {
 | 
						|
    echo 'Could not update HTMLPurifier.php, missing HTML Purifier [version] header.' . PHP_EOL;
 | 
						|
    exit;
 | 
						|
}
 | 
						|
$htmlpurifier_c = preg_replace(
 | 
						|
    '/public \$version = \'.+?\';/',
 | 
						|
    "public \$version = '$version';",
 | 
						|
    $htmlpurifier_c,
 | 
						|
    1, $c
 | 
						|
);
 | 
						|
if (!$c) {
 | 
						|
    echo 'Could not update HTMLPurifier.php, missing public $version.' . PHP_EOL;
 | 
						|
    exit;
 | 
						|
}
 | 
						|
$htmlpurifier_c = preg_replace(
 | 
						|
    '/const VERSION = \'.+?\';/',
 | 
						|
    "const VERSION = '$version';",
 | 
						|
    $htmlpurifier_c,
 | 
						|
    1, $c
 | 
						|
);
 | 
						|
if (!$c) {
 | 
						|
    echo 'Could not update HTMLPurifier.php, missing const $version.' . PHP_EOL;
 | 
						|
    exit;
 | 
						|
}
 | 
						|
file_put_contents('library/HTMLPurifier.php', $htmlpurifier_c);
 | 
						|
 | 
						|
$config_c = file_get_contents('library/HTMLPurifier/Config.php');
 | 
						|
$config_c = preg_replace(
 | 
						|
    '/public \$version = \'.+?\';/',
 | 
						|
    "public \$version = '$version';",
 | 
						|
    $config_c,
 | 
						|
    1, $c
 | 
						|
);
 | 
						|
if (!$c) {
 | 
						|
    echo 'Could not update Config.php, missing public $version.' . PHP_EOL;
 | 
						|
    exit;
 | 
						|
}
 | 
						|
file_put_contents('library/HTMLPurifier/Config.php', $config_c);
 | 
						|
 | 
						|
passthru('php maintenance/flush.php');
 | 
						|
 | 
						|
if ($is_dev) echo "Review changes, write something in WHATSNEW and FOCUS, and then commit with log 'Release $version.'" . PHP_EOL;
 | 
						|
else echo "Numbers updated to dev, no other modifications necessary!";
 | 
						|
 | 
						|
// vim: et sw=4 sts=4
 |