2 cat > /dev
/null
<< EndOfLicence
4 Copyright 2007 Raphael James Cohn
6 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
7 in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software distributed under the License
13 is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14 or implied. See the License for the specific language governing permissions and limitations under
22 function printHelpAndExit
25 printf "%s: version %s\n" "$weAreKnownAs" "$version"
26 printf "Part of s3-bash. Latest version is at %s\n" 'http://code.google.com/p/s3-bash/'
27 printf "Usage %s: -h\n" "$weAreKnownAs"
28 printf "Usage %s: [-vS] [-H file] [-a file] [-b speed] -k key -s file -T file url\n" "$weAreKnownAs"
29 printf " Option\tType\tRequirement\tDescription\n"
30 printf " -h\t\tprecedent\tprint this help\n"
31 printf " -v\t\toptional\tverbose output\n"
32 printf " -k\tstring\tmandatory\tAWS Access Key Id\n"
33 printf " -s\tfile\tmandatory\tAWS Secret Access Key Id File\n"
34 printf " -T\tfile\tmandatory\tFile (or stdin with -) to PUT\n"
35 printf " -S\t\toptional\tUse https\n"
36 printf " -H\tfile\toptional\tFile to write response headers to\n"
37 printf " -a\tfile\toptional\tFile to read Amazon custom headers from (X-Amz-Date is not allowed)\n"
38 printf " -b\tspeed\toptional\tBandwidth limit in units/sec\n"
39 printf " -c\tMIME\toptional\tMIME Content type. Default is text/plain\n"
40 printf " \turl\tmandatory\trelative url including bucket name and leading slash, eg /bucket/path/to/object?acl. Assumed to be already encoded\n"
43 printf "Specify proxies using a ~/.curlrc file\n"
44 printf "Specify content to PUT using stdin using option -T -\n"
53 awsAccessSecretKeyIdFile
=""
56 dumpHeaderFile
="/dev/null"
57 amazonHeaderFile
="/dev/null"
59 contentType
="text/plain"
60 while getopts "hvk:s:SH:T:a:c:" optionName
; do
62 h
) printHelpAndExit
0;;
64 k
) awsAccessKeyId
="$OPTARG";;
65 s
) awsAccessSecretKeyIdFile
="$OPTARG"
66 if [ ! -e "$awsAccessSecretKeyIdFile" ]; then
67 printErrorHelpAndExit
"AWS Secret Key Id file does not exist" $userSpecifiedDataErrorExitCode
70 H
) dumpHeaderFile
="$OPTARG";;
71 T
) fileToUpload
="$OPTARG";;
72 a
) amazonHeaderFile
="$OPTARG";;
73 b
) bwlimit
="--limit-rate $OPTARG";;
74 c
) contentType
="$OPTARG";;
75 [?
]) printErrorHelpAndExit
"Option not recognised" $userSpecifiedDataErrorExitCode;;
78 if [ 1 -eq $OPTIND ]; then
79 printErrorHelpAndExit
"Internal Error: parseOptions or a parent method in the call stack was not called with $"@
"." $internalErrorExitCode
81 let "toShift = $OPTIND - 1"
84 printErrorHelpAndExit
"URL not specified" $userSpecifiedDataErrorExitCode
89 if [ -z "$awsAccessSecretKeyIdFile" ]; then
90 printErrorHelpAndExit
"AWS Secret Access Key file not specified" $userSpecifiedDataErrorExitCode
91 elif [ -z "$awsAccessKeyId" ]; then
92 printErrorHelpAndExit
"AWS Access Key Id not specified" $userSpecifiedDataErrorExitCode
93 elif [ -z "$fileToUpload" ]; then
94 printErrorHelpAndExit
"File to upload not specified" $userSpecifiedDataErrorExitCode
98 function prepareToRunCurl
101 if [ ! "-" = "$fileToUpload" ]; then
102 readonly contentMD5
="$(base64EncodedMD5 "$fileToUpload")"
103 readonly verbToPass
="-T \"$fileToUpload\" $bwlimit"
105 readonly contentMD5
=""
106 readonly verbToPass
="-T - $bwlimit"
110 readonly weAreKnownAs
="$(basename $0)"
111 readonly ourPath
="$(dirname $0)"
113 readonly commonFunctions
="$ourPath/s3-common-functions"
114 if [ -e "$commonFunctions" ]; then
115 source "$commonFunctions"
118 invalidEnvironmentExitCode
=4
119 printErrorHelpAndExit
"$weAreKnownAs: Could not locate file s3-common-functions" $invalidEnvironmentExitCode