diff --git a/ct/semaphore.sh b/ct/semaphore.sh index 3ac330910..f1d1cb594 100644 --- a/ct/semaphore.sh +++ b/ct/semaphore.sh @@ -29,40 +29,38 @@ function update_script() { exit fi - if [[ -f /opt/semaphore/semaphore_db.bolt ]]; then - msg_warn "WARNING: Due to bugs with BoltDB database, update script will move your application" - msg_warn "to use SQLite database instead. Unfortunately, this will reset your application and make it a fresh" - msg_warn "installation. All your data will be lost!" - echo "" - read -r -p "${TAB3}Do you want to continue? (y/N): " CONFIRM - if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then - exit 0 - else - msg_info "Moving from BoltDB to SQLite" - systemctl stop semaphore - rm -rf /opt/semaphore/semaphore_db.bolt - sed -i \ - -e 's|"bolt": {|"sqlite": {|' \ - -e 's|/semaphore_db.bolt"|/database.sqlite"|' \ - -e '/semaphore_db.bolt/d' \ - -e '/"dialect"/d' \ - -e '/^ },$/a\ "dialect": "sqlite",' \ - /opt/semaphore/config.json - SEM_PW=$(cat ~/semaphore.creds) - systemctl start semaphore - $STD semaphore user add --admin --login admin --email admin@community-scripts.org --name Administrator --password "${SEM_PW}" --config /opt/semaphore/config.json - - msg_ok "Moved from BoltDB to SQLite" - fi - fi - if check_for_gh_release "semaphore" "semaphoreui/semaphore"; then + if [[ -f /opt/semaphore/semaphore_db.bolt ]]; then + msg_warn "WARNING: Due to bugs with BoltDB database, update script will move your application" + msg_warn "to use SQLite database instead. Make sure you have a backup of your data!" + echo "" + read -r -p "${TAB3}Do you want to continue? (y/N): " CONFIRM + if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then + exit 0 + else + msg_info "Moving from BoltDB to SQLite" + sed -i \ + -e 's|"bolt": {|"sqlite": {|' \ + -e 's|/semaphore_db.bolt"|/database.sqlite"|' \ + -e '/semaphore_db.bolt/d' \ + -e '/"dialect"/d' \ + -e '/^ },$/a\ "dialect": "sqlite",' \ + /opt/semaphore/config.json + msg_ok "Moved from BoltDB to SQLite" + fi + fi + msg_info "Stopping Service" systemctl stop semaphore msg_ok "Stopped Service" fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_amd64.deb" + if [[ -f /opt/semaphore/semaphore_db.bolt ]]; then + $STD semaphore migrate --from-boltdb /opt/semaphore/semaphore_db.bolt --config /opt/semaphore/config.json + rm -f /opt/semaphore/semaphore_db.bolt + fi + msg_info "Starting Service" systemctl start semaphore msg_ok "Started Service"