| #!/bin/bash | 
 |  | 
 | if [ $# -eq 1 ]; then | 
 | 	RELEASE_NAME=$1 | 
 | else | 
 | 	RELEASE_NAME=$(basename $(dirname $(dirname $(dirname $(which $0))))) | 
 | fi | 
 |  | 
 | LOCAL=$(dirname $(which $0)) | 
 |  | 
 | echo $LOCAL | 
 | echo $RELEASE_NAME | 
 | cd $LOCAL | 
 |  | 
 | echo " | 
 | -module(clean_release).  | 
 | -export([clean_release/1]).  | 
 |  | 
 | clean_release([ReleaseName]) ->  | 
 |     RelFile = atom_to_list(ReleaseName) ++ \".rel\", | 
 |     case file:consult(RelFile) of | 
 | 	{ok, [{release, {RelName, RelVsn}, ErtsSpec, ReleaseSpecs}]} -> do_rest(RelFile, ReleaseSpecs); | 
 | 	{error, Reason} -> io:format(\"ERROR - Could not find file ~s~n\", [RelFile]), exit(Reason) | 
 |     end, | 
 |     os:cmd(\"cd ../;rm -rf \" ++ string:strip(os:cmd(\"basename `pwd`\"))). | 
 | 	      | 
 | do_rest(RelFile, ReleaseSpecs) -> | 
 |     io:format(\"Finding Orphans in ~p among current release specs ~p~n\", [RelFile, ReleaseSpecs]), | 
 |     {ok, FileNameList}    = file:list_dir(\"../\"), | 
 |     Dirs = [FileName || FileName <- FileNameList, filelib:is_dir(\"../\" ++ FileName)] -- | 
 | 	   [string:strip(os:cmd(\"basename `pwd`\"), right, $\n)], | 
 |     BigListOfReleaseSpecs = lists:foldl(fun(Dir, Acc) ->  | 
 | 						OtherRelFile = \"../\" ++ Dir ++ \"/\" ++ RelFile, | 
 | 						io:format(\"Checking external release file ~p~n\", [OtherRelFile]), | 
 | 						case file:consult(OtherRelFile) of | 
 | 						    {ok, [{release, {RelName, RelVsn}, ErtsSpec, ReleaseSpecs_}]} ->  | 
 | 							Acc ++ ReleaseSpecs_; | 
 | 						    _  ->  | 
 | 							Acc | 
 | 						end end, [], Dirs), | 
 |     Orphans = ReleaseSpecs -- BigListOfReleaseSpecs, | 
 |     io:format(\"Removing orphan release specs ~p from ../../lib ~n\", [Orphans]), | 
 |     lists:foreach(fun(Orphan) ->  | 
 | 			  os:cmd(\"rm -rf ../../lib/\" ++ atom_to_list(element(1, Orphan)) ++ \"-\" ++ element(2, Orphan))  | 
 | 		  end, Orphans). | 
 | " > clean_release.erl | 
 |  | 
 | erlc clean_release.erl | 
 |  | 
 | CMD="erl -s clean_release clean_release $RELEASE_NAME -s erlang halt -noshell" | 
 | $CMD |