brew-tui 2.2.2 → 2.3.1
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.
- package/build/{brew-tui-bar-installer-GTV4OEZW.js → brew-tui-bar-installer-PCHNYMZL.js} +5 -3
- package/build/{brewfile-manager-HWTPBXPO.js → brewfile-manager-DNRM6CQ7.js} +3 -3
- package/build/chunk-7R4ME2NC.js +342 -0
- package/build/chunk-7R4ME2NC.js.map +1 -0
- package/build/chunk-CCAT52XY.js +138 -0
- package/build/chunk-CCAT52XY.js.map +1 -0
- package/build/{chunk-YUE5NRTE.js → chunk-I5VZR55J.js} +23 -3
- package/build/chunk-I5VZR55J.js.map +1 -0
- package/build/{version-check-QY3SQ6XI.js → chunk-KR6EAHEE.js} +6 -5
- package/build/{chunk-ZC23DNMK.js → chunk-PYDQHHI2.js} +22 -354
- package/build/chunk-PYDQHHI2.js.map +1 -0
- package/build/{chunk-F2S7TGCS.js → chunk-SDQYHY2L.js} +3 -1
- package/build/chunk-SDQYHY2L.js.map +1 -0
- package/build/{chunk-Y45AXONF.js → chunk-UZMGXQKF.js} +2 -2
- package/build/doctor-D56LDODR.js +133 -0
- package/build/doctor-D56LDODR.js.map +1 -0
- package/build/index.js +60 -162
- package/build/index.js.map +1 -1
- package/build/postinstall.js +10 -5
- package/build/postinstall.js.map +1 -1
- package/build/{sync-engine-G5ML7TJ5.js → sync-engine-KTH4K3NG.js} +4 -3
- package/build/version-check-UUJMLUK6.js +15 -0
- package/build/version-check-UUJMLUK6.js.map +1 -0
- package/package.json +1 -1
- package/build/chunk-F2S7TGCS.js.map +0 -1
- package/build/chunk-YUE5NRTE.js.map +0 -1
- package/build/chunk-ZC23DNMK.js.map +0 -1
- /package/build/{brew-tui-bar-installer-GTV4OEZW.js.map → brew-tui-bar-installer-PCHNYMZL.js.map} +0 -0
- /package/build/{brewfile-manager-HWTPBXPO.js.map → brewfile-manager-DNRM6CQ7.js.map} +0 -0
- /package/build/{version-check-QY3SQ6XI.js.map → chunk-KR6EAHEE.js.map} +0 -0
- /package/build/{chunk-Y45AXONF.js.map → chunk-UZMGXQKF.js.map} +0 -0
- /package/build/{sync-engine-G5ML7TJ5.js.map → sync-engine-KTH4K3NG.js.map} +0 -0
package/build/index.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useLicenseStore,
|
|
3
|
+
verifyStoreIntegrity
|
|
4
|
+
} from "./chunk-CCAT52XY.js";
|
|
1
5
|
import {
|
|
2
6
|
brewUpdate,
|
|
3
7
|
casksToListItems,
|
|
@@ -24,21 +28,21 @@ import {
|
|
|
24
28
|
uninstallPackage,
|
|
25
29
|
unpinPackage,
|
|
26
30
|
validatePackageName
|
|
27
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-UZMGXQKF.js";
|
|
28
32
|
import {
|
|
29
|
-
activate,
|
|
30
33
|
applyConflictResolutions,
|
|
31
|
-
deactivate,
|
|
32
34
|
decryptPayload,
|
|
33
|
-
getDegradationLevel,
|
|
34
|
-
isExpired,
|
|
35
|
-
loadLicense,
|
|
36
35
|
loadSyncConfig,
|
|
37
|
-
needsRevalidation,
|
|
38
36
|
readSyncEnvelope,
|
|
39
|
-
revalidate,
|
|
40
37
|
sync
|
|
41
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-7R4ME2NC.js";
|
|
39
|
+
import {
|
|
40
|
+
activate,
|
|
41
|
+
deactivate,
|
|
42
|
+
getDegradationLevel,
|
|
43
|
+
loadLicense,
|
|
44
|
+
revalidate
|
|
45
|
+
} from "./chunk-PYDQHHI2.js";
|
|
42
46
|
import {
|
|
43
47
|
fetchWithRetry
|
|
44
48
|
} from "./chunk-NRRQECXA.js";
|
|
@@ -47,7 +51,7 @@ import {
|
|
|
47
51
|
t,
|
|
48
52
|
tp,
|
|
49
53
|
useLocaleStore
|
|
50
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-SDQYHY2L.js";
|
|
51
55
|
import {
|
|
52
56
|
checkCompliance
|
|
53
57
|
} from "./chunk-S3NRCC23.js";
|
|
@@ -670,132 +674,12 @@ function AppLayout({ children }) {
|
|
|
670
674
|
] });
|
|
671
675
|
}
|
|
672
676
|
|
|
673
|
-
// src/stores/license-store.ts
|
|
674
|
-
import { create as create2 } from "zustand";
|
|
675
|
-
|
|
676
|
-
// src/lib/license/anti-tamper.ts
|
|
677
|
-
var _originalIsPro = null;
|
|
678
|
-
var _originalGetState = null;
|
|
679
|
-
var _storeApi = null;
|
|
680
|
-
function initStoreIntegrity(store) {
|
|
681
|
-
_storeApi = store;
|
|
682
|
-
_originalIsPro = store.getState().isPro;
|
|
683
|
-
_originalGetState = store.getState;
|
|
684
|
-
}
|
|
685
|
-
function verifyStoreIntegrity() {
|
|
686
|
-
if (!_storeApi || !_originalIsPro || !_originalGetState) return false;
|
|
687
|
-
const state = _storeApi.getState();
|
|
688
|
-
if (state.isPro !== _originalIsPro) return false;
|
|
689
|
-
if (_storeApi.getState !== _originalGetState) return false;
|
|
690
|
-
if (state.status === "free" && state.isPro()) return false;
|
|
691
|
-
return true;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
// src/stores/license-store.ts
|
|
695
|
-
var REVALIDATION_CHECK_MS = 60 * 60 * 1e3;
|
|
696
|
-
var _revalidatingPromise = null;
|
|
697
|
-
var _revalidationInterval = null;
|
|
698
|
-
async function doRevalidation(license, set) {
|
|
699
|
-
const result = await revalidate(license);
|
|
700
|
-
if (result === "expired") {
|
|
701
|
-
set({ status: "expired", license: { ...license, status: "expired" }, degradation: "expired" });
|
|
702
|
-
} else {
|
|
703
|
-
const updated = await loadLicense();
|
|
704
|
-
const effective = updated ?? license;
|
|
705
|
-
set({ license: effective, degradation: getDegradationLevel(effective) });
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
var useLicenseStore = create2((set, get) => ({
|
|
709
|
-
status: "validating",
|
|
710
|
-
license: null,
|
|
711
|
-
error: null,
|
|
712
|
-
degradation: "none",
|
|
713
|
-
initialize: async () => {
|
|
714
|
-
initStoreIntegrity(useLicenseStore);
|
|
715
|
-
await ensureDataDirs();
|
|
716
|
-
const license = await loadLicense();
|
|
717
|
-
if (!license) {
|
|
718
|
-
set({ status: "free", license: null, degradation: "none" });
|
|
719
|
-
return;
|
|
720
|
-
}
|
|
721
|
-
if (isExpired(license)) {
|
|
722
|
-
set({ status: "expired", license, degradation: "expired" });
|
|
723
|
-
return;
|
|
724
|
-
}
|
|
725
|
-
const level = getDegradationLevel(license);
|
|
726
|
-
if (level === "expired") {
|
|
727
|
-
set({ status: "expired", license, degradation: "expired" });
|
|
728
|
-
return;
|
|
729
|
-
}
|
|
730
|
-
set({ status: license.plan, license, degradation: level });
|
|
731
|
-
if (needsRevalidation(license)) {
|
|
732
|
-
if (!_revalidatingPromise) {
|
|
733
|
-
_revalidatingPromise = doRevalidation(license, set).finally(() => {
|
|
734
|
-
_revalidatingPromise = null;
|
|
735
|
-
});
|
|
736
|
-
}
|
|
737
|
-
await _revalidatingPromise;
|
|
738
|
-
}
|
|
739
|
-
if (_revalidationInterval) clearInterval(_revalidationInterval);
|
|
740
|
-
_revalidationInterval = setInterval(() => {
|
|
741
|
-
const current = get().license;
|
|
742
|
-
const status = get().status;
|
|
743
|
-
if (!current || status !== "pro" && status !== "team") return;
|
|
744
|
-
if (!needsRevalidation(current)) return;
|
|
745
|
-
if (_revalidatingPromise) return;
|
|
746
|
-
_revalidatingPromise = doRevalidation(current, set).finally(() => {
|
|
747
|
-
_revalidatingPromise = null;
|
|
748
|
-
});
|
|
749
|
-
}, REVALIDATION_CHECK_MS);
|
|
750
|
-
_revalidationInterval.unref();
|
|
751
|
-
},
|
|
752
|
-
activate: async (key) => {
|
|
753
|
-
set({ error: null });
|
|
754
|
-
try {
|
|
755
|
-
const license = await activate(key);
|
|
756
|
-
set({ status: license.plan, license, degradation: "none" });
|
|
757
|
-
return true;
|
|
758
|
-
} catch (err) {
|
|
759
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
760
|
-
set({ error: msg });
|
|
761
|
-
return false;
|
|
762
|
-
}
|
|
763
|
-
},
|
|
764
|
-
deactivate: async () => {
|
|
765
|
-
const { license } = get();
|
|
766
|
-
if (license) {
|
|
767
|
-
const { remoteSuccess } = await deactivate(license);
|
|
768
|
-
if (!remoteSuccess) {
|
|
769
|
-
set({ status: "free", license: null, degradation: "none", error: "License removed locally but server deactivation failed. It may remain active remotely." });
|
|
770
|
-
return;
|
|
771
|
-
}
|
|
772
|
-
}
|
|
773
|
-
set({ status: "free", license: null, degradation: "none", error: null });
|
|
774
|
-
},
|
|
775
|
-
revalidate: async () => {
|
|
776
|
-
const { license } = get();
|
|
777
|
-
if (!license) return;
|
|
778
|
-
try {
|
|
779
|
-
await doRevalidation(license, set);
|
|
780
|
-
} catch (err) {
|
|
781
|
-
set({ error: err instanceof Error ? err.message : String(err) });
|
|
782
|
-
}
|
|
783
|
-
},
|
|
784
|
-
// Team is a superset of Pro — team users have full Pro access plus team features.
|
|
785
|
-
// Pro users do NOT get Team features (Compliance) without paying for the Team tier.
|
|
786
|
-
isPro: () => {
|
|
787
|
-
const s = get().status;
|
|
788
|
-
return s === "pro" || s === "team";
|
|
789
|
-
},
|
|
790
|
-
isTeam: () => get().status === "team"
|
|
791
|
-
}));
|
|
792
|
-
|
|
793
677
|
// src/hooks/use-keyboard.ts
|
|
794
678
|
import { useInput } from "ink";
|
|
795
679
|
|
|
796
680
|
// src/stores/modal-store.ts
|
|
797
|
-
import { create as
|
|
798
|
-
var useModalStore =
|
|
681
|
+
import { create as create2 } from "zustand";
|
|
682
|
+
var useModalStore = create2((set) => ({
|
|
799
683
|
_count: 0,
|
|
800
684
|
isOpen: false,
|
|
801
685
|
openModal: () => set((s) => {
|
|
@@ -1041,7 +925,7 @@ function useVisibleRows({
|
|
|
1041
925
|
}
|
|
1042
926
|
|
|
1043
927
|
// src/stores/brew-store.ts
|
|
1044
|
-
import { create as
|
|
928
|
+
import { create as create3 } from "zustand";
|
|
1045
929
|
var BREW_UPDATE_COOLDOWN_MS = 5 * 60 * 1e3;
|
|
1046
930
|
var fetchAllInFlight = null;
|
|
1047
931
|
var brewUpdateInFlight = null;
|
|
@@ -1055,7 +939,7 @@ function setError(set, key, error) {
|
|
|
1055
939
|
function recordFetchTime(set, key) {
|
|
1056
940
|
set((s) => ({ lastFetchedAt: { ...s.lastFetchedAt, [key]: Date.now() } }));
|
|
1057
941
|
}
|
|
1058
|
-
var useBrewStore =
|
|
942
|
+
var useBrewStore = create3((set, get) => ({
|
|
1059
943
|
formulae: [],
|
|
1060
944
|
casks: [],
|
|
1061
945
|
outdated: { formulae: [], casks: [] },
|
|
@@ -1163,9 +1047,7 @@ var useBrewStore = create4((set, get) => ({
|
|
|
1163
1047
|
store.fetchInstalled(),
|
|
1164
1048
|
store.fetchOutdated(),
|
|
1165
1049
|
store.fetchServices(),
|
|
1166
|
-
store.fetchConfig()
|
|
1167
|
-
store.fetchLeaves(),
|
|
1168
|
-
store.fetchDoctor()
|
|
1050
|
+
store.fetchConfig()
|
|
1169
1051
|
]).then(() => void 0).finally(() => {
|
|
1170
1052
|
fetchAllInFlight = null;
|
|
1171
1053
|
});
|
|
@@ -1196,7 +1078,7 @@ var useBrewStore = create4((set, get) => ({
|
|
|
1196
1078
|
}));
|
|
1197
1079
|
|
|
1198
1080
|
// src/stores/security-store.ts
|
|
1199
|
-
import { create as
|
|
1081
|
+
import { create as create4 } from "zustand";
|
|
1200
1082
|
|
|
1201
1083
|
// src/lib/security/osv-api.ts
|
|
1202
1084
|
var OSV_BATCH_URL = "https://api.osv.dev/v1/querybatch";
|
|
@@ -1469,7 +1351,7 @@ function verifyPro(license, status) {
|
|
|
1469
1351
|
|
|
1470
1352
|
// src/stores/security-store.ts
|
|
1471
1353
|
var CACHE_TTL_MS = 30 * 60 * 1e3;
|
|
1472
|
-
var useSecurityStore =
|
|
1354
|
+
var useSecurityStore = create4((set, get) => ({
|
|
1473
1355
|
summary: null,
|
|
1474
1356
|
loading: false,
|
|
1475
1357
|
error: null,
|
|
@@ -1497,8 +1379,8 @@ var useSecurityStore = create5((set, get) => ({
|
|
|
1497
1379
|
}));
|
|
1498
1380
|
|
|
1499
1381
|
// src/stores/brewfile-store.ts
|
|
1500
|
-
import { create as
|
|
1501
|
-
var useBrewfileStore =
|
|
1382
|
+
import { create as create5 } from "zustand";
|
|
1383
|
+
var useBrewfileStore = create5((set, get) => ({
|
|
1502
1384
|
schema: null,
|
|
1503
1385
|
drift: null,
|
|
1504
1386
|
loading: false,
|
|
@@ -1550,8 +1432,8 @@ var useBrewfileStore = create6((set, get) => ({
|
|
|
1550
1432
|
}));
|
|
1551
1433
|
|
|
1552
1434
|
// src/stores/sync-store.ts
|
|
1553
|
-
import { create as
|
|
1554
|
-
var useSyncStore =
|
|
1435
|
+
import { create as create6 } from "zustand";
|
|
1436
|
+
var useSyncStore = create6((set, get) => ({
|
|
1555
1437
|
config: null,
|
|
1556
1438
|
lastResult: null,
|
|
1557
1439
|
conflicts: [],
|
|
@@ -1602,8 +1484,8 @@ var useSyncStore = create7((set, get) => ({
|
|
|
1602
1484
|
}));
|
|
1603
1485
|
|
|
1604
1486
|
// src/stores/compliance-store.ts
|
|
1605
|
-
import { create as
|
|
1606
|
-
var useComplianceStore =
|
|
1487
|
+
import { create as create7 } from "zustand";
|
|
1488
|
+
var useComplianceStore = create7((set, get) => ({
|
|
1607
1489
|
policy: null,
|
|
1608
1490
|
report: null,
|
|
1609
1491
|
loading: false,
|
|
@@ -3245,7 +3127,7 @@ import { useEffect as useEffect14, useRef as useRef9, useState as useState11 } f
|
|
|
3245
3127
|
import { Box as Box25 } from "ink";
|
|
3246
3128
|
|
|
3247
3129
|
// src/stores/profile-store.ts
|
|
3248
|
-
import { create as
|
|
3130
|
+
import { create as create8 } from "zustand";
|
|
3249
3131
|
|
|
3250
3132
|
// src/lib/profiles/profile-manager.ts
|
|
3251
3133
|
import { readFile, writeFile as writeFile2, readdir, rm, rename } from "fs/promises";
|
|
@@ -3412,7 +3294,7 @@ function getIsPro() {
|
|
|
3412
3294
|
const { license, status } = useLicenseStore.getState();
|
|
3413
3295
|
return verifyPro(license, status);
|
|
3414
3296
|
}
|
|
3415
|
-
var useProfileStore =
|
|
3297
|
+
var useProfileStore = create8((set) => ({
|
|
3416
3298
|
profileNames: [],
|
|
3417
3299
|
selectedProfile: null,
|
|
3418
3300
|
loading: false,
|
|
@@ -3817,7 +3699,7 @@ import { useEffect as useEffect15, useRef as useRef10, useState as useState12 }
|
|
|
3817
3699
|
import { Box as Box26, Text as Text28 } from "ink";
|
|
3818
3700
|
|
|
3819
3701
|
// src/stores/cleanup-store.ts
|
|
3820
|
-
import { create as
|
|
3702
|
+
import { create as create9 } from "zustand";
|
|
3821
3703
|
|
|
3822
3704
|
// src/lib/cleanup/cleanup-analyzer.ts
|
|
3823
3705
|
import { execFile } from "child_process";
|
|
@@ -3898,7 +3780,7 @@ async function analyzeCleanup(isPro, formulae, leaves) {
|
|
|
3898
3780
|
}
|
|
3899
3781
|
|
|
3900
3782
|
// src/stores/cleanup-store.ts
|
|
3901
|
-
var useCleanupStore =
|
|
3783
|
+
var useCleanupStore = create9((set, get) => ({
|
|
3902
3784
|
summary: null,
|
|
3903
3785
|
selected: /* @__PURE__ */ new Set(),
|
|
3904
3786
|
loading: false,
|
|
@@ -4091,12 +3973,12 @@ import { useEffect as useEffect16, useState as useState13, useMemo as useMemo5 }
|
|
|
4091
3973
|
import { Box as Box27, Text as Text29 } from "ink";
|
|
4092
3974
|
|
|
4093
3975
|
// src/stores/history-store.ts
|
|
4094
|
-
import { create as
|
|
3976
|
+
import { create as create10 } from "zustand";
|
|
4095
3977
|
function getStrongIsPro() {
|
|
4096
3978
|
const { license, status } = useLicenseStore.getState();
|
|
4097
3979
|
return verifyPro(license, status);
|
|
4098
3980
|
}
|
|
4099
|
-
var useHistoryStore =
|
|
3981
|
+
var useHistoryStore = create10((set) => ({
|
|
4100
3982
|
entries: [],
|
|
4101
3983
|
loading: false,
|
|
4102
3984
|
error: null,
|
|
@@ -4668,7 +4550,7 @@ function AccountView() {
|
|
|
4668
4550
|
status === "pro" || status === "team" || status === "expired" ? `v ${t("hint_revalidate")} ` : "",
|
|
4669
4551
|
revalidating ? t("account_revalidating") : "",
|
|
4670
4552
|
" ",
|
|
4671
|
-
t("app_version", { version: "2.
|
|
4553
|
+
t("app_version", { version: "2.3.1" })
|
|
4672
4554
|
] }) })
|
|
4673
4555
|
] });
|
|
4674
4556
|
}
|
|
@@ -4678,7 +4560,7 @@ import { useCallback as useCallback3, useEffect as useEffect18, useRef as useRef
|
|
|
4678
4560
|
import { Box as Box30, Text as Text32 } from "ink";
|
|
4679
4561
|
|
|
4680
4562
|
// src/stores/rollback-store.ts
|
|
4681
|
-
import { create as
|
|
4563
|
+
import { create as create11 } from "zustand";
|
|
4682
4564
|
|
|
4683
4565
|
// src/lib/rollback/rollback-engine.ts
|
|
4684
4566
|
import { readdir as readdir2 } from "fs/promises";
|
|
@@ -4857,7 +4739,7 @@ async function* executeRollbackPlan(plan, isPro) {
|
|
|
4857
4739
|
}
|
|
4858
4740
|
|
|
4859
4741
|
// src/stores/rollback-store.ts
|
|
4860
|
-
var useRollbackStore =
|
|
4742
|
+
var useRollbackStore = create11((set) => ({
|
|
4861
4743
|
snapshots: [],
|
|
4862
4744
|
loading: false,
|
|
4863
4745
|
error: null,
|
|
@@ -6176,7 +6058,7 @@ async function reportError(err, context = {}) {
|
|
|
6176
6058
|
const config = await resolveConfig();
|
|
6177
6059
|
if (!config.enabled || !config.endpoint) return;
|
|
6178
6060
|
const machineId = await getMachineId();
|
|
6179
|
-
const version = true ? "2.
|
|
6061
|
+
const version = true ? "2.3.1" : "unknown";
|
|
6180
6062
|
await postReport(buildReport("error", err, context, machineId, version), config);
|
|
6181
6063
|
}
|
|
6182
6064
|
async function installCrashReporter() {
|
|
@@ -6185,7 +6067,7 @@ async function installCrashReporter() {
|
|
|
6185
6067
|
if (!config.enabled || !config.endpoint) return;
|
|
6186
6068
|
_installed = true;
|
|
6187
6069
|
const machineId = await getMachineId();
|
|
6188
|
-
const version = true ? "2.
|
|
6070
|
+
const version = true ? "2.3.1" : "unknown";
|
|
6189
6071
|
process.on("uncaughtException", (err) => {
|
|
6190
6072
|
void postReport(buildReport("fatal", err, { kind: "uncaughtException" }, machineId, version), config);
|
|
6191
6073
|
});
|
|
@@ -6200,7 +6082,18 @@ import { jsx as jsx39 } from "react/jsx-runtime";
|
|
|
6200
6082
|
var [, , command, arg] = process.argv;
|
|
6201
6083
|
async function runCli() {
|
|
6202
6084
|
if (command === "--version" || command === "-v" || command === "version") {
|
|
6203
|
-
|
|
6085
|
+
const cliVersion = "2.3.1";
|
|
6086
|
+
process.stdout.write(cliVersion + "\n");
|
|
6087
|
+
if (process.platform === "darwin") {
|
|
6088
|
+
try {
|
|
6089
|
+
const { readBrewTUIBarVersion } = await import("./version-check-UUJMLUK6.js");
|
|
6090
|
+
const appVersion = await readBrewTUIBarVersion();
|
|
6091
|
+
if (appVersion && appVersion !== cliVersion) {
|
|
6092
|
+
process.stderr.write(t("cli_versionMismatchWarning", { installed: appVersion, expected: cliVersion }) + "\n");
|
|
6093
|
+
}
|
|
6094
|
+
} catch {
|
|
6095
|
+
}
|
|
6096
|
+
}
|
|
6204
6097
|
return;
|
|
6205
6098
|
}
|
|
6206
6099
|
await ensureDataDirs();
|
|
@@ -6308,7 +6201,7 @@ Snapshots: ${snapshots.length} (latest: ${latest ? formatDate(latest.capturedAt)
|
|
|
6308
6201
|
} catch {
|
|
6309
6202
|
}
|
|
6310
6203
|
try {
|
|
6311
|
-
const { loadBrewfile: loadBrewfile2, computeDrift: computeDrift2 } = await import("./brewfile-manager-
|
|
6204
|
+
const { loadBrewfile: loadBrewfile2, computeDrift: computeDrift2 } = await import("./brewfile-manager-DNRM6CQ7.js");
|
|
6312
6205
|
const schema = await loadBrewfile2();
|
|
6313
6206
|
if (schema) {
|
|
6314
6207
|
const drift = await computeDrift2(schema);
|
|
@@ -6317,7 +6210,7 @@ Snapshots: ${snapshots.length} (latest: ${latest ? formatDate(latest.capturedAt)
|
|
|
6317
6210
|
} catch {
|
|
6318
6211
|
}
|
|
6319
6212
|
try {
|
|
6320
|
-
const { loadSyncConfig: loadSyncConfig2 } = await import("./sync-engine-
|
|
6213
|
+
const { loadSyncConfig: loadSyncConfig2 } = await import("./sync-engine-KTH4K3NG.js");
|
|
6321
6214
|
const syncConfig = await loadSyncConfig2();
|
|
6322
6215
|
if (syncConfig?.lastSync) {
|
|
6323
6216
|
console.log(`Sync: last sync ${formatDate(syncConfig.lastSync)}`);
|
|
@@ -6341,7 +6234,7 @@ Snapshots: ${snapshots.length} (latest: ${latest ? formatDate(latest.capturedAt)
|
|
|
6341
6234
|
if (command === "install-brewbar") {
|
|
6342
6235
|
console.warn(t("cli_brewtuibarLegacyAlias", { legacy: command, current: "install-brew-tui-bar" }));
|
|
6343
6236
|
}
|
|
6344
|
-
const { installBrewTUIBar } = await import("./brew-tui-bar-installer-
|
|
6237
|
+
const { installBrewTUIBar } = await import("./brew-tui-bar-installer-PCHNYMZL.js");
|
|
6345
6238
|
try {
|
|
6346
6239
|
console.log(t("cli_brewtuibarInstalling"));
|
|
6347
6240
|
await installBrewTUIBar(false, arg === "--force");
|
|
@@ -6356,7 +6249,7 @@ Snapshots: ${snapshots.length} (latest: ${latest ? formatDate(latest.capturedAt)
|
|
|
6356
6249
|
if (command === "uninstall-brewbar") {
|
|
6357
6250
|
console.warn(t("cli_brewtuibarLegacyAlias", { legacy: command, current: "uninstall-brew-tui-bar" }));
|
|
6358
6251
|
}
|
|
6359
|
-
const { uninstallBrewTUIBar } = await import("./brew-tui-bar-installer-
|
|
6252
|
+
const { uninstallBrewTUIBar } = await import("./brew-tui-bar-installer-PCHNYMZL.js");
|
|
6360
6253
|
try {
|
|
6361
6254
|
await uninstallBrewTUIBar();
|
|
6362
6255
|
console.log(t("cli_brewtuibarUninstalled"));
|
|
@@ -6366,6 +6259,11 @@ Snapshots: ${snapshots.length} (latest: ${latest ? formatDate(latest.capturedAt)
|
|
|
6366
6259
|
}
|
|
6367
6260
|
return;
|
|
6368
6261
|
}
|
|
6262
|
+
if (command === "doctor") {
|
|
6263
|
+
const { runDoctor } = await import("./doctor-D56LDODR.js");
|
|
6264
|
+
await runDoctor();
|
|
6265
|
+
return;
|
|
6266
|
+
}
|
|
6369
6267
|
if (command === "delete-account") {
|
|
6370
6268
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
6371
6269
|
const answer = await rl.question(t("delete_account_confirm") + " (y/N): ");
|
|
@@ -6386,7 +6284,7 @@ Snapshots: ${snapshots.length} (latest: ${latest ? formatDate(latest.capturedAt)
|
|
|
6386
6284
|
async function ensureBrewTUIBarRunning() {
|
|
6387
6285
|
if (process.platform !== "darwin") return;
|
|
6388
6286
|
await useLicenseStore.getState().initialize();
|
|
6389
|
-
const { syncAndLaunchBrewTUIBar } = await import("./brew-tui-bar-installer-
|
|
6287
|
+
const { syncAndLaunchBrewTUIBar } = await import("./brew-tui-bar-installer-PCHNYMZL.js");
|
|
6390
6288
|
await syncAndLaunchBrewTUIBar();
|
|
6391
6289
|
}
|
|
6392
6290
|
runCli().catch((err) => {
|