| Christopher Piro | 094823a | 2007-07-18 00:26:12 +0000 | [diff] [blame] | 1 | #!/bin/bash | 
|  | 2 |  | 
|  | 3 | if [ $# -eq 1 ]; then | 
|  | 4 | RELEASE_NAME=$1 | 
|  | 5 | else | 
|  | 6 | RELEASE_NAME=$(basename $(dirname $(dirname $(dirname $(which $0))))) | 
|  | 7 | fi | 
|  | 8 |  | 
|  | 9 | LOCAL=$(dirname $(which $0)) | 
|  | 10 |  | 
|  | 11 | echo $LOCAL | 
|  | 12 | echo $RELEASE_NAME | 
|  | 13 | cd $LOCAL | 
|  | 14 |  | 
|  | 15 | echo " | 
|  | 16 | -module(clean_release). | 
|  | 17 | -export([clean_release/1]). | 
|  | 18 |  | 
|  | 19 | clean_release([ReleaseName]) -> | 
|  | 20 | RelFile = atom_to_list(ReleaseName) ++ \".rel\", | 
|  | 21 | case file:consult(RelFile) of | 
|  | 22 | {ok, [{release, {RelName, RelVsn}, ErtsSpec, ReleaseSpecs}]} -> do_rest(RelFile, ReleaseSpecs); | 
|  | 23 | {error, Reason} -> io:format(\"ERROR - Could not find file ~s~n\", [RelFile]), exit(Reason) | 
|  | 24 | end, | 
|  | 25 | os:cmd(\"cd ../;rm -rf \" ++ string:strip(os:cmd(\"basename `pwd`\"))). | 
|  | 26 |  | 
|  | 27 | do_rest(RelFile, ReleaseSpecs) -> | 
|  | 28 | io:format(\"Finding Orphans in ~p among current release specs ~p~n\", [RelFile, ReleaseSpecs]), | 
|  | 29 | {ok, FileNameList}    = file:list_dir(\"../\"), | 
|  | 30 | Dirs = [FileName || FileName <- FileNameList, filelib:is_dir(\"../\" ++ FileName)] -- | 
|  | 31 | [string:strip(os:cmd(\"basename `pwd`\"), right, $\n)], | 
|  | 32 | BigListOfReleaseSpecs = lists:foldl(fun(Dir, Acc) -> | 
|  | 33 | OtherRelFile = \"../\" ++ Dir ++ \"/\" ++ RelFile, | 
|  | 34 | io:format(\"Checking external release file ~p~n\", [OtherRelFile]), | 
|  | 35 | case file:consult(OtherRelFile) of | 
|  | 36 | {ok, [{release, {RelName, RelVsn}, ErtsSpec, ReleaseSpecs_}]} -> | 
|  | 37 | Acc ++ ReleaseSpecs_; | 
|  | 38 | _  -> | 
|  | 39 | Acc | 
|  | 40 | end end, [], Dirs), | 
|  | 41 | Orphans = ReleaseSpecs -- BigListOfReleaseSpecs, | 
|  | 42 | io:format(\"Removing orphan release specs ~p from ../../lib ~n\", [Orphans]), | 
|  | 43 | lists:foreach(fun(Orphan) -> | 
|  | 44 | os:cmd(\"rm -rf ../../lib/\" ++ atom_to_list(element(1, Orphan)) ++ \"-\" ++ element(2, Orphan)) | 
|  | 45 | end, Orphans). | 
|  | 46 | " > clean_release.erl | 
|  | 47 |  | 
|  | 48 | erlc clean_release.erl | 
|  | 49 |  | 
|  | 50 | CMD="erl -s clean_release clean_release $RELEASE_NAME -s erlang halt -noshell" | 
|  | 51 | $CMD |