Update script for Android added. A few more dictionary fixes added.
This commit is contained in:
104
update_android.sh
Executable file
104
update_android.sh
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Update RHVoice English pronunciation fixes on Android via adb
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
packageName="com.github.olga_yakovleva.rhvoice.android"
|
||||
sourceDir="English"
|
||||
remoteBaseDir="/sdcard/Android/data/${packageName}/files"
|
||||
remoteDictDir="${remoteBaseDir}/dicts/English"
|
||||
adbArgs=()
|
||||
|
||||
check_command() {
|
||||
local commandName="$1"
|
||||
|
||||
if ! command -v "$commandName" >/dev/null 2>&1; then
|
||||
echo "Error: Required command '$commandName' is not installed" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_adb() {
|
||||
adb "${adbArgs[@]}" "$@"
|
||||
}
|
||||
|
||||
select_device() {
|
||||
local deviceCount
|
||||
|
||||
if [[ -n "${ADB_SERIAL:-}" ]]; then
|
||||
adbArgs=(-s "$ADB_SERIAL")
|
||||
return
|
||||
fi
|
||||
|
||||
deviceCount="$(adb devices | awk 'NR > 1 && $2 == "device" { count++ } END { print count + 0 }')"
|
||||
|
||||
if [[ "$deviceCount" -eq 0 ]]; then
|
||||
echo "Error: No Android device in 'device' state found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$deviceCount" -gt 1 ]]; then
|
||||
echo "Error: Multiple Android devices detected. Set ADB_SERIAL to choose one." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_source_dir() {
|
||||
if [[ ! -d "$sourceDir" ]]; then
|
||||
echo "Error: Source directory '$sourceDir' not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_package() {
|
||||
if ! run_adb shell pm list packages "$packageName" | tr -d '\r' | grep -Fxq "package:${packageName}"; then
|
||||
echo "Error: RHVoice package '$packageName' is not installed on the connected device" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
push_dict_files() {
|
||||
local dictFiles=()
|
||||
local sourcePath
|
||||
local fileName
|
||||
|
||||
shopt -s nullglob
|
||||
dictFiles=("$sourceDir"/*.txt)
|
||||
shopt -u nullglob
|
||||
|
||||
if [[ "${#dictFiles[@]}" -eq 0 ]]; then
|
||||
echo "Error: No dictionary files found in '$sourceDir'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Ensuring RHVoice dictionary directory exists at ${remoteDictDir}..."
|
||||
run_adb shell mkdir -p "$remoteDictDir"
|
||||
|
||||
for sourcePath in "${dictFiles[@]}"; do
|
||||
fileName="$(basename "$sourcePath")"
|
||||
echo "Pushing ${sourcePath} to ${remoteDictDir}/${fileName}..."
|
||||
run_adb push "$sourcePath" "${remoteDictDir}/${fileName}" >/dev/null
|
||||
done
|
||||
}
|
||||
|
||||
show_remote_dir() {
|
||||
echo "Remote dictionary files:"
|
||||
run_adb shell ls -l "$remoteDictDir" | tr -d '\r'
|
||||
}
|
||||
|
||||
main() {
|
||||
check_command adb
|
||||
check_source_dir
|
||||
select_device
|
||||
check_package
|
||||
push_dict_files
|
||||
show_remote_dir
|
||||
|
||||
echo "Android update complete!"
|
||||
echo "RHVoice dictionaries on Android are stored in ${remoteDictDir}."
|
||||
echo "RHVoice config on Android is stored under ${remoteBaseDir}, for example ${remoteBaseDir}/RHVoice.conf."
|
||||
echo "You may need to restart RHVoice or apps using it for changes to take effect."
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user