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 |