summaryrefslogtreecommitdiffstats
path: root/samples/populate.sh
diff options
context:
space:
mode:
Diffstat (limited to 'samples/populate.sh')
-rw-r--r--samples/populate.sh168
1 files changed, 168 insertions, 0 deletions
diff --git a/samples/populate.sh b/samples/populate.sh
new file mode 100644
index 0000000..8a47359
--- /dev/null
+++ b/samples/populate.sh
@@ -0,0 +1,168 @@
+#!/bin/sh
+# libcmis
+# Version: MPL 1.1 / GPLv2+ / LGPLv2+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2012 SUSE <cbosdonnat@suse.com>
+#
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+# the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+# in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+# instead of those above.
+
+function usage ( )
+{
+ echo "$0 --url http://binding/url [-u|--username user -p|--password pass] [-r|--repository repo] path/to/local/folder /path/to/remote/folder"
+}
+
+
+# Utility function to call cmis-client
+function cmis_client ( )
+{
+ repo_opt=
+ if test "z$REPO" != "z"; then
+ repo_opt=" -r \"$REPO\""
+ fi
+ $CMIS_CLIENT --url "$BINDING_URL" -u "$USER" -p "$PASS"$repo_opt "$@"
+}
+
+
+BASE_FOLDER=
+SERVER_FOLDER=
+BINDING_URL=
+USER=
+PASS=
+REPO=
+
+# Parse the arguments into variables
+while test -n "$1"; do
+ case $1 in
+ --url)
+ shift
+ BINDING_URL="$1"
+ shift
+ ;;
+ --username|-u)
+ shift
+ USER="$1"
+ shift
+ ;;
+ --password|-p)
+ shift
+ PASS="$1"
+ shift
+ ;;
+ --repository|-r)
+ shift
+ REPO="$1"
+ shift
+ ;;
+ --help|-h)
+ usage
+ exit 1
+ ;;
+ *)
+ if test -z "$BASE_FOLDER"; then
+ BASE_FOLDER="$1"
+ shift
+ elif test -z "$SERVER_FOLDER"; then
+ SERVER_FOLDER="$1"
+ shift
+ fi
+ ;;
+ esac
+done
+
+# Check that we had the input we need
+if test ! -d "$BASE_FOLDER"; then
+ usage
+ echo ""
+ echo "Missing or invalid local folder path"
+ exit 1
+fi
+
+if test -z "$BINDING_URL"; then
+ usage
+ echo ""
+ echo "Missing CMIS binding URL"
+ exit 1
+fi
+
+# Look for cmis-client in PATH
+CMIS_CLIENT=`which cmis-client 2>/dev/null`
+if test -z $CMIS_CLIENT; then
+ echo "cmis-client executable isn't in the PATH"
+ exit 1
+fi
+
+# Make sure the SERVER_FOLDER is existing
+SERVER_FOLDER_ID=`cmis_client show-by-path "$SERVER_FOLDER" 2>&1 | grep '^Id:' | sed -e 's/^[^:]*: \(.*\)$/\1/'`
+if test -z $SERVER_FOLDER_ID; then
+ echo "Server folder '$SERVER_FOLDER' doesn't exist, please indicate an existing folder"
+ exit 1
+fi
+
+SERVER_FOLDER_BASE_TYPE=`cmis_client show-by-path "$SERVER_FOLDER" 2>&1 | grep '^Base type:' | sed -e 's/^[^:]*: \(.*\)$/\1/'`
+if test "$SERVER_FOLDER_BASE_TYPE" != "cmis:folder"; then
+ echo "'$SERVER_FOLDER' isn't a folder, please indicate an existing folder"
+ exit 1
+fi
+
+# Make sure that SERVER_FOLDER has no trailing slash
+SERVER_FOLDER=${SERVER_FOLDER%/}
+
+cd $BASE_FOLDER/..
+BASE_FOLDER_NAME=`basename "$BASE_FOLDER"`
+find $BASE_FOLDER_NAME -print0 | while read -d $'\0' FILE_PATH
+do
+ FILE_NAME=`basename "$FILE_PATH"`
+ DIRNAME=`dirname "$FILE_PATH"`
+ DIRNAME=${DIRNAME#.}
+ SERVER_PARENT=$SERVER_FOLDER/$DIRNAME
+ if test -z "$DIRNAME"; then
+ SERVER_PARENT=$SERVER_FOLDER
+ fi
+
+ PARENT_ID=`cmis_client show-by-path "$SERVER_PARENT" 2>&1 | grep '^Id:' | sed -e 's/^[^:]*: \(.*\)$/\1/'`
+
+ # We couldn't find the parent id, then we need to create the folder on the server
+ if test -z "$PARENT_ID"; then
+ PARENT_NAME=`basename "$SERVER_PARENT"`
+ PARENT_PARENT_PATH=`dirname "$SERVER_PARENT"`
+ PARENT_PARENT_ID=`cmis_client show-by-path "$PARENT_PARENT_PATH" 2>&1 | grep '^Id:' | sed -e 's/^[^:]*: \(.*\)$/\1/'`
+ PARENT_ID=`cmis_client create-folder $PARENT_PARENT_ID $PARENT_NAME 2>&1 | grep '^Id:' | sed -e 's/^[^:]*: \(.*\)$/\1/'`
+ fi
+
+ if test -d "$FILE_PATH"; then
+ cmis_client create-folder "$PARENT_ID" "$FILE_NAME" >/dev/null
+ else
+ FILE_MIME=`file --mime-type "$FILE_PATH" | cut -d ' ' -f 2`
+
+ cmis_client --input-file "$FILE_PATH" --input-type $FILE_MIME \
+ create-document "$PARENT_ID" "$FILE_NAME" >/dev/null
+ fi
+
+ if test "x$?" == "x0";
+ then
+ echo -ne "OK\t"
+ else
+ echo -ne "Failed\t"
+ fi
+ echo $SERVER_PARENT/$FILE_NAME
+done