upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/install-bitflash-wine.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install-bitflash-wine.sh')
-rw-r--r--install-bitflash-wine.sh155
1 files changed, 155 insertions, 0 deletions
diff --git a/install-bitflash-wine.sh b/install-bitflash-wine.sh
new file mode 100644
index 0000000..3fa18a1
--- /dev/null
+++ b/install-bitflash-wine.sh
@@ -0,0 +1,155 @@
1#!/usr/bin/env bash
2# Bitflash GUI installer for Linux (via Wine)
3
4INSTALL_DIR="$HOME/.btf-wine"
5WINE_DATA="$HOME/.wine/drive_c/users/$USER/AppData/Roaming/Bitflash"
6LINUX_DATA="$HOME/.bitflash"
7BIN_DIR="$HOME/.local/bin"
8REPO="Bitflash-sh/bitflash"
9
10echo "==> Bitflash GUI installer"
11echo
12
13# ---- Wine
14echo "==> Checking Wine..."
15if ! command -v wine &>/dev/null; then
16 echo " Installing Wine..."
17 sudo apt-get update -qq && sudo apt-get install -y wine
18fi
19echo " Wine: $(wine --version)"
20
21# ---- db-util
22echo "==> Checking db-util..."
23if ! command -v db_dump &>/dev/null; then
24 echo " Installing db-util..."
25 sudo apt-get install -y db-util
26fi
27echo " db_dump: $(which db_dump)"
28
29# ---- Download
30echo "==> Fetching latest release from GitHub..."
31RELEASE_URL=$(curl -s "https://api.github.com/repos/$REPO/releases/latest" \
32 | grep "browser_download_url" \
33 | grep -i "win\|windows\|gui" \
34 | head -1 | cut -d '"' -f 4)
35
36if [ -z "$RELEASE_URL" ]; then
37 RELEASE_URL=$(curl -s "https://api.github.com/repos/$REPO/releases/latest" \
38 | grep "browser_download_url" | head -1 | cut -d '"' -f 4)
39fi
40
41if [ -z "$RELEASE_URL" ]; then
42 echo "ERROR: No release found at https://github.com/$REPO/releases"
43 exit 1
44fi
45
46echo " URL: $RELEASE_URL"
47TMPZIP=$(mktemp /tmp/bitflash-XXXXXX.zip)
48echo " Downloading..."
49curl -L -o "$TMPZIP" "$RELEASE_URL"
50echo " Downloaded: $(du -h "$TMPZIP" | cut -f1)"
51
52# ---- Extract
53echo "==> Extracting to $INSTALL_DIR..."
54rm -rf "$INSTALL_DIR"
55mkdir -p "$INSTALL_DIR"
56echo " Running unzip -j..."
57unzip -j "$TMPZIP" -d "$INSTALL_DIR" 2>&1 | grep -v "^warning" || true
58echo " Files after extract: $(ls "$INSTALL_DIR" | wc -l)"
59
60# ---- Rename backslash files
61echo "==> Renaming files..."
62count=0
63for f in "$INSTALL_DIR"/*; do
64 [ -f "$f" ] || continue
65 base=$(basename "$f")
66 newname=$(echo "$base" | sed 's/.*\\//')
67 if [ "$newname" != "$base" ]; then
68 mv "$f" "$INSTALL_DIR/$newname"
69 count=$((count+1))
70 fi
71done
72echo " Renamed $count files"
73echo " Files now: $(ls "$INSTALL_DIR" | wc -l)"
74
75rm -f "$TMPZIP"
76
77# ---- Verify
78if [ ! -f "$INSTALL_DIR/bitflash.exe" ]; then
79 echo "ERROR: bitflash.exe not found. Files present:"
80 ls "$INSTALL_DIR"
81 exit 1
82fi
83echo " bitflash.exe found ✓"
84
85# ---- Init Wine data dir
86echo "==> Initializing Wine Bitflash data directory..."
87echo " Starting Wine to create data dir (may take a moment)..."
88WINEDLLOVERRIDES="libdb_cxx-6.2=n" wine "$INSTALL_DIR/bitflash.exe" &
89WINE_PID=$!
90# Wait until wallet.dat is created, max 30 seconds
91for i in $(seq 1 30); do
92 sleep 1
93 if [ -f "$WINE_DATA/wallet.dat" ]; then
94 echo " wallet.dat created after ${i}s"
95 break
96 fi
97 echo " Waiting for Wine to initialize... ${i}s"
98done
99kill $WINE_PID 2>/dev/null || true
100wait $WINE_PID 2>/dev/null || true
101sleep 1
102mkdir -p "$WINE_DATA"
103echo " Wine data dir ready"
104
105# ---- Wallet
106echo
107if [ -f "$LINUX_DATA/wallet.dat" ]; then
108 echo "==> Found existing Linux wallet at $LINUX_DATA/wallet.dat"
109 read -p " Import it into the GUI wallet? [Y/n] " ans
110 ans=${ans:-Y}
111 if [[ "$ans" =~ ^[Yy] ]]; then
112 echo " Dumping Linux wallet..."
113 DUMP=$(mktemp)
114 CONVERTED=$(mktemp)
115 rm "$CONVERTED" # db_load needs a non-existing file
116 db_dump -p "$LINUX_DATA/wallet.dat" > "$DUMP"
117 echo " Converting format..."
118 db_load -f "$DUMP" "$CONVERTED"
119 echo " Installing converted wallet..."
120 cp "$CONVERTED" "$WINE_DATA/wallet.dat"
121 rm "$DUMP" "$CONVERTED"
122 echo " Wallet imported ✓"
123 else
124 echo " Skipping. Re-run script to import later."
125 fi
126else
127 echo "==> No Linux wallet found, starting fresh."
128fi
129
130# ---- Launcher
131echo "==> Creating bitflash command..."
132mkdir -p "$BIN_DIR"
133LAUNCHER_FILE="$BIN_DIR/bitflash"
134printf '#!/usr/bin/env bash\n' > "$LAUNCHER_FILE"
135printf 'RELAY="${BTF_RELAY:-}"\n' >> "$LAUNCHER_FILE"
136printf 'ANNOUNCE=""\n' >> "$LAUNCHER_FILE"
137printf '[ -n "$RELAY" ] && ANNOUNCE="-announcerelay=$RELAY"\n' >> "$LAUNCHER_FILE"
138printf 'WINEDLLOVERRIDES="libdb_cxx-6.2=n" wine "%s/bitflash.exe" $ANNOUNCE "$@"\n' "$INSTALL_DIR" >> "$LAUNCHER_FILE"
139chmod +x "$LAUNCHER_FILE"
140echo " Launcher created: $(cat "$LAUNCHER_FILE" | wc -l) lines"
141
142if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
143 echo "==> Adding ~/.local/bin to PATH..."
144 echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.bashrc"
145fi
146export PATH="$HOME/.local/bin:$PATH"
147
148echo
149echo "=================================================================="
150echo " DONE."
151echo " Launch: bitflash"
152echo " Mine: bitflash -gen"
153echo " Relay: bitflash -announcerelay=YOUR_HOST:8434"
154echo " Data: $WINE_DATA"
155echo "=================================================================="