Add option to enable or disable showing verbose output
authorAntonio Ospite <ao2@ao2.it>
Mon, 8 Jun 2020 21:32:00 +0000 (23:32 +0200)
committerAntonio Ospite <ao2@ao2.it>
Mon, 8 Jun 2020 21:42:37 +0000 (23:42 +0200)
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
tweeper.1.asciidoc
tweeper.php

index 7e277cf..e98623b 100644 (file)
@@ -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).
    *   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->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);
     }
 
       $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);
     }
     libxml_clear_errors();
     libxml_use_internal_errors($xml_errors_value);
index 37e885a..323d7f3 100644 (file)
@@ -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).
 
     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
 
 *-h, --help*::
     show the help message
 
index 2d5017e..49ffb92 100644 (file)
@@ -38,10 +38,10 @@ function is_cli() {
  */
 function usage($argv) {
   if (is_cli()) {
  */
 function usage($argv) {
   if (is_cli()) {
-    $usage = "{$argv[0]} [-e|-m <0|1>|-u <0|1>|-h|--help] <src_url>\n";
+    $usage = "{$argv[0]} [-e|-m <0|1>|-u <0|1>|-v <0|1>|-h|--help] <src_url>\n";
   }
   else {
   }
   else {
-    $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=<src_url>&generate_enclosure=<0|1>&show_usernames=<0|1>&show_multimedia=<0|1>");
+    $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=<src_url>&generate_enclosure=<0|1>&show_usernames=<0|1>&show_multimedia=<0|1>&verbose_output=<0|1>");
   }
 
   return "usage: $usage";
   }
 
   return "usage: $usage";
@@ -55,13 +55,14 @@ function parse_options_cli($argv, $argc) {
     'generate_enclosure' => FALSE,
     'show_usernames' => TRUE,
     'show_multimedia' => TRUE,
     'generate_enclosure' => FALSE,
     'show_usernames' => TRUE,
     'show_multimedia' => TRUE,
+    'verbose_output' => TRUE,
   );
 
   if ($argc < 2) {
     return $options;
   }
 
   );
 
   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':
   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;
 
         $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);
       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,
     'generate_enclosure' => FALSE,
     'show_usernames' => TRUE,
     'show_multimedia' => TRUE,
+    'verbose_output' => TRUE,
   );
 
   if (isset($_GET['src_url'])) {
   );
 
   if (isset($_GET['src_url'])) {
@@ -132,6 +144,10 @@ function parse_options_query_string() {
     $options['show_usernames'] = $_GET['show_usernames'] != 0;
   }
 
     $options['show_usernames'] = $_GET['show_usernames'] != 0;
   }
 
+  if (isset($_GET['verbose_output'])) {
+    $options['verbose_output'] = $_GET['verbose_output'] != 0;
+  }
+
   return $options;
 }
 
   return $options;
 }
 
@@ -149,7 +165,7 @@ if (!isset($options['src_url'])) {
   exit(1);
 }
 
   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);
 $output = $tweeper->tweep($options['src_url']);
 if (is_null($output)) {
   exit(1);