Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Tool to maintain p2 composite repositories
- USAGE="Usage:
- `basename "$0"` <repo-dir> [options] operation, operation ...
- Options:
- --name <repo name>
- the repository name
- --eclipse <eclipse install dir>
- the eclipse installation to use, can also be provided as \$ECLIPSE_DIR
- Operations:
- add <child>
- adds a child repository to the composite repository
- <child> can be a directory or a URL
- remove <child>
- removes a child repository to the composite repository
- <child> can be a directory or a URL
- Examples:
- Create a composite repository with subfolder build-01 as first child:
- $0 /path/to/repo --name \"My repository\" add build-01
- Add childs build-05 and build-06, remove build-01:
- $0 /path/to/repo add build-05 add build-06 remove build-01
- "
- fail() {
- echo Composite Repository Tool
- if [ $# -gt 0 ]; then
- echo -e "Error:\n $1"
- fi
- echo "$USAGE"
- exit 1
- }
- if [ "$#" -lt 1 ]; then
- fail "Missing parameter <repo-dir>"
- fi
- repoDir=`readlink -nm "$1"`
- shift
- if [ ! -d "$repoDir" ]; then
- fail "Directory does not exist: $repoDir"
- fi
- repoName=
- addRepos=
- removeRepos=
- while [ "$#" -gt 0 ]; do
- param="$1"
- shift
- test -z "$1" && fail "Missing parameter for '$param'"
- case "$param" in
- -n|--name)
- repoName="$1"
- shift
- ;;
- --eclipse)
- ECLIPSE_DIR="$1"
- shift
- ;;
- add)
- addRepos="$addRepos <repository location=\"$1\" />"
- shift
- ;;
- remove)
- removeRepos="$removeRepos <repository location=\"$1\" />"
- shift
- ;;
- *)
- fail "Illegal parameter: $param"
- ;;
- esac
- done
- if [ -z "$addRepos" -a -z "$removeRepos" ]; then
- fail "At least one add or remove operation must be given"
- fi
- # Check Eclipse dir
- if [ -z "$ECLIPSE_DIR" ]; then
- fail "Missing ECLIPSE_DIR, must point to an Eclipse installation"
- fi
- if [ ! -d "$ECLIPSE_DIR/plugins" ]; then
- fail "Invalid ECLIPSE_DIR: $ECLIPSE_DIR, must point to an Eclipse installation"
- fi
- # Find Equinox launcher
- launcher=$ECLIPSE_DIR/plugins/`ls -1 $ECLIPSE_DIR/plugins 2> /dev/null | grep launcher_ | tail -n 1`
- echo "Using Equinox launcher: $launcher"
- tmpfile=`mktemp`
- cat > "$tmpfile" <<EOM
- <?xml version="1.0" encoding="UTF-8"?>
- <project name="p2 composite repository">
- <target name="default">
- <p2.composite.repository>
- <repository compressed="true" location="${repoDir}" name="${repoName}" />
- <add>
- ${addRepos}
- </add>
- <remove>
- ${removeRepos}
- </remove>
- </p2.composite.repository>
- </target>
- </project>
- EOM
- java -cp $launcher org.eclipse.core.launcher.Main \
- -application org.eclipse.ant.core.antRunner \
- -buildfile "$tmpfile" \
- default
- rm "$tmpfile"
- cat > "$repoDir/p2.index" <<EOM
- version=1
- metadata.repository.factory.order=compositeContent.xml,\!
- artifact.repository.factory.order=compositeArtifacts.xml,\!
- EOM
Add Comment
Please, Sign In to add comment