-
Notifications
You must be signed in to change notification settings - Fork 0
/
100k_new_shared_links.sh
executable file
·130 lines (98 loc) · 3.15 KB
/
100k_new_shared_links.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env bash
set -Eeuo pipefail
trap cleanup SIGINT SIGTERM ERR EXIT
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
usage() {
cat <<EOF
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] file-path
Create shared links from csv list of folders.
Positional arguments:
file-path The file path to your csv file.
Available options:
-h, --help Print this help and exit
-v, --verbose Print script debug info
EOF
exit
}
cleanup() {
trap - SIGINT SIGTERM ERR EXIT
# script cleanup here
}
setup_colors() {
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
else
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
fi
}
msg() {
echo >&2 -e "${1-}"
}
die() {
local msg=$1
local code=${2-1} # default exit status 1
msg "$msg"
exit "$code"
}
parse_params() {
# default values of variables set from params
force=0
param=''
while :; do
case "${1-}" in
-h | --help) usage ;;
-v | --verbose) set -x ;;
--no-color) NO_COLOR=1 ;;
# -f | --force) force=1 ;; # example flag
# -p | --param) # example named parameter
# param="${2-}"
# shift
# ;;
-?*) die "Unknown option: $1" ;;
*) break ;;
esac
shift
done
args=("$@")
# check required params and arguments
# [[ -z "${param-}" ]] && die "Missing required parameter: param"
[[ ${#args[@]} -eq 0 ]] && msg "Missing csv file path" && usage
return 0
}
#################### Helpers ####################
#################### Main script ####################
parse_params "$@"
setup_colors
csv_file="${args[0]}"
csv_file_out="${csv_file%.*}_new_shared_links.csv"
# Check if csv file exists
if [ ! -f "$csv_file" ]; then
msg "${RED}Error: ${csv_file} does not exist.${NOFORMAT}"
die "Please check the file path and try again."
fi
# Create shared links csv file header
echo parent_id,level,itemType,itemID,url,effective_access,effective_permission > "$csv_file_out"
while IFS=, read -r line; do
parent_id=$(echo "$line" | cut -d, -f1)
level=$(echo "$line" | cut -d, -f2)
type=$(echo "$line" | cut -d, -f3)
id=$(echo "$line" | cut -d, -f4)
name=$(echo "$line" | cut -d, -f5)
if [ "$level" == "1" ]; then
# output="no_shared_link,,"
output=$(box shared-links:create $id folder --access open --no-can-download --csv --fields type,id,shared_link.url,shared_link.effective_access,shared_link.effective_permission | grep -v "type,id,shared_link.url,shared_link.effective_access,shared_link.effective_permission") || echo ""
if [ -z "$output" ]; then
output=",,,,"
fi
url=$(echo "$output" | cut -d, -f2,3)
# url=$(echo "$output" )
echo $parent_id,$level,$output >> "$csv_file_out"
msg "${GREEN}Link for ${name}${NOFORMAT}: $url"
fi
done < "$csv_file"
# remove shared links
# box shared-links:delete --bulk-file-path tree_100k_shared_links.csv -q
# msg "${RED}Read parameters:${NOFORMAT}"
# msg "- force: ${force}"
# msg "- param: ${param}"
# msg "- base folder: ${args[*]-}"