]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 507493: checksetup.pl's output should use colors for missing and too old Perl...
authorlpsolit%gmail.com <>
Wed, 12 Aug 2009 13:05:26 +0000 (13:05 +0000)
committerlpsolit%gmail.com <>
Wed, 12 Aug 2009 13:05:26 +0000 (13:05 +0000)
Bugzilla/Install/Requirements.pm
Bugzilla/Install/Util.pm
checksetup.pl
template/en/default/setup/strings.txt.pl

index 2b496fc2c68039b3289ed02d77cfa80a31ebdca2..0d013f62f369935859e805f14477e0ef933b14fd 100644 (file)
@@ -29,6 +29,7 @@ use Bugzilla::Constants;
 use Bugzilla::Install::Util qw(vers_cmp install_string);
 use List::Util qw(max);
 use Safe;
+use Term::ANSIColor;
 
 use base qw(Exporter);
 our @EXPORT = qw(
@@ -429,8 +430,8 @@ sub print_module_instructions {
             if (vers_cmp($perl_ver, '5.10') > -1) {
                 $url_to_theory58S = 'http://cpan.uwinnipeg.ca/PPMPackages/10xx/';
             }
-            print install_string('ppm_repo_add', 
-                                 { theory_url => $url_to_theory58S });
+            print colored(install_string('ppm_repo_add', 
+                                 { theory_url => $url_to_theory58S }), 'red');
             # ActivePerls older than revision 819 require an additional command.
             if (_get_activestate_build_id() < 819) {
                 print install_string('ppm_repo_up');
@@ -463,7 +464,7 @@ sub print_module_instructions {
     }
 
     if (my @missing = @{$check_results->{missing}}) {
-        print install_string('commands_required') . "\n";
+        print colored(install_string('commands_required'), 'red') . "\n";
         foreach my $package (@missing) {
             my $command = install_command($package);
             print "    $command\n";
@@ -473,6 +474,9 @@ sub print_module_instructions {
     if ($output && $check_results->{any_missing} && !ON_WINDOWS) {
         print install_string('install_all', { perl => $^X });
     }
+    if (!$check_results->{pass}) {
+        print colored(install_string('installation_failed'), 'red') . "\n\n";
+    }
 }
 
 sub _translate_feature {
@@ -562,8 +566,9 @@ sub have_vers {
         my $want_string  = $wanted ? "v$wanted" : install_string('any');
 
         $ok = "$ok:" if $ok;
-        printf "%s %19s %-9s $ok $vstr $black_string\n",
-            install_string('checking_for'), $package, "($want_string)";
+        my $str = sprintf "%s %19s %-9s $ok $vstr $black_string\n",
+                    install_string('checking_for'), $package, "($want_string)";
+        print $vok ? $str : colored($str, 'red');
     }
     
     return $vok ? 1 : 0;
index 35a855e8d7c0161374e13ea311842d7bfc257cb7..e53164d255193b87ec31edb130ba1a1445de17c9 100644 (file)
@@ -43,6 +43,7 @@ our @EXPORT_OK = qw(
     template_include_path
     vers_cmp
     get_console_locale
+    init_console
 );
 
 sub bin_loc {
@@ -332,6 +333,11 @@ sub get_console_locale {
     return $locale;
 }
 
+sub init_console {
+    eval { ON_WINDOWS && require Win32::Console::ANSI; };
+    $ENV{'ANSI_COLORS_DISABLED'} = 1 if ($@ || !-t *STDOUT);
+    $ENV{'HTTP_ACCEPT_LANGUAGE'} ||= get_console_locale();
+}
 
 # This is like request_cache, but it's used only by installation code
 # for setup.cgi and things like that.
@@ -395,6 +401,10 @@ running, what perl version we're using, and what OS we're running on.
 Returns the language to use based on the LC_CTYPE value returned by the OS.
 If LC_CTYPE is of the form fr-CH, then fr is appended to the list.
 
+=item C<init_console>
+
+Sets the C<ANSI_COLORS_DISABLED> and C<HTTP_ACCEPT_LANGUAGE> environment variables.
+
 =item C<indicate_progress>
 
 =over
index 0f410ed7de3e2ebf98c2e92006cad75d999ca30d..d3e3f7952cf21443c880f003fa3aa1df7c4290b2 100755 (executable)
@@ -53,7 +53,7 @@ BEGIN { chdir dirname($0); }
 use lib qw(. lib);
 use Bugzilla::Constants;
 use Bugzilla::Install::Requirements;
-use Bugzilla::Install::Util qw(install_string get_version_and_os get_console_locale);
+use Bugzilla::Install::Util qw(install_string get_version_and_os init_console);
 
 ######################################################################
 # Live Code
@@ -61,7 +61,7 @@ use Bugzilla::Install::Util qw(install_string get_version_and_os get_console_loc
 
 # When we're running at the command line, we need to pick the right
 # language before ever displaying any string.
-$ENV{'HTTP_ACCEPT_LANGUAGE'} ||= get_console_locale();
+init_console();
 
 my %switch;
 GetOptions(\%switch, 'help|h|?', 'check-modules', 'no-templates|t',
index 3b75b73b3ea34ba20e7b6d0343cf9026579b3db0..c46bceabb426eb0f2b43b0e806f6669f1b064d94 100644 (file)
@@ -79,6 +79,7 @@ then the value of the ##column## column that needs to be fixed:
 
 EOT
     install_module => 'Installing ##module## version ##version##...',
+    installation_failed => '*** Installation aborted. Read the messages above. ***',
     max_allowed_packet => <<EOT,
 WARNING: You need to set the max_allowed_packet parameter in your MySQL
 configuration to at least ##needed##. Currently it is set to ##current##.