vanhofen
6 years ago
4 changed files with 2 additions and 1823 deletions
@ -1,423 +0,0 @@ |
|||||
#!/usr/bin/env bash |
|
||||
# |
|
||||
# DropShell |
|
||||
# |
|
||||
# Copyright (C) 2013-2014 Andrea Fabrizi <andrea.fabrizi@gmail.com> |
|
||||
# |
|
||||
# This program is free software; you can redistribute it and/or modify |
|
||||
# it under the terms of the GNU General Public License as published by |
|
||||
# the Free Software Foundation; either version 2 of the License, or |
|
||||
# (at your option) any later version. |
|
||||
# |
|
||||
# This program is distributed in the hope that it will be useful, |
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
# GNU General Public License for more details. |
|
||||
# |
|
||||
# You should have received a copy of the GNU General Public License |
|
||||
# along with this program; if not, write to the Free Software |
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
||||
# |
|
||||
|
|
||||
#Looking for dropbox uploader |
|
||||
if [ -f "./dropbox_uploader.sh" ]; then |
|
||||
DU="./dropbox_uploader.sh" |
|
||||
else |
|
||||
DU=$(which dropbox_uploader.sh) |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo "Dropbox Uploader not found!" |
|
||||
exit 1 |
|
||||
fi |
|
||||
fi |
|
||||
|
|
||||
#For MacOSX, install coreutils (which includes greadlink) |
|
||||
# $brew install coreutils |
|
||||
if [ "${OSTYPE:0:6}" == "darwin" ]; then |
|
||||
READLINK="greadlink" |
|
||||
else |
|
||||
READLINK="readlink" |
|
||||
fi |
|
||||
|
|
||||
SHELL_HISTORY=~/.dropshell_history |
|
||||
DU_OPT="-q" |
|
||||
BIN_DEPS="id $READLINK ls basename ls pwd cut" |
|
||||
VERSION="0.2" |
|
||||
|
|
||||
umask 077 |
|
||||
|
|
||||
#Dependencies check |
|
||||
for i in $BIN_DEPS; do |
|
||||
which $i > /dev/null |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "Error: Required program could not be found: $i" |
|
||||
exit 1 |
|
||||
fi |
|
||||
done |
|
||||
|
|
||||
#Check DropBox Uploader |
|
||||
if [ ! -f "$DU" ]; then |
|
||||
echo "Dropbox Uploader not found: $DU" |
|
||||
echo "Please change the 'DU' variable according to the Dropbox Uploader location." |
|
||||
exit 1 |
|
||||
else |
|
||||
DU=$($READLINK -m "$DU") |
|
||||
fi |
|
||||
|
|
||||
#Returns the current user |
|
||||
function get_current_user |
|
||||
{ |
|
||||
id -nu |
|
||||
} |
|
||||
|
|
||||
function normalize_path |
|
||||
{ |
|
||||
$READLINK -m "$1" |
|
||||
} |
|
||||
|
|
||||
################ |
|
||||
#### START #### |
|
||||
################ |
|
||||
|
|
||||
echo -e "DropShell v$VERSION" |
|
||||
echo -e "The Interactive Dropbox SHELL" |
|
||||
echo -e "Andrea Fabrizi - andrea.fabrizi@gmail.com\n" |
|
||||
echo -e "Type help for the list of the available commands.\n" |
|
||||
|
|
||||
history -r "$SHELL_HISTORY" |
|
||||
username=$(get_current_user) |
|
||||
|
|
||||
#Initial Working Directory |
|
||||
CWD="/" |
|
||||
|
|
||||
function sh_ls |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
|
|
||||
#Listing current dir |
|
||||
if [ -z "$arg1" ]; then |
|
||||
$DU $DU_OPT list "$CWD" |
|
||||
|
|
||||
#Listing $arg1 |
|
||||
else |
|
||||
|
|
||||
#Relative or absolute path? |
|
||||
if [ ${arg1:0:1} == "/" ]; then |
|
||||
$DU $DU_OPT list "$(normalize_path "$arg1")" |
|
||||
else |
|
||||
$DU $DU_OPT list "$(normalize_path "$CWD/$arg1")" |
|
||||
fi |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "ls: cannot access '$arg1': No such file or directory" |
|
||||
fi |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_cd |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
|
|
||||
OLD_CWD=$CWD |
|
||||
|
|
||||
if [ -z "$arg1" ]; then |
|
||||
CWD="/" |
|
||||
elif [ ${arg1:0:1} == "/" ]; then |
|
||||
CWD=$arg1 |
|
||||
else |
|
||||
CWD=$(normalize_path "$OLD_CWD/$arg1/") |
|
||||
fi |
|
||||
|
|
||||
$DU $DU_OPT list "$CWD" > /dev/null |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "cd: $arg1: No such file or directory" |
|
||||
CWD=$OLD_CWD |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_get |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
local arg2=$2 |
|
||||
|
|
||||
if [ ! -z "$arg1" ]; then |
|
||||
|
|
||||
#Relative or absolute path? |
|
||||
if [ ${arg1:0:1} == "/" ]; then |
|
||||
$DU $DU_OPT download "$(normalize_path "$arg1")" "$arg2" |
|
||||
else |
|
||||
$DU $DU_OPT download "$(normalize_path "$CWD/$arg1")" "$arg2" |
|
||||
fi |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "get: Download error" |
|
||||
fi |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "get: missing operand" |
|
||||
echo -e "syntax: get <FILE/DIR> [LOCAL_FILE/DIR]" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_put |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
local arg2=$2 |
|
||||
|
|
||||
if [ ! -z "$arg1" ]; then |
|
||||
|
|
||||
#Relative or absolute path? |
|
||||
if [ "${arg2:0:1}" == "/" ]; then |
|
||||
$DU $DU_OPT upload "$arg1" "$(normalize_path "$arg2")" |
|
||||
else |
|
||||
$DU $DU_OPT upload "$arg1" "$(normalize_path "$CWD/$arg2")" |
|
||||
fi |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "put: Upload error" |
|
||||
fi |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "put: missing operand" |
|
||||
echo -e "syntax: put <FILE/DIR> <REMOTE_FILE/DIR>" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_rm |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
|
|
||||
if [ ! -z "$arg1" ]; then |
|
||||
|
|
||||
#Relative or absolute path? |
|
||||
if [ ${arg1:0:1} == "/" ]; then |
|
||||
$DU $DU_OPT remove "$(normalize_path "$arg1")" |
|
||||
else |
|
||||
$DU $DU_OPT remove "$(normalize_path "$CWD/$arg1")" |
|
||||
fi |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "rm: cannot remove '$arg1'" |
|
||||
fi |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "rm: missing operand" |
|
||||
echo -e "syntax: rm <FILE/DIR>" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_mkdir |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
|
|
||||
if [ ! -z "$arg1" ]; then |
|
||||
|
|
||||
#Relative or absolute path? |
|
||||
if [ ${arg1:0:1} == "/" ]; then |
|
||||
$DU $DU_OPT mkdir "$(normalize_path "$arg1")" |
|
||||
else |
|
||||
$DU $DU_OPT mkdir "$(normalize_path "$CWD/$arg1")" |
|
||||
fi |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "mkdir: cannot create directory '$arg1'" |
|
||||
fi |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "mkdir: missing operand" |
|
||||
echo -e "syntax: mkdir <DIR_NAME>" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_mv |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
local arg2=$2 |
|
||||
|
|
||||
if [ ! -z "$arg1" -a ! -z "$arg2" ]; then |
|
||||
|
|
||||
#SRC relative or absolute path? |
|
||||
if [ ${arg1:0:1} == "/" ]; then |
|
||||
SRC="$arg1" |
|
||||
else |
|
||||
SRC="$CWD/$arg1" |
|
||||
fi |
|
||||
|
|
||||
#DST relative or absolute path? |
|
||||
if [ ${arg2:0:1} == "/" ]; then |
|
||||
DST="$arg2" |
|
||||
else |
|
||||
DST="$CWD/$arg2" |
|
||||
fi |
|
||||
|
|
||||
$DU $DU_OPT move "$(normalize_path "$SRC")" "$(normalize_path "$DST")" |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "mv: cannot move '$arg1' to '$arg2'" |
|
||||
fi |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "mv: missing operand" |
|
||||
echo -e "syntax: mv <FILE/DIR> <DEST_FILE/DIR>" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_cp |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
local arg2=$2 |
|
||||
|
|
||||
if [ ! -z "$arg1" -a ! -z "$arg2" ]; then |
|
||||
|
|
||||
#SRC relative or absolute path? |
|
||||
if [ ${arg1:0:1} == "/" ]; then |
|
||||
SRC="$arg1" |
|
||||
else |
|
||||
SRC="$CWD/$arg1" |
|
||||
fi |
|
||||
|
|
||||
#DST relative or absolute path? |
|
||||
if [ ${arg2:0:1} == "/" ]; then |
|
||||
DST="$arg2" |
|
||||
else |
|
||||
DST="$CWD/$arg2" |
|
||||
fi |
|
||||
|
|
||||
$DU $DU_OPT copy "$(normalize_path "$SRC")" "$(normalize_path "$DST")" |
|
||||
|
|
||||
#Checking for errors |
|
||||
if [ $? -ne 0 ]; then |
|
||||
echo -e "cp: cannot copy '$arg1' to '$arg2'" |
|
||||
fi |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "cp: missing operand" |
|
||||
echo -e "syntax: cp <FILE/DIR> <DEST_FILE/DIR>" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
function sh_free |
|
||||
{ |
|
||||
$DU $DU_OPT info | grep "Free:" | cut -f 2 |
|
||||
} |
|
||||
|
|
||||
function sh_cat |
|
||||
{ |
|
||||
local arg1=$1 |
|
||||
|
|
||||
if [ ! -z "$arg1" ]; then |
|
||||
|
|
||||
tmp_cat="/tmp/sh_cat_$RANDOM" |
|
||||
sh_get "$arg1" "$tmp_cat" |
|
||||
cat "$tmp_cat" |
|
||||
rm -fr "$tmp_cat" |
|
||||
|
|
||||
#args error |
|
||||
else |
|
||||
echo -e "cat: missing operand" |
|
||||
echo -e "syntax: cat <FILE>" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
while (true); do |
|
||||
|
|
||||
#Reading command from shell |
|
||||
read -e -p "$username@Dropbox:$CWD$ " input |
|
||||
|
|
||||
#Tokenizing command |
|
||||
eval tokens=($input) |
|
||||
cmd=${tokens[0]} |
|
||||
arg1=${tokens[1]} |
|
||||
arg2=${tokens[2]} |
|
||||
|
|
||||
#Saving command in the history file |
|
||||
history -s "$input" |
|
||||
history -w "$SHELL_HISTORY" |
|
||||
|
|
||||
case $cmd in |
|
||||
|
|
||||
ls) |
|
||||
sh_ls "$arg1" |
|
||||
;; |
|
||||
|
|
||||
cd) |
|
||||
sh_cd "$arg1" |
|
||||
;; |
|
||||
|
|
||||
pwd) |
|
||||
echo $CWD |
|
||||
;; |
|
||||
|
|
||||
get) |
|
||||
sh_get "$arg1" "$arg2" |
|
||||
;; |
|
||||
|
|
||||
put) |
|
||||
sh_put "$arg1" "$arg2" |
|
||||
;; |
|
||||
|
|
||||
rm) |
|
||||
sh_rm "$arg1" |
|
||||
;; |
|
||||
|
|
||||
mkdir) |
|
||||
sh_mkdir "$arg1" |
|
||||
;; |
|
||||
|
|
||||
mv) |
|
||||
sh_mv "$arg1" "$arg2" |
|
||||
;; |
|
||||
|
|
||||
cp) |
|
||||
sh_cp "$arg1" "$arg2" |
|
||||
;; |
|
||||
|
|
||||
cat) |
|
||||
sh_cat "$arg1" |
|
||||
;; |
|
||||
|
|
||||
free) |
|
||||
sh_free |
|
||||
;; |
|
||||
|
|
||||
lls) |
|
||||
ls -l |
|
||||
;; |
|
||||
|
|
||||
lpwd) |
|
||||
pwd |
|
||||
;; |
|
||||
|
|
||||
lcd) |
|
||||
cd "$arg1" |
|
||||
;; |
|
||||
|
|
||||
help) |
|
||||
echo -e "Supported commands: ls, cd, pwd, get, put, cat, rm, mkdir, mv, cp, free, lls, lpwd, lcd, help, exit\n" |
|
||||
;; |
|
||||
|
|
||||
quit|exit) |
|
||||
exit 0 |
|
||||
;; |
|
||||
|
|
||||
*) |
|
||||
if [ ! -z "$cmd" ]; then |
|
||||
echo -ne "Unknown command: $cmd\n" |
|
||||
fi |
|
||||
;; |
|
||||
esac |
|
||||
done |
|
||||
|
|
File diff suppressed because it is too large
Loading…
Reference in new issue