[31m-- main is main file of main project written with Ada.[m
[31m-- Main is Copyright (C) 2025 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := "2025-06-04 18:32:28"[m
[31m-- Version := "0.0.0r"[m
[01;34mwith[m Gnat[31m.[mOs_Lib[31m;[m
[01;34muse[m Gnat[31m.[mOs_Lib[31m;[m
[01;34mwith[m Gnat[31m.[mCommand_Line[31m;[m
[01;34mwith[m Text_Io[31m;[m
[01;34muse[m Text_Io[31m;[m
[01;34mwith[m Ada[31m.[mStrings[31m.[mFixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m.[mFixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m;[m

[01;34mpackage[m [01;34mbody[m M[31m.[mShell [01;34mis[m
   [01;34mprocedure[m [01;30mAlias[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Alias_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m)[m [01;34mis[m
      
      Command [31m:[m Gnat[31m.[mCommand_Line[31m.[mCommand_Line[31m;[m
      
      Args_List [31m:[m Argument_List_Access[31m;[m                  
      [31m--Buffer : U_Array_Access := Result.Wlines;[m
      Name   [31m:[m String_Access[31m;[m
      
      Image  [31m:[m String_Access[31m;[m
      Alias  [31m:[m Attribut_Record[31m;[m
   [01;34mbegin[m      
      Gnat[31m.[mCommand_Line[31m.[m[01;30mSet_Command_Line[m[31m([mCommand[31m,[m Line[31m);[m
      Gnat[31m.[mCommand_Line[31m.[m[01;30mBuild[m[31m([mCommand[31m,[m Args_List[31m,[m False[31m);[m
      
      [01;34mif[m Args_List'Last [31m>[m [35m2[m [01;34mthen[m
	 [31m--Buffer := Add_Line(Buffer, "alias : error : ");[m
	 [31m--Buffer := Add_Line(Buffer, "                -- To many argument in command --");[m
	 [31m--Buffer := Add_Line(Buffer, "                -- Try 'help cd' for more info --");[m
	 [01;34mreturn[m[31m;[m
      [01;34melsif[m Args_List'Last [31m=[m [35m2[m [01;34mthen[m
	 
	 [01;34mif[m [01;30mArgs_List[m[31m([m[35m2[m[31m)[m [31m/=[m [01;34mnull[m [01;34mand[m [01;34mthen[m [01;30mArgs_List[m[31m([m[35m2[m[31m).[m[01;34mall[m [31m/=[m [31m""[m [01;34mthen[m
	    
	    [01;30mParse[m[31m([mLine[31m,[m Name[31m,[m Image[31m);[m
	    
	    Alias [31m:=[m [01;30mMake[m[31m([mName[31m.[m[01;34mall[m[31m,[m Image[31m.[m[01;34mall[m[31m);[m
	    
	    Alias_Set[31m.[m[01;30mlist[m[31m([mAlias_Set[31m.[mIndex [31m+[m [35m1[m[31m)[m [31m:=[m Alias[31m;[m
	    Alias_Set[31m.[mIndex [31m:=[m Alias_Set[31m.[mIndex [31m+[m [35m1[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34melse[m
	 
	 [01;34mfor[m Iter [01;34min[m [35m1[m[31m..[mAlias_Set[31m.[mIndex [01;34mloop[m
	    
	    [01;30mPut_Line[m[31m([m[01;30mNames[m[31m([mAlias_Set[31m.[m[01;30mlist[m[31m([mIter[31m))[m [31m&[m [31m'='[m [31m&[m [01;30mimages[m[31m([mAlias_Set[31m.[m[01;30mlist[m[31m([mIter[31m)));[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 
      [01;34mend[m [01;34mif[m[31m;[m
      
      
   [01;34mexception[m
      [01;34mwhen[m [01;34mothers[m [31m=>[m
	 
	 [01;34mnull[m[31m;[m
   [01;34mend[m Alias[31m;[m
   
   [01;34mprocedure[m [01;30mUnalias[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Alias_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m)[m [01;34mis[m
      
      Command [31m:[m Gnat[31m.[mCommand_Line[31m.[mCommand_Line[31m;[m
      Args_List [31m:[m Argument_List_Access[31m;[m                  
   [01;34mbegin[m      
      Gnat[31m.[mCommand_Line[31m.[m[01;30mSet_Command_Line[m[31m([mCommand[31m,[m Line[31m);[m
      Gnat[31m.[mCommand_Line[31m.[m[01;30mBuild[m[31m([mCommand[31m,[m Args_List[31m,[m False[31m);[m
      
      [01;34mif[m Args_List'Last [31m>[m [35m2[m [01;34mthen[m
	 
	 [01;34mreturn[m[31m;[m
      [01;34melsif[m Args_List'Last [31m=[m [35m2[m [01;34mthen[m	 
	 [01;34mif[m [01;30mArgs_List[m[31m([m[35m2[m[31m)[m [31m/=[m [01;34mnull[m [01;34mand[m [01;34mthen[m [01;30mArgs_List[m[31m([m[35m2[m[31m).[m[01;34mall[m [31m/=[m [31m""[m [01;34mthen[m
	    [01;34mfor[m Iter [01;34min[m [35m1[m[31m..[mAlias_Set[31m.[mIndex [01;34mloop[m
	       [01;34mdeclare[m
		  Alias [31m:[m [01;34mconstant[m Attribut_Record [31m:=[m Alias_Set[31m.[m[01;30mList[m[31m([mIter[31m);[m
	       [01;34mbegin[m
		  [01;34mif[m [01;30mNames[m[31m([mAlias[31m)[m [31m=[m [01;30mArgs_List[m[31m([m[35m2[m[31m).[m[01;34mall[m [01;34mthen[m
		     [01;34mfor[m Left [01;34min[m Iter[31m..[mAlias_Set[31m.[mIndex [01;34mloop[m
			Alias_Set[31m.[m[01;30mList[m[31m([mLeft[31m)[m [31m:=[m Alias_Set[31m.[m[01;30mList[m[31m([mLeft[31m+[m[35m1[m[31m);[m
			Alias_Set[31m.[mIndex [31m:=[m Alias_Set[31m.[mIndex [31m-[m [35m1[m[31m;[m
		     [01;34mend[m [01;34mloop[m[31m;[m
		     [01;34mexit[m[31m;[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m[31m;[m
	    [01;34mend[m [01;34mloop[m[31m;[m
	    
	 [01;34mend[m [01;34mif[m[31m;[m      
      [01;34mend[m [01;34mif[m[31m;[m

   [01;34mexception[m
      [01;34mwhen[m [01;34mothers[m [31m=>[m
	 [01;34mnull[m[31m;[m
	 
   [01;34mend[m Unalias[31m;[m
   
   [01;34mprocedure[m [01;30mSet[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;30mAlias[m[31m([mLine[31m,[m Var_Set[31m);[m      
   [01;34mend[m Set[31m;[m
   
   [01;34mprocedure[m [01;30mUnset[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;30mUnalias[m[31m([mLine[31m,[m Var_Set[31m);[m
   [01;34mend[m Unset[31m;[m
   
   [01;34mprocedure[m [01;30mPut[m[31m([mName [31m:[m [01;34min[m [32mString[m[31m;[m  Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mfor[m Iter [01;34min[m [35m1[m[31m..[mVar_Set[31m.[mIndex [01;34mloop[m
	 [01;34mif[m [01;30mNames[m[31m([mVar_Set[31m.[m[01;30mlist[m[31m([mIter[31m))[m [31m=[m Name [01;34mthen[m

	    Text_Io[31m.[m[01;30mPut[m[31m([m[01;30mimages[m[31m([mVar_Set[31m.[m[01;30mlist[m[31m([mIter[31m)));[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m	 
   [01;34mend[m Put[31m;[m
   
   [01;34mprocedure[m [01;30mPut_Line[m[31m([mName [31m:[m [01;34min[m [32mString[m[31m;[m  Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m)[m [01;34mis[m
   [01;34mbegin[m
      
      [01;30mPut[m[31m([mName[31m,[m Var_Set[31m);[m
      New_Line[31m;[m
   [01;34mend[m Put_Line[31m;[m
   
   [01;34mfunction[m [01;30mInternal_Cmd_Value[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m Int_Cmd_Enum [01;34mis[m
      Cmd [31m:[m Int_Cmd_Enum  [31m:=[m None[31m;[m
      First_Space [31m:[m [01;34mconstant[m Natural [31m:=[m [01;30mIndex[m[31m([mLine[31m,[m [31m" "[m[31m);[m
   [01;34mbegin[m
      
      [01;34mif[m First_Space [31m/=[m [35m0[m [01;34mthen[m
	 [01;34mbegin[m
	    
	    Cmd [31m:=[m Int_Cmd_Enum[31m'Value(Line(Line'[mFirst[31m..[mFirst_Space[31m-[m[35m1[m[31m));[m
	    
	 [01;34mexception[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       Cmd [31m:=[m None[31m;[m
	 [01;34mend[m[31m;[m
	 
      [01;34melsif[m [01;30mIndex_Non_Blank[m[31m([mLine[31m)[m [31m/=[m [35m0[m [01;34mthen[m
	 [01;34mbegin[m
	    Cmd [31m:=[m Int_Cmd_Enum'[01;30mValue[m[31m([m[01;30mLine[m[31m([m[01;30mIndex_Non_Blank[m[31m([mLine[31m)..[m[01;30mIndex_Non_Blank[m[31m([mLine[31m,[m Backward[31m)));[m
	 [01;34mexception[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       Cmd [31m:=[m none[31m;[m
	 [01;34mend[m[31m;[m
	 
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mreturn[m Cmd[31m;[m
   [01;34mend[m Internal_Cmd_Value[31m;[m
   
   
   
   [01;34mfunction[m [01;30mCommand_Name[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mString[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m Line'Length [31m=[m [35m0[m [01;34mthen[m
	 [01;34mreturn[m [31m""[m[31m;[m
      [01;34melsif[m [01;30mIndex_Non_Blank[m[31m([mLine[31m)[m [31m=[m [35m0[m [01;34mthen[m
	 [01;34mreturn[m [31m""[m[31m;[m
      [01;34melsif[m [31m([m[01;30mIndex[m[31m([mLine[31m,[m [31m" "[m[31m)[m [31m>[m [01;30mIndex_Non_Blank[m[31m([mLine[31m))[m [01;34mthen[m
	 [01;34mreturn[m [01;30mLine[m[31m([m[01;30mIndex_Non_Blank[m[31m([mLine[31m)..[m[01;30mIndex[m[31m([mLine[31m,[m [31m" "[m[31m)-[m[35m1[m[31m);[m
      [01;34melse[m
	 [01;34mreturn[m Line[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Command_Name[31m;[m

[01;34mend[m M[31m.[mShell [31m;[m 
