|  | #!/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 |