|
@@ -26,47 +26,48 @@ sub readConfig {
|
|
|
my $gitConfigPath = $path . "/" . ".git/config";
|
|
|
my $catCmd = findBin("cat",$logger);
|
|
|
my @configLines = split("\n",shellex("$catCmd $gitConfigPath",$logger));
|
|
|
+ # Key is config header, value is hash ref containing config values
|
|
|
my %gitConfig;
|
|
|
my @valueLines;
|
|
|
my $lineCounter = 0;
|
|
|
foreach my $line ( @configLines ) {
|
|
|
$lineCounter++;
|
|
|
#if ( $line =~ m/\[(.*)\]/ ) {
|
|
|
- if ( $line =~ m/(\[.*\])/ ) {
|
|
|
+ if ( $line =~ m/\[(.*)\]/ ) {
|
|
|
#$valueLine =~ /\t(.*)\ =\ (.*)$/;
|
|
|
- $gitConfig{$1} = $lineCounter;
|
|
|
+ $gitConfig{$1} = "";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- my $wcBin = findBin("wc",$logger);
|
|
|
- # TODO: Clean shell call up
|
|
|
- my $lastLine = shellex("$wcBin -l $gitConfigPath | awk '{print \$1}'",$logger);
|
|
|
- chomp $lastLine;
|
|
|
- my @lineRange = values %gitConfig;
|
|
|
- push(@lineRange, $lastLine);
|
|
|
- my @sortedRange = sort { $a <=> $b } @lineRange;
|
|
|
- my $prevVal;
|
|
|
- foreach my $val ( @sortedRange ) {
|
|
|
- my @stash;
|
|
|
- print "Val is $val\n";
|
|
|
- if ( ! defined $prevVal ) {
|
|
|
- $prevVal = $val;
|
|
|
- next;
|
|
|
+ # Tag each line with it's heading
|
|
|
+ # Only way I could think of that worked to solve how this
|
|
|
+ # There are almost certainly better ways
|
|
|
+ # TODO
|
|
|
+ my @taggedLines;
|
|
|
+ my $tag = "NULLTAG";
|
|
|
+ foreach my $line ( @configLines ) {
|
|
|
+ if ( $line =~ m/\[(.*)\]/ ) {
|
|
|
+ $tag = $1;
|
|
|
} else {
|
|
|
- print "Current var is $val and prevVar $prevVal\n";
|
|
|
- my $lineDiff = ( $prevVal + 1 ) . "-" . ( $val - 1 );
|
|
|
- my $lineCounter = 0;
|
|
|
- foreach my $line ( @configLines ) {
|
|
|
- $lineCounter++;
|
|
|
- #if ( $lineCounter >= ( $prevVal + 1 ) && $lineCounter <= ( $val - 1 ) ) {
|
|
|
- if ( $lineCounter >= $prevVal && $lineCounter <= $val ) {
|
|
|
- print "$line\n";
|
|
|
- }
|
|
|
+ my $newLine = $tag . $line;
|
|
|
+ push(@taggedLines,$newLine);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ # Get all of the tagged lines into a hash structure.
|
|
|
+ foreach my $key ( keys %gitConfig ) {
|
|
|
+ my %stash;
|
|
|
+ foreach my $tl ( @taggedLines ) {
|
|
|
+ if ( $tl =~ m/^($key)/ ) {
|
|
|
+ $tl =~ s/^($key)//g;
|
|
|
+ $tl =~ m/^\t(.*)\ \=\ (.*)$/;
|
|
|
+ my $confKey = $1;
|
|
|
+ my $confVal = $2;
|
|
|
+ $stash{$confKey} = $confVal;
|
|
|
}
|
|
|
- print "lineDiff of vals is: $lineDiff \n";
|
|
|
- $prevVal = $val;
|
|
|
}
|
|
|
+ $gitConfig{$key} = \%stash;
|
|
|
}
|
|
|
|
|
|
return %gitConfig;
|