From 1e7a09621f810d54f9badc8bcf3f01a6c6ae2347 Mon Sep 17 00:00:00 2001 From: Antonio Ospite Date: Mon, 8 Jun 2020 23:32:00 +0200 Subject: [PATCH] Add option to enable or disable showing verbose output Tweeper by default shows non-fatal errors and warnings from the php XML parser. These messages can be distracting for some users, so add a '-v' option to enable or disable the verbose output. Keep the current behavior of showing verbose output as the default one for backwards compatibility, the user can pass '-v 0' to silence it. --- src/Tweeper.php | 11 ++++++++--- tweeper.1.asciidoc | 4 ++++ tweeper.php | 24 ++++++++++++++++++++---- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/Tweeper.php b/src/Tweeper.php index 7e277cf..e98623b 100644 --- a/src/Tweeper.php +++ b/src/Tweeper.php @@ -53,11 +53,14 @@ class Tweeper { * Enables showing multimedia content (images, videos) directly in the * item description (enabled by default). Only some stylesheets supports * this functionality (twitter, instagram, dilbert). + * @param bool $verbose_output + * Enables showing non-fatal errors like XML parsing errors. */ - public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE, $show_multimedia = TRUE) { + public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE, $show_multimedia = TRUE, $verbose_output = TRUE) { $this->generate_enclosure = $generate_enclosure; $this->show_usernames = $show_usernames; $this->show_multimedia = $show_multimedia; + $this->verbose_output = $verbose_output; } /** @@ -339,8 +342,10 @@ class Tweeper { $xmlDoc->loadHTML($html); } - foreach (libxml_get_errors() as $xml_error) { - Tweeper::logXmlError($xml_error); + if ($this->verbose_output) { + foreach (libxml_get_errors() as $xml_error) { + Tweeper::logXmlError($xml_error); + } } libxml_clear_errors(); libxml_use_internal_errors($xml_errors_value); diff --git a/tweeper.1.asciidoc b/tweeper.1.asciidoc index 37e885a..323d7f3 100644 --- a/tweeper.1.asciidoc +++ b/tweeper.1.asciidoc @@ -53,6 +53,10 @@ OPTIONS enable or disable showing usernames in front of the item for hosts which supports it (Twitter.com/Instagram.com). Default is 1 (enable). +*-v <0|1>*:: + enable or disable showing verbose output like, for instance, non-fatal + errors and warnings from the XML parser. Default is 1 (enable). + *-h, --help*:: show the help message diff --git a/tweeper.php b/tweeper.php index 2d5017e..49ffb92 100644 --- a/tweeper.php +++ b/tweeper.php @@ -38,10 +38,10 @@ function is_cli() { */ function usage($argv) { if (is_cli()) { - $usage = "{$argv[0]} [-e|-m <0|1>|-u <0|1>|-h|--help] \n"; + $usage = "{$argv[0]} [-e|-m <0|1>|-u <0|1>|-v <0|1>|-h|--help] \n"; } else { - $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=&generate_enclosure=<0|1>&show_usernames=<0|1>&show_multimedia=<0|1>"); + $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=&generate_enclosure=<0|1>&show_usernames=<0|1>&show_multimedia=<0|1>&verbose_output=<0|1>"); } return "usage: $usage"; @@ -55,13 +55,14 @@ function parse_options_cli($argv, $argc) { 'generate_enclosure' => FALSE, 'show_usernames' => TRUE, 'show_multimedia' => TRUE, + 'verbose_output' => TRUE, ); if ($argc < 2) { return $options; } - $cli_options = getopt("em:u:h", array("help")); + $cli_options = getopt("em:u:v:h", array("help")); foreach ($cli_options as $opt => $val) { switch ($opt) { case 'e': @@ -88,6 +89,16 @@ function parse_options_cli($argv, $argc) { $options['show_usernames'] = $val; break; + case 'v': + $ret = filter_var($val, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); + if (NULL === $ret) { + fwrite(STDERR, "Invalid argument for the -v option.\n"); + fwrite(STDERR, usage($argv)); + exit(1); + } + $options['verbose_output'] = $val; + break; + case 'h': case 'help': echo usage($argv); @@ -114,6 +125,7 @@ function parse_options_query_string() { 'generate_enclosure' => FALSE, 'show_usernames' => TRUE, 'show_multimedia' => TRUE, + 'verbose_output' => TRUE, ); if (isset($_GET['src_url'])) { @@ -132,6 +144,10 @@ function parse_options_query_string() { $options['show_usernames'] = $_GET['show_usernames'] != 0; } + if (isset($_GET['verbose_output'])) { + $options['verbose_output'] = $_GET['verbose_output'] != 0; + } + return $options; } @@ -149,7 +165,7 @@ if (!isset($options['src_url'])) { exit(1); } -$tweeper = new Tweeper($options['generate_enclosure'], $options['show_usernames'], $options['show_multimedia']); +$tweeper = new Tweeper($options['generate_enclosure'], $options['show_usernames'], $options['show_multimedia'], $options['verbose_output']); $output = $tweeper->tweep($options['src_url']); if (is_null($output)) { exit(1); -- 2.1.4