diff options
Diffstat (limited to 'lib/htmlpurifier/maintenance/update-freshmeat.php')
-rw-r--r-- | lib/htmlpurifier/maintenance/update-freshmeat.php | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/lib/htmlpurifier/maintenance/update-freshmeat.php b/lib/htmlpurifier/maintenance/update-freshmeat.php deleted file mode 100644 index 5295c0430..000000000 --- a/lib/htmlpurifier/maintenance/update-freshmeat.php +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/php -<?php - -chdir(dirname(__FILE__)); -require_once 'common.php'; -assertCli(); - -/** - * @file - * Updates Freshmeat's HTML Purifier with the latest information via XML RPC. - */ - -class XmlRpc_Freshmeat -{ - - const URL = 'http://freshmeat.net/xmlrpc/'; - - public $chatty = false; - - public $encodeOptions = array( - 'encoding' => 'utf-8', - ); - - /** - * This array defines shortcut method signatures for dealing with simple - * XML RPC methods. More complex ones (publish_release) should use the named parameter - * syntax. - */ - public $signatures = array( - 'login' => array('username', 'password'), - 'fetch_branch_list' => array('project_name'), - 'fetch_release' => array('project_name', 'branch_name', 'version'), - 'withdraw_release' => array('project_name', 'branch_name', 'version'), - ); - - protected $sid = null; - - /** - * @param $username Username to login with - * @param $password Password to login with - */ - public function __construct($username = null, $password = null) { - if ($username && $password) { - $this->login($username, $password); - } - } - - /** - * Performs a raw XML RPC call to self::URL - */ - protected function call($method, $params) { - $request = xmlrpc_encode_request($method, $params, $this->encodeOptions); - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, self::URL); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_TIMEOUT, 1); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-type: text/xml', - 'Content-length: ' . strlen($request) - )); - curl_setopt($ch, CURLOPT_POSTFIELDS, $request); - $data = curl_exec($ch); - if ($errno = curl_errno($ch)) { - throw new Exception("Curl error [$errno]: " . curl_error($ch)); - } else { - curl_close($ch); - return xmlrpc_decode($data); - } - } - - /** - * Performs an XML RPC call to Freshmeat. - * @param $name Name of method to call, can be methodName or method_name - * @param $args Arguments of call, in form array('key1', 'val1', 'key2' ...) - */ - public function __call($name, $args) { - $method = $this->camelToUnderscore($name); - $params = array(); - if ($this->sid) $params['SID'] = $this->sid; - if (isset($this->signatures[$method])) { - for ($i = 0, $c = count($this->signatures[$method]); $i < $c; $i++) { - $params[$this->signatures[$method][$i]] = $args[$i]; - } - } else { - for ($i = 0, $c = count($args); $i + 1 < $c; $i += 2) { - $params[$args[$i]] = $args[$i + 1]; - } - } - $result = $this->call($method, $params); - switch ($method) { - case 'login': - $this->sid = $result['SID']; - break; - case 'logout': - $this->sid = null; - break; - } - if ($this->chatty) print_r($result); - return $result; - } - - /** - * Munge methodName to method_name - */ - private function camelToUnderscore($name) { - $method = ''; - for ($i = 0, $c = strlen($name); $i < $c; $i++) { - $v = $name[$i]; - if (ctype_lower($v)) $method .= $v; - else $method .= '_' . strtolower($v); - } - return $method; - } - - /** - * Automatically logout at end of scope - */ - public function __destruct() { - if ($this->sid) $this->logout(); - } - -} - -$rpc = new XmlRpc_Freshmeat($argv[1], $argv[2]); -$rpc->chatty = true; - -$project = 'htmlpurifier'; -$branch = 'Default'; -$version = file_get_contents('../VERSION'); - -$result = $rpc->fetchRelease($project, $branch, $version); -if (!isset($result['faultCode'])) { - echo "Freshmeat release already exists.\n"; - exit(0); -} - -$changes = strtr(file_get_contents('../WHATSNEW'), array("\r" => '', "\n" => ' ')); -$focus = (int) trim(file_get_contents('../FOCUS')); - -if (strlen($changes) > 600) { - echo "WHATSNEW entry is too long.\n"; - exit(1); -} - -$rpc->publishRelease( - 'project_name', $project, - 'branch_name', $branch, - 'version', $version, - 'changes', $changes, - 'release_focus', $focus, - 'url_tgz', "http://htmlpurifier.org/releases/htmlpurifier-$version.tar.gz", - 'url_zip', "http://htmlpurifier.org/releases/htmlpurifier-$version.zip", - 'url_changelog', "http://htmlpurifier.org/svnroot/htmlpurifier/tags/$version/NEWS" -); - -// vim: et sw=4 sts=4 |