feat: add keystore creation and management
Made-with: Cursor
This commit is contained in:
80
build.sh
80
build.sh
@@ -92,10 +92,88 @@ main_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
read_keystore_password() {
|
||||
local password
|
||||
read -rsp "Keystore password: " password
|
||||
echo >&2
|
||||
echo "$password"
|
||||
}
|
||||
|
||||
create_keystore() {
|
||||
echo -e "${BOLD}No keystore found. Let's create one.${NC}"
|
||||
echo ""
|
||||
|
||||
local cn org password password_confirm
|
||||
|
||||
read -rp "Your name (for the certificate): " cn
|
||||
[[ -z "$cn" ]] && { error "Name is required."; return 1; }
|
||||
|
||||
read -rp "Organization (optional, Enter to skip): " org
|
||||
|
||||
while true; do
|
||||
read -rsp "Password (min 6 chars): " password
|
||||
echo
|
||||
if [[ ${#password} -lt 6 ]]; then
|
||||
warn "Password must be at least 6 characters."
|
||||
continue
|
||||
fi
|
||||
read -rsp "Confirm password: " password_confirm
|
||||
echo
|
||||
if [[ "$password" != "$password_confirm" ]]; then
|
||||
warn "Passwords don't match. Try again."
|
||||
continue
|
||||
fi
|
||||
break
|
||||
done
|
||||
|
||||
mkdir -p "$KEYSTORE_DIR"
|
||||
|
||||
local dname="CN=$cn"
|
||||
[[ -n "$org" ]] && dname="$dname, O=$org"
|
||||
|
||||
info "Creating keystore..."
|
||||
|
||||
keytool -genkeypair \
|
||||
-alias "$KEY_ALIAS" \
|
||||
-keyalg RSA \
|
||||
-keysize 2048 \
|
||||
-validity 10000 \
|
||||
-keystore "$KEYSTORE_FILE" \
|
||||
-storepass "$password" \
|
||||
-keypass "$password" \
|
||||
-dname "$dname" \
|
||||
2>/dev/null || true
|
||||
|
||||
if [[ -f "$KEYSTORE_FILE" ]]; then
|
||||
echo ""
|
||||
success "Keystore created at ${BOLD}$KEYSTORE_FILE${NC}"
|
||||
echo ""
|
||||
warn "IMPORTANT: Back up this file and remember your password."
|
||||
warn "If you lose either, you cannot update the app on devices"
|
||||
warn "that already have this version installed."
|
||||
else
|
||||
error "Keystore creation failed."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
manage_keystore() {
|
||||
if [[ -f "$KEYSTORE_FILE" ]]; then
|
||||
success "Keystore exists at ${BOLD}$KEYSTORE_FILE${NC}"
|
||||
echo ""
|
||||
info "Keystore details:"
|
||||
keytool -list -keystore "$KEYSTORE_FILE" -alias "$KEY_ALIAS" \
|
||||
-storepass "$(read_keystore_password)" 2>/dev/null \
|
||||
|| warn "Could not read keystore (wrong password?)"
|
||||
return
|
||||
fi
|
||||
|
||||
create_keystore
|
||||
}
|
||||
|
||||
# Placeholder functions — implemented in subsequent tasks
|
||||
build_release() { warn "Not yet implemented"; }
|
||||
build_debug() { warn "Not yet implemented"; }
|
||||
manage_keystore() { warn "Not yet implemented"; }
|
||||
clean_build() { warn "Not yet implemented"; }
|
||||
|
||||
# --- Main ---
|
||||
|
||||
Reference in New Issue
Block a user