Create migrate script
parent
e119d1d867
commit
3247a8d7c7
|
|
@ -0,0 +1,110 @@
|
|||
#! /bin/bash
|
||||
|
||||
function main() {
|
||||
set -e
|
||||
set -u
|
||||
local from_addr="$1"
|
||||
local to_addr="$2"
|
||||
log migrating $from_addr to $to_addr
|
||||
for list in $(get_lists "$from_addr"); do
|
||||
migrate_tasks "$from_addr" "$to_addr" "$list"
|
||||
done
|
||||
}
|
||||
|
||||
function log() {
|
||||
echo "> $@" >&2
|
||||
}
|
||||
|
||||
function CURL() {
|
||||
curl "$@" 2> /dev/null
|
||||
}
|
||||
|
||||
function get_lists() {
|
||||
local addr="$1"
|
||||
CURL "$addr/ajax.php?loadLists" \
|
||||
| jq -r .list[].id
|
||||
}
|
||||
|
||||
function migrate_tasks() {
|
||||
local from_addr="$1"
|
||||
local to_addr="$2"
|
||||
local from_list="$3"
|
||||
local to_list=$(lookup_list "$from_addr" "$from_list" "$to_addr")
|
||||
local has_tasks="$(list_tasks "$to_addr" "$to_list" | base64 --decode | jq .title)"
|
||||
for task in $(list_tasks "$from_addr" "$from_list"); do
|
||||
add_task "$to_addr" "$to_list" "$task" "$has_tasks"
|
||||
done
|
||||
}
|
||||
|
||||
function lookup_list() {
|
||||
local from_addr="$1"
|
||||
local from_list="$2"
|
||||
local to_addr="$3"
|
||||
local name=$(CURL "$from_addr/ajax.php?loadLists" \
|
||||
| jq -c .list[] \
|
||||
| grep "\"$from_list\"" \
|
||||
| jq -r .name)
|
||||
if ! CURL "$to_addr/ajax.php?loadLists" \
|
||||
| jq -c .list[] \
|
||||
| grep "\"$name\"" \
|
||||
| jq -r .id \
|
||||
| grep .; then
|
||||
CURL \
|
||||
-X POST \
|
||||
"$to_addr/ajax.php?addList" \
|
||||
--data-urlencode "name=$name" \
|
||||
| jq -r .list[0].id
|
||||
fi
|
||||
}
|
||||
|
||||
function list_tasks() {
|
||||
local addr="$1"
|
||||
local list="$2"
|
||||
CURL "$addr/ajax.php?loadTasks&list=$list&compl=1" \
|
||||
| jq -c .list[] | while read -r task; do
|
||||
printf "%s }\n" "${task%\}}" | base64 | tr -d ' ' | tr -d '\n'
|
||||
echo ""
|
||||
done
|
||||
}
|
||||
|
||||
function add_task() {
|
||||
local addr="$1"
|
||||
local list="$2"
|
||||
local task="$(echo -n "$3" | base64 --decode | jq "del(.id, .listId)")"
|
||||
local has_tasks="$4"
|
||||
local title="$(echo "$task" | jq -r .title)"
|
||||
local tags="$(echo "$task" | jq -r .tags)"
|
||||
if echo "$has_tasks" | grep "\"$title\"" > /dev/null; then
|
||||
return
|
||||
fi
|
||||
log migrating title=$title
|
||||
local id="$(CURL \
|
||||
-X POST \
|
||||
"$addr/ajax.php?newTask" \
|
||||
--data-urlencode "list=$list" \
|
||||
--data-urlencode "title=$title /$tags/" \
|
||||
2> /dev/null \
|
||||
| jq -r .list[0].id
|
||||
)"
|
||||
if echo "$task" | jq -r .compl | grep 1 > /dev/null; then
|
||||
CURL \
|
||||
-X POST \
|
||||
"$addr/ajax.php?completeTask=$id" \
|
||||
-d "id=$id" \
|
||||
-d "compl=1" \
|
||||
> /dev/null
|
||||
fi
|
||||
if echo "$task" | jq -r .noteText | grep . > /dev/null; then
|
||||
local text="$(printf "$task" | jq -r .noteText)"
|
||||
CURL \
|
||||
-X POST \
|
||||
"$addr/ajax.php?editNote=$id" \
|
||||
-d "id=$id" \
|
||||
--data-urlencode "note=$text" \
|
||||
> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$0" == "$BASH_SOURCE" ]; then
|
||||
time main "$@"
|
||||
fi
|
||||
Loading…
Reference in New Issue