@mostajs/orm-cli 0.5.15 → 0.5.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/mostajs.sh +65 -8
  2. package/package.json +1 -1
package/bin/mostajs.sh CHANGED
@@ -1499,7 +1499,9 @@ menu_services() {
1499
1499
  echo -e " ${CYAN}4${RESET}) Status"
1500
1500
  echo -e " ${CYAN}5${RESET}) Show access URLs"
1501
1501
  echo -e " ${CYAN}6${RESET}) ${BOLD}Setup services${RESET} — scaffold replicator + monitor + config.env + dev:all"
1502
- echo -e " ${CYAN}7${RESET}) Start all (dev + replicator + monitor via ${DIM}npm run dev:all${RESET})"
1502
+ echo -e " ${CYAN}7${RESET}) ${BOLD}Start all${RESET} (replicator + monitor in background, return to menu)"
1503
+ echo -e " ${CYAN}8${RESET}) ${BOLD}Stop all background${RESET} (stop dev:all)"
1504
+ echo -e " ${CYAN}9${RESET}) ${BOLD}Background status${RESET} (dev:all PID + last logs)"
1503
1505
  echo
1504
1506
  echo -e " ${CYAN}b${RESET}) Back"
1505
1507
  echo
@@ -1512,6 +1514,8 @@ menu_services() {
1512
1514
  5) show_urls;;
1513
1515
  6) action_setup_services;;
1514
1516
  7) svc_start_dev_all;;
1517
+ 8) svc_stop_dev_all;;
1518
+ 9) svc_dev_all_status;;
1515
1519
  b|B) return;;
1516
1520
  *) warn Unknown;;
1517
1521
  esac
@@ -1546,9 +1550,57 @@ svc_start_dev_all() {
1546
1550
  info "Run menu 5 → 6 (Setup services) first to scaffold + patch."
1547
1551
  return
1548
1552
  fi
1549
- info "Starting dev:all (logs → terminal, Ctrl+C to stop)"
1550
- echo
1551
- "$PKG_MANAGER" run dev:all
1553
+ info "Starting dev:all in background..."
1554
+ nohup "$PKG_MANAGER" run dev:all > "$LOG_DIR/dev-all.log" 2>&1 &
1555
+ local pid=$!
1556
+ echo "$pid" > "$LOG_DIR/dev-all.pid"
1557
+ sleep 2
1558
+ if kill -0 "$pid" 2>/dev/null; then
1559
+ ok "dev:all running (PID $pid)"
1560
+ ok "Logs : tail -f $LOG_DIR/dev-all.log"
1561
+ # Show detected ports from log
1562
+ grep -oE '(localhost|127\.0\.0\.1):[0-9]+' "$LOG_DIR/dev-all.log" 2>/dev/null | sort -u | while read url; do
1563
+ echo -e " ${CYAN}→ http://$url${RESET}"
1564
+ done
1565
+ else
1566
+ err "dev:all failed to start — check $LOG_DIR/dev-all.log"
1567
+ tail -5 "$LOG_DIR/dev-all.log" 2>/dev/null
1568
+ fi
1569
+ }
1570
+
1571
+ svc_stop_dev_all() {
1572
+ local pidfile="$LOG_DIR/dev-all.pid"
1573
+ if [[ ! -f "$pidfile" ]]; then
1574
+ warn "No dev:all PID file found — not running?"
1575
+ return
1576
+ fi
1577
+ local pid
1578
+ pid=$(cat "$pidfile")
1579
+ if kill -0 "$pid" 2>/dev/null; then
1580
+ # Kill the process group (concurrently + children)
1581
+ kill -- -"$pid" 2>/dev/null || kill "$pid" 2>/dev/null
1582
+ sleep 1
1583
+ if kill -0 "$pid" 2>/dev/null; then
1584
+ kill -9 -- -"$pid" 2>/dev/null || kill -9 "$pid" 2>/dev/null
1585
+ fi
1586
+ ok "dev:all stopped (was PID $pid)"
1587
+ else
1588
+ info "dev:all already stopped (PID $pid)"
1589
+ fi
1590
+ rm -f "$pidfile"
1591
+ }
1592
+
1593
+ svc_dev_all_status() {
1594
+ local pidfile="$LOG_DIR/dev-all.pid"
1595
+ if [[ -f "$pidfile" ]] && kill -0 "$(cat "$pidfile")" 2>/dev/null; then
1596
+ local pid=$(cat "$pidfile")
1597
+ ok "dev:all running (PID $pid)"
1598
+ ok "Logs : $LOG_DIR/dev-all.log"
1599
+ echo -e " Last 5 lines :"
1600
+ tail -5 "$LOG_DIR/dev-all.log" 2>/dev/null | sed 's/^/ /'
1601
+ else
1602
+ info "dev:all not running"
1603
+ fi
1552
1604
  }
1553
1605
 
1554
1606
  svc_start_dev() {
@@ -2006,12 +2058,17 @@ action_rep_scaffold_services() {
2006
2058
  };
2007
2059
  add('replicator', 'node services/replicator.mjs');
2008
2060
  add('monitor', 'node services/monitor.mjs');
2009
- // dev:all — only include npm:dev if the project has a 'dev' script
2061
+ // dev:all — ALWAYS recalculate based on whether 'dev' script exists.
2062
+ // Don't keep stale values that reference npm:dev when dev doesn't exist.
2010
2063
  const hasDev = !!pkg.scripts.dev;
2011
- if (hasDev) {
2012
- add('dev:all', 'concurrently --kill-others-on-fail --names next,rep,mon -c blue,magenta,cyan \"npm:dev\" \"npm:replicator\" \"npm:monitor\"');
2064
+ const devAll = hasDev
2065
+ ? 'concurrently --kill-others-on-fail --names next,rep,mon -c blue,magenta,cyan \"npm:dev\" \"npm:replicator\" \"npm:monitor\"'
2066
+ : 'concurrently --kill-others-on-fail --names rep,mon -c magenta,cyan \"npm:replicator\" \"npm:monitor\"';
2067
+ if (pkg.scripts['dev:all'] !== devAll) {
2068
+ pkg.scripts['dev:all'] = devAll;
2069
+ console.log(' ✓ ' + (pkg.scripts['dev:all'] ? 'updated' : 'added') + ' dev:all' + (hasDev ? ' (with npm:dev)' : ' (without npm:dev)'));
2013
2070
  } else {
2014
- add('dev:all', 'concurrently --kill-others-on-fail --names rep,mon -c magenta,cyan \"npm:replicator\" \"npm:monitor\"');
2071
+ console.log('dev:all up-to-date');
2015
2072
  }
2016
2073
  fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + '\n');
2017
2074
  " 2>&1 | sed 's/^/ /'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/orm-cli",
3
- "version": "0.5.15",
3
+ "version": "0.5.17",
4
4
  "description": "Universal CLI to integrate @mostajs/orm into any project — one-shot `mostajs bootstrap` migrates a Prisma project (codemod + deps + schema convert + DDL) to 13 databases with zero code change.",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "AGPL-3.0-or-later",