Skip to content

Commit

Permalink
Merge pull request #300 from melku/clean_aliases_script
Browse files Browse the repository at this point in the history
Clean aliases script
  • Loading branch information
MartiUK committed Oct 23, 2014
2 parents d6edd15 + 247c65e commit 20c9ba2
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
1 change: 1 addition & 0 deletions bin/alias.bat
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ if not ["%_temp%"] == ["%_temp2%"] (

echo %* >> "%CMDER_ROOT%\config\aliases"
doskey /macrofile="%CMDER_ROOT%\config\aliases"
perl "%CMDER_ROOT%\scripts\clean_aliases.pl"
echo Alias created
endlocal
goto:eof
Expand Down
36 changes: 36 additions & 0 deletions scripts/clean_aliases.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Cmder adds aliases to its aliases file without caring for duplicates.
# This can result in the aliases file becoming bloated. This script cleans
#the aliases file.
use Env;

my %aliases;
my $alias_file = $CMDER_ROOT . "/config/aliases";

# First step
# Read the aliases file line by line, and put every entry in
# a dictionary. The newer aliases being the last, the new will
# always be kept over the old.
open (my $file_handle, '<', $alias_file) or die "cannot open '$alias_file' $!";
while(my $line = <$file_handle>)
{
if ($line =~ /([^=\s<>]+)=(.*)/)
{
$aliases{ $1 } = $2;
}
else
{
print "Invalid alias: $line"
}
}
close($file_handle);


# Second step
# Write back the aliases. Sort them to make the file look nice.
open(my $file_handle, '>', $alias_file) or die "cannot open '$alias_file' $!";
foreach my $key (sort keys %aliases)
{
print $file_handle "$key=$aliases{ $key }\n";
}
close($file_handle);

0 comments on commit 20c9ba2

Please # to comment.