mirror of
				https://github.com/cmderdev/cmder.git
				synced 2025-11-01 01:42:17 +08:00 
			
		
		
		
	Rework alias command to handle duplicates
* Removed unnecessary perl script
This commit is contained in:
		| @@ -1,4 +1,7 @@ | |||||||
| @echo off | @echo off | ||||||
|  |  | ||||||
|  | set ALIASES="%CMDER_ROOT%\config\aliases" | ||||||
|  |  | ||||||
| if ["%1"] == ["/?"] goto:p_help | if ["%1"] == ["/?"] goto:p_help | ||||||
| if ["%1"] == ["/reload"] goto:p_reload | if ["%1"] == ["/reload"] goto:p_reload | ||||||
| if ["%2"] == [""] echo Insufficient parameters. & goto:p_help | if ["%2"] == [""] echo Insufficient parameters. & goto:p_help | ||||||
| @@ -14,15 +17,15 @@ if not ["%_temp%"] == ["%_temp2%"] ( | |||||||
| 	goto:eof | 	goto:eof | ||||||
| ) | ) | ||||||
|  |  | ||||||
| echo %* >> "%CMDER_ROOT%\config\aliases" | :: replace already defined alias | ||||||
| doskey /macrofile="%CMDER_ROOT%\config\aliases" | findstr /b /v /i "%_temp%=" %ALIASES% >> %ALIASES%.tmp | ||||||
| perl "%CMDER_ROOT%\scripts\clean_aliases.pl" | echo %* >> %ALIASES%.tmp && type %ALIASES%.tmp > %ALIASES% & @del /f /q %ALIASES%.tmp | ||||||
| echo Alias created | doskey /macrofile=%ALIASES% | ||||||
| endlocal | endlocal | ||||||
| goto:eof | goto:eof | ||||||
|  |  | ||||||
| :p_reload | :p_reload | ||||||
| doskey /macrofile="%CMDER_ROOT%\config\aliases" | doskey /macrofile=%ALIASES% | ||||||
| echo Aliases reloaded | echo Aliases reloaded | ||||||
| goto:eof | goto:eof | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,36 +0,0 @@ | |||||||
| # 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); |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user