1# Copyright 2012 - 2013, Steve Rader 2# Copyright 2013 - 2014, Scott Kostyshak 3 4sub init_shell_env { 5 if ( $ENV{'TERM'} =~ /^xterm/ || $ENV{'TERM'} =~ /^screen/ ) { 6 &audit("ENV TERM=xterm-256color"); 7 $ENV{'TERM'} = 'xterm-256color'; 8 } 9 if ( $titlebar ) { 10 &audit("ENV set titlebar"); 11 open(TTY, ">>/dev/tty"); 12 print TTY "\e]0;$version\cg\n"; 13 close(TTY); 14 } 15} 16 17#------------------------------------------------------------------ 18 19sub init_task_env { 20 my @reports; 21 my $id_column = 0; 22 my ($header_color,$task_header_color,$vit_header_color); 23 &audit("EXEC $task show 2>&1"); 24 open(IN,"$task show 2>&1 |"); 25 while(<IN>) { 26 chop; 27 if ( $_ =~ /color\.header\s+(.*)/ ) { 28 $task_header_color = $1; 29 next; 30 } 31 if ( $_ =~ /color\.vit\.header\s+(.*)/ ) { 32 $vit_header_color = $1; 33 next; 34 } 35 if ( $_ =~ /color\.vit\.selection\s+(.*)/ ) { 36 my $str = $1; 37 $str =~ s/\x1b.*?m//g; 38 $str =~ s/^\s+//; 39 $str =~ s/\s+$//; 40 &extract_color($str,'vit selection'); 41 $selection_attrs = $parsed_attrs[1]; 42 init_pair($COLOR_SELECTION,$parsed_colors_fg[1],$parsed_colors_bg[1]); 43 next; 44 } 45 if ( $_ =~ /default.command\s+(.*)/ ) { 46 $default_command = $1; 47 $default_command =~ s/\x1b.*?m//g; 48 $default_command =~ s/^\s+//g; 49 $default_command =~ s/\s+$//g; 50 next; 51 } 52 if ( $_ =~ /report\.(.*?)\.columns/ ) { 53 push(@reports, $1); 54 next; 55 } 56 if ( $_ =~ /The color .* is not recognized/ ) { 57 endwin(); 58 print "$_\r\n"; 59 exit(1); 60 } 61 } 62 close(IN); 63 if ( defined $vit_header_color ) { 64 $header_color = $vit_header_color; 65 } elsif ( defined $task_header_color ) { 66 $header_color = $task_header_color; 67 } else { 68 init_pair($COLOR_HEADER,-1,-1); # not reached 69 } 70 if ( defined $header_color ) { 71 &extract_color($header_color,'header'); 72 $header_color =~ s/\x1b.*?m//g; 73 $header_color =~ s/^\s+//; 74 $header_color =~ s/\s+$//; 75 $header_attrs = $parsed_attrs[1]; 76 init_pair($COLOR_HEADER,$parsed_colors_fg[1],$parsed_colors_bg[1]); 77 } 78 if ( $cli_args ne '' ) { 79 chop $cli_args; 80 $default_command = $cli_args; 81 } 82 &audit("EXEC $task rc._forcecolor=on rc.verbose=on $default_command 2>&1"); 83 open(IN,"$task rc._forcecolor=on rc.verbose=on $default_command 2>&1 |"); 84 while(<IN>) { 85 chop; 86 if ( $_ =~ /ID/ || ($default_command eq 'summary' && $_ =~ /Project/) ) { 87 &parse_line(0,$_); 88 @report_header_colors_fg = @parsed_colors_fg; 89 @report_header_colors_bg = @parsed_colors_bg; 90 @report_header_attrs = @parsed_attrs; 91 if ( $parsed_colors_fg[0] eq '999999' ) { $parsed_colors_fg[0] = -1; } 92 if ( $parsed_colors_bg[0] eq '999999' ) { $parsed_colors_bg[0] = -1; } 93 init_pair($COLOR_REPORT_HEADER,$parsed_colors_fg[0],$parsed_colors_bg[0]); 94 $id_column = 1; 95 } 96 } 97 close(IN); 98 if ( ! $id_column && $default_command ne 'summary' ) { 99 endwin(); 100 print "Fatal error: default.command (\"$default_command\") must print an \"ID\" column\n"; 101 exit(1); 102 } 103 &audit("ENV default command is \"$default_command\""); 104 $current_command = $default_command; 105 push(@reports,$default_command); 106 push(@reports,'summary'); 107 @report_types = sort(@reports); 108 109} 110 111return 1; 112