aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Lisina <sekoohaka.sarisan@gmail.com>2026-03-02 20:55:12 +0300
committerMaria Lisina <sekoohaka.sarisan@gmail.com>2026-03-02 20:55:12 +0300
commit637f7ce651a45a217f31c9dbcc5878963a6f9d38 (patch)
tree3fe2ae422acd0cc3490b42f1a08327f88d63ac15
parentc438df5cfa64dcabbb3d173c30ded316b300a7b3 (diff)
*/*: Switch to single lock per single user directory
Signed-off-by: Maria Lisina <sekoohaka.sarisan@gmail.com>
-rwxr-xr-xbot.zsh7
-rw-r--r--operators/callback_short.zsh8
-rw-r--r--operators/callback_stop.zsh13
-rw-r--r--operators/command_export.zsh128
-rw-r--r--operators/command_shorts.zsh6
-rw-r--r--operators/command_source.zsh4
-rw-r--r--operators/command_stop.zsh12
-rw-r--r--operators/inline_none.zsh4
-rw-r--r--operators/inline_shorts.zsh6
-rw-r--r--units/export.zsh116
-rw-r--r--units/ib_lock.zsh4
-rw-r--r--units/ib_token.zsh4
12 files changed, 142 insertions, 170 deletions
diff --git a/bot.zsh b/bot.zsh
index 4346564..bbc8095 100755
--- a/bot.zsh
+++ b/bot.zsh
@@ -45,13 +45,6 @@ data_table=(
shorts "Shortcuts"
)
-user_locks=(
- data
- auth
- source
- shorts
-)
-
zmodules=(
zsh/datetime
zsh/files
diff --git a/operators/callback_short.zsh b/operators/callback_short.zsh
index 120668f..41d8ea2 100644
--- a/operators/callback_short.zsh
+++ b/operators/callback_short.zsh
@@ -2,7 +2,7 @@
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0
-until mkdir "${user_config}_shorts.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
@@ -14,7 +14,7 @@ then
else
notification_text="You must specify query"
- rmdir "${user_config}_shorts.lock"
+ rmdir "${user_config}.lock"
return
fi
@@ -27,7 +27,7 @@ then
log_text="callback_short (${update_id}): ${notification_text}"
source "${units}/log.zsh"
- rmdir "${user_config}_shorts.lock"
+ rmdir "${user_config}.lock"
return
fi
@@ -54,4 +54,4 @@ then
rmdir "${shorts_config}"
fi
-rmdir "${user_config}_shorts.lock"
+rmdir "${user_config}.lock"
diff --git a/operators/callback_stop.zsh b/operators/callback_stop.zsh
index d2eab2c..d0dc441 100644
--- a/operators/callback_stop.zsh
+++ b/operators/callback_stop.zsh
@@ -29,12 +29,9 @@ then
return
fi
-for lock in ${user_locks[@]}
+until mkdir "${user_config}.lock"
do
- until mkdir "${user_config}_${lock}.lock"
- do
- sleep 1
- done
+ sleep 1
done
if [[ -n "${data_name}" ]]
@@ -62,9 +59,5 @@ fi
source "${units}/stop.zsh"
-for lock in ${user_locks[@]}
-do
- rmdir "${user_config}_${lock}.lock"
-done
-
+rmdir "${user_config}.lock"
rmdir "${user_config}_stop.lock"
diff --git a/operators/command_export.zsh b/operators/command_export.zsh
index 370aea0..2f019d1 100644
--- a/operators/command_export.zsh
+++ b/operators/command_export.zsh
@@ -8,22 +8,130 @@ then
return
fi
-for lock in ${user_locks[@]}
+until mkdir "${user_config}.lock"
do
- until mkdir "${user_config}_${lock}.lock"
- do
- sleep 1
- done
+ sleep 1
done
-source "${units}/export.zsh"
+if ! [[ -d "${user_config}" ]]
+then
+ output_text="No user data found"
-for lock in ${user_locks[@]}
+ rmdir "${user_config}.lock"
+ return
+fi
+
+until mkdir "${cache}/${user_id}.lock"
do
- rmdir "${user_config}_${lock}.lock"
+ sleep 1
done
-if [[ -z "${output_text}" ]]
+rm -f "${cache}/${user_id}.tar"
+
+if ! tar c -hf "${cache}/${user_id}.tar" -C "${users}" "${user_id}"
+then
+ output_text="Something went wrong, try again later"
+
+ rmdir "${cache}/${user_id}.lock"
+ return
+fi
+
+if ! output_data="$(
+ curl --connect-timeout ${connrefused_timeout} \
+ --data-urlencode "chat_id=${chat_id}" \
+ --data-urlencode "action=upload_document" \
+ --get \
+ --max-time ${internal_timeout} \
+ --proxy "${internal_proxy}" \
+ --retry 1 \
+ --retry-connrefused \
+ --retry-max-time $((internal_timeout - connrefused_timeout)) \
+ --silent \
+ --user-agent "${useragent}" \
+ "${api_address}/bot${api_token}/sendChatAction"
+)"
+then
+ log_text="sendChatAction (${update_id}): Failed to access Telegram Bot API"
+ source "${units}/log.zsh"
+fi
+
+if [[ -z "${log_text}" ]] && ! jq -e '.' <<< "${output_data}" > /dev/null
+then
+ log_text="sendChatAction (${update_id}): An unknown error occurred"
+ source "${units}/log.zsh"
+fi
+
+if [[ -z "${log_text}" && "$(jq -r '.ok' <<< "${output_data}")" != "true" ]]
+then
+ error_description="$(jq -r '.description' <<< "${output_data}")"
+
+ if [[ "${error_description}" != "null" ]]
+ then
+ log_text="sendChatAction (${update_id}): ${error_description}"
+ else
+ log_text="sendChatAction (${update_id}): An unknown error occurred"
+ fi
+
+ source "${units}/log.zsh"
+fi
+
+if ! output_data="$(
+ curl --connect-timeout ${connrefused_timeout} \
+ --form "chat_id=${chat_id}" \
+ --form "document=@${cache}/${user_id}.tar" \
+ --form "reply_parameters=${reply_parameters}" \
+ --get \
+ --max-time ${internal_timeout} \
+ --proxy "${internal_proxy}" \
+ --retry 1 \
+ --retry-connrefused \
+ --retry-max-time $((internal_timeout - connrefused_timeout)) \
+ --silent \
+ --user-agent "${useragent}" \
+ "${api_address}/bot${api_token}/sendDocument"
+)"
then
- exit
+ output_text="Failed to send user data"
+
+ log_text="sendDocument (${update_id}): Failed to access Telegram Bot API"
+ source "${units}/log.zsh"
+
+ rmdir "${cache}/${user_id}.lock"
+ rmdir "${user_config}.lock"
+ return
fi
+
+if ! jq -e '.' <<< "${output_data}" > /dev/null
+then
+ output_text="An unknown error occurred"
+
+ log_text="sendDocument (${update_id}): An unknown error occurred"
+ source "${units}/log.zsh"
+
+ rmdir "${cache}/${user_id}.lock"
+ rmdir "${user_config}.lock"
+ return
+fi
+
+if [[ "$(jq -r '.ok' <<< "${output_data}")" != "true" ]]
+then
+ output_text="Failed to send user data"
+ error_description="$(jq -r '.description' <<< "${output_data}")"
+
+ if [[ "${error_description}" != "null" ]]
+ then
+ log_text="sendDocument (${update_id}): ${error_description}"
+ else
+ log_text="sendDocument (${update_id}): An unknown error occurred"
+ fi
+
+ source "${units}/log.zsh"
+
+ rmdir "${cache}/${user_id}.lock"
+ rmdir "${user_config}.lock"
+ return
+fi
+
+rmdir "${cache}/${user_id}.lock"
+rmdir "${user_config}.lock"
+exit
diff --git a/operators/command_shorts.zsh b/operators/command_shorts.zsh
index f52b531..bdc3b26 100644
--- a/operators/command_shorts.zsh
+++ b/operators/command_shorts.zsh
@@ -2,7 +2,7 @@
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0
-until mkdir "${user_config}_shorts.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
@@ -18,7 +18,7 @@ if [[ ${#shorts} -eq 0 ]]
then
output_text="You have no saved shortcuts yet"
- rmdir "${user_config}_shorts.lock"
+ rmdir "${user_config}.lock"
return
fi
@@ -50,4 +50,4 @@ then
)"
fi
-rmdir "${user_config}_shorts.lock"
+rmdir "${user_config}.lock"
diff --git a/operators/command_source.zsh b/operators/command_source.zsh
index 8c4d7b1..f7b0cdc 100644
--- a/operators/command_source.zsh
+++ b/operators/command_source.zsh
@@ -7,7 +7,7 @@ then
exit
fi
-until mkdir "${user_config}_source.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
@@ -21,7 +21,7 @@ then
rmdir "${user_config}"
fi
-rmdir "${user_config}_source.lock"
+rmdir "${user_config}.lock"
if [[ -n "${output_text}" ]]
then
diff --git a/operators/command_stop.zsh b/operators/command_stop.zsh
index 1ddf10c..25405aa 100644
--- a/operators/command_stop.zsh
+++ b/operators/command_stop.zsh
@@ -8,17 +8,11 @@ then
return
fi
-for lock in ${user_locks[@]}
+until mkdir "${user_config}.lock"
do
- until mkdir "${user_config}_${lock}.lock"
- do
- sleep 1
- done
+ sleep 1
done
source "${units}/stop.zsh"
-for lock in ${user_locks[@]}
-do
- rmdir "${user_config}_${lock}.lock"
-done
+rmdir "${user_config}.lock"
diff --git a/operators/inline_none.zsh b/operators/inline_none.zsh
index c6b0a2e..f6ac372 100644
--- a/operators/inline_none.zsh
+++ b/operators/inline_none.zsh
@@ -2,7 +2,7 @@
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0
-until mkdir "${user_config}_shorts.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
@@ -21,4 +21,4 @@ else
command="help"
fi
-rmdir "${user_config}_shorts.lock"
+rmdir "${user_config}.lock"
diff --git a/operators/inline_shorts.zsh b/operators/inline_shorts.zsh
index ea40e95..7a287c2 100644
--- a/operators/inline_shorts.zsh
+++ b/operators/inline_shorts.zsh
@@ -2,7 +2,7 @@
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0
-until mkdir "${user_config}_shorts.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
@@ -40,7 +40,7 @@ then
)"
fi
- rmdir "${user_config}_shorts.lock"
+ rmdir "${user_config}.lock"
return
fi
@@ -109,4 +109,4 @@ then
next_offset=$((inline_page + 1))
fi
-rmdir "${user_config}_shorts.lock"
+rmdir "${user_config}.lock"
diff --git a/units/export.zsh b/units/export.zsh
deleted file mode 100644
index e92f612..0000000
--- a/units/export.zsh
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright (C) 2024-2026 Maria Lisina
-# Copyright (C) 2024-2026 Danil Lisin
-# SPDX-License-Identifier: Apache-2.0
-
-if ! [[ -d "${user_config}" ]]
-then
- output_text="No user data found"
- return
-fi
-
-until mkdir "${cache}/${user_id}.lock"
-do
- sleep 1
-done
-
-rm -f "${cache}/${user_id}.tar"
-
-if ! tar c -hf "${cache}/${user_id}.tar" -C "${users}" "${user_id}"
-then
- output_text="Something went wrong, try again later"
-
- rmdir "${cache}/${user_id}.lock"
- return
-fi
-
-if ! output_data="$(
- curl --connect-timeout ${connrefused_timeout} \
- --data-urlencode "chat_id=${chat_id}" \
- --data-urlencode "action=upload_document" \
- --get \
- --max-time ${internal_timeout} \
- --proxy "${internal_proxy}" \
- --retry 1 \
- --retry-connrefused \
- --retry-max-time $((internal_timeout - connrefused_timeout)) \
- --silent \
- --user-agent "${useragent}" \
- "${api_address}/bot${api_token}/sendChatAction"
-)"
-then
- log_text="sendChatAction (${update_id}): Failed to access Telegram Bot API"
- source "${units}/log.zsh"
-fi
-
-if [[ -z "${log_text}" ]] && ! jq -e '.' <<< "${output_data}" > /dev/null
-then
- log_text="sendChatAction (${update_id}): An unknown error occurred"
- source "${units}/log.zsh"
-fi
-
-if [[ -z "${log_text}" && "$(jq -r '.ok' <<< "${output_data}")" != "true" ]]
-then
- error_description="$(jq -r '.description' <<< "${output_data}")"
-
- if [[ "${error_description}" != "null" ]]
- then
- log_text="sendChatAction (${update_id}): ${error_description}"
- else
- log_text="sendChatAction (${update_id}): An unknown error occurred"
- fi
-
- source "${units}/log.zsh"
-fi
-
-if ! output_data="$(
- curl --connect-timeout ${connrefused_timeout} \
- --form "chat_id=${chat_id}" \
- --form "document=@${cache}/${user_id}.tar" \
- --form "reply_parameters=${reply_parameters}" \
- --get \
- --max-time ${internal_timeout} \
- --proxy "${internal_proxy}" \
- --retry 1 \
- --retry-connrefused \
- --retry-max-time $((internal_timeout - connrefused_timeout)) \
- --silent \
- --user-agent "${useragent}" \
- "${api_address}/bot${api_token}/sendDocument"
-)"
-then
- output_text="Failed to send user data"
-
- log_text="sendDocument (${update_id}): Failed to access Telegram Bot API"
- source "${units}/log.zsh"
-
- rmdir "${cache}/${user_id}.lock"
- return
-fi
-
-if ! jq -e '.' <<< "${output_data}" > /dev/null
-then
- output_text="An unknown error occurred"
-
- log_text="sendDocument (${update_id}): An unknown error occurred"
- source "${units}/log.zsh"
-
- rmdir "${cache}/${user_id}.lock"
- return
-fi
-
-if [[ "$(jq -r '.ok' <<< "${output_data}")" != "true" ]]
-then
- output_text="Failed to send user data"
- error_description="$(jq -r '.description' <<< "${output_data}")"
-
- if [[ "${error_description}" != "null" ]]
- then
- log_text="sendDocument (${update_id}): ${error_description}"
- else
- log_text="sendDocument (${update_id}): An unknown error occurred"
- fi
-
- source "${units}/log.zsh"
-fi
-
-rmdir "${cache}/${user_id}.lock"
diff --git a/units/ib_lock.zsh b/units/ib_lock.zsh
index 16bb2d3..b2c8c49 100644
--- a/units/ib_lock.zsh
+++ b/units/ib_lock.zsh
@@ -2,11 +2,11 @@
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0
-until mkdir "${user_config}_auth.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
source "${units}/ib_auth.zsh"
-rmdir "${user_config}_auth.lock"
+rmdir "${user_config}.lock"
diff --git a/units/ib_token.zsh b/units/ib_token.zsh
index 617d91e..7ff05e1 100644
--- a/units/ib_token.zsh
+++ b/units/ib_token.zsh
@@ -2,7 +2,7 @@
# Copyright (C) 2024-2026 Danil Lisin
# SPDX-License-Identifier: Apache-2.0
-until mkdir "${user_config}_auth.lock"
+until mkdir "${user_config}.lock"
do
sleep 1
done
@@ -38,4 +38,4 @@ then
ib_headers="${ib_header} $(< "${token_file}")"
fi
-rmdir "${user_config}_auth.lock"
+rmdir "${user_config}.lock"