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