fix: toggle-resion
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# CN_REGION 持久化到 ~/.config/fish/custom.fish(供 toggle-region / ff region 使用)
|
||||
|
||||
dotfile_region_custom_fish() {
|
||||
echo "${HOME}/.config/fish/custom.fish"
|
||||
}
|
||||
|
||||
dotfile_region_read() {
|
||||
local custom val
|
||||
custom="$(dotfile_region_custom_fish)"
|
||||
if [ -f "$custom" ]; then
|
||||
val=$(
|
||||
grep -E '^[[:space:]]*set[[:space:]]+-gx[[:space:]]+CN_REGION[[:space:]]+' "$custom" 2>/dev/null |
|
||||
tail -1 |
|
||||
awk '{print $NF}'
|
||||
)
|
||||
if [ -n "$val" ]; then
|
||||
echo "$val"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
if [ -n "${CN_REGION:-}" ]; then
|
||||
echo "$CN_REGION"
|
||||
else
|
||||
echo "0"
|
||||
fi
|
||||
}
|
||||
|
||||
dotfile_region_write() {
|
||||
local val="$1"
|
||||
local custom tmp
|
||||
custom="$(dotfile_region_custom_fish)"
|
||||
mkdir -p "$(dirname "$custom")"
|
||||
tmp="$(mktemp)"
|
||||
if [ -f "$custom" ]; then
|
||||
grep -Ev '^[[:space:]]*# dotfile: CN_REGION|^[[:space:]]*set[[:space:]]+-gx[[:space:]]+CN_REGION[[:space:]]+' \
|
||||
"$custom" >"$tmp" || true
|
||||
else
|
||||
: >"$tmp"
|
||||
fi
|
||||
{
|
||||
cat "$tmp"
|
||||
if [ -s "$tmp" ]; then
|
||||
echo
|
||||
fi
|
||||
echo "# dotfile: CN_REGION (managed by ff region / toggle-region)"
|
||||
echo "set -gx CN_REGION ${val}"
|
||||
} >"${custom}.new"
|
||||
mv "${custom}.new" "$custom"
|
||||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
dotfile_region_toggle() {
|
||||
local current next
|
||||
current="$(dotfile_region_read)"
|
||||
if [ "$current" = "1" ]; then
|
||||
next=0
|
||||
else
|
||||
next=1
|
||||
fi
|
||||
dotfile_region_write "$next"
|
||||
export CN_REGION="$next"
|
||||
echo "$next"
|
||||
}
|
||||
|
||||
dotfile_region_label() {
|
||||
if [ "$1" = "1" ]; then
|
||||
echo "国内"
|
||||
else
|
||||
echo "国外"
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user