@tinyrack/devsync 1.3.0 → 1.4.0
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/README.md +116 -78
- package/dist/cli/base-command.d.ts +3 -0
- package/dist/cli/base-command.d.ts.map +1 -1
- package/dist/cli/base-command.js +7 -1
- package/dist/cli/base-command.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +3 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/index.d.ts +4 -4
- package/dist/cli/commands/index.js +4 -4
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +1 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/{machine → profile}/list.d.ts +1 -1
- package/dist/cli/commands/profile/list.d.ts.map +1 -0
- package/dist/cli/commands/profile/list.js +14 -0
- package/dist/cli/commands/profile/list.js.map +1 -0
- package/dist/cli/commands/{machine → profile}/use.d.ts +2 -2
- package/dist/cli/commands/{machine → profile}/use.d.ts.map +1 -1
- package/dist/cli/commands/profile/use.js +26 -0
- package/dist/cli/commands/profile/use.js.map +1 -0
- package/dist/cli/commands/pull.d.ts +1 -1
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +7 -8
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +6 -7
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/status.d.ts +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +8 -9
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/track.d.ts +1 -1
- package/dist/cli/commands/track.d.ts.map +1 -1
- package/dist/cli/commands/track.js +18 -18
- package/dist/cli/commands/track.js.map +1 -1
- package/dist/cli/commands/untrack.d.ts.map +1 -1
- package/dist/cli/commands/untrack.js +2 -3
- package/dist/cli/commands/untrack.js.map +1 -1
- package/dist/config/global-config.d.ts +7 -7
- package/dist/config/global-config.js +11 -11
- package/dist/config/platform.d.ts +3 -3
- package/dist/config/platform.d.ts.map +1 -1
- package/dist/config/platform.js +1 -1
- package/dist/config/platform.js.map +1 -1
- package/dist/config/sync.d.ts +17 -18
- package/dist/config/sync.d.ts.map +1 -1
- package/dist/config/sync.js +48 -49
- package/dist/config/sync.js.map +1 -1
- package/dist/config/xdg.js +1 -1
- package/dist/config/xdg.js.map +1 -1
- package/dist/lib/output.d.ts +24 -16
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +179 -146
- package/dist/lib/output.js.map +1 -1
- package/dist/services/add.d.ts +3 -4
- package/dist/services/add.d.ts.map +1 -1
- package/dist/services/add.js +38 -40
- package/dist/services/add.js.map +1 -1
- package/dist/services/config-file.d.ts +3 -3
- package/dist/services/config-file.js +3 -3
- package/dist/services/config-file.js.map +1 -1
- package/dist/services/doctor.d.ts +2 -3
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +23 -20
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/filesystem.d.ts +2 -3
- package/dist/services/filesystem.d.ts.map +1 -1
- package/dist/services/filesystem.js +0 -1
- package/dist/services/filesystem.js.map +1 -1
- package/dist/services/forget.d.ts +1 -2
- package/dist/services/forget.d.ts.map +1 -1
- package/dist/services/forget.js +20 -18
- package/dist/services/forget.js.map +1 -1
- package/dist/services/init.d.ts +1 -2
- package/dist/services/init.d.ts.map +1 -1
- package/dist/services/init.js +19 -20
- package/dist/services/init.js.map +1 -1
- package/dist/services/local-materialization.d.ts +1 -1
- package/dist/services/local-materialization.js +4 -4
- package/dist/services/local-snapshot.d.ts +1 -1
- package/dist/services/local-snapshot.js +4 -4
- package/dist/services/local-snapshot.js.map +1 -1
- package/dist/services/paths.d.ts +3 -7
- package/dist/services/paths.d.ts.map +1 -1
- package/dist/services/paths.js +2 -3
- package/dist/services/paths.js.map +1 -1
- package/dist/services/profile.d.ts +39 -0
- package/dist/services/profile.d.ts.map +1 -0
- package/dist/services/profile.js +117 -0
- package/dist/services/profile.js.map +1 -0
- package/dist/services/pull.d.ts +5 -5
- package/dist/services/pull.d.ts.map +1 -1
- package/dist/services/pull.js +15 -12
- package/dist/services/pull.js.map +1 -1
- package/dist/services/push.d.ts +5 -5
- package/dist/services/push.d.ts.map +1 -1
- package/dist/services/push.js +16 -14
- package/dist/services/push.js.map +1 -1
- package/dist/services/repo-artifacts.d.ts +9 -9
- package/dist/services/repo-artifacts.js +22 -22
- package/dist/services/repo-snapshot.js +12 -12
- package/dist/services/runtime.d.ts +11 -20
- package/dist/services/runtime.d.ts.map +1 -1
- package/dist/services/runtime.js +20 -27
- package/dist/services/runtime.js.map +1 -1
- package/dist/services/set.d.ts +7 -9
- package/dist/services/set.d.ts.map +1 -1
- package/dist/services/set.js +24 -24
- package/dist/services/set.js.map +1 -1
- package/dist/services/status.d.ts +5 -7
- package/dist/services/status.d.ts.map +1 -1
- package/dist/services/status.js +16 -14
- package/dist/services/status.js.map +1 -1
- package/package.json +7 -7
- package/dist/cli/commands/machine/list.d.ts.map +0 -1
- package/dist/cli/commands/machine/list.js +0 -12
- package/dist/cli/commands/machine/list.js.map +0 -1
- package/dist/cli/commands/machine/use.js +0 -28
- package/dist/cli/commands/machine/use.js.map +0 -1
- package/dist/services/machine.d.ts +0 -40
- package/dist/services/machine.d.ts.map +0 -1
- package/dist/services/machine.js +0 -113
- package/dist/services/machine.js.map +0 -1
package/dist/services/add.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { resolveConfiguredIdentityFile } from "#app/config/global-config.js";
|
|
2
|
-
import {
|
|
2
|
+
import { normalizeSyncProfileName, readSyncConfig, } from "#app/config/sync.js";
|
|
3
|
+
import { doPathsOverlap } from "#app/lib/path.js";
|
|
3
4
|
import { createSyncConfigDocument, writeValidatedSyncConfig, } from "./config-file.js";
|
|
4
5
|
import { DevsyncError } from "./error.js";
|
|
5
6
|
import { getPathStats } from "./filesystem.js";
|
|
6
|
-
import { buildConfiguredHomeLocalPath, buildRepoPathWithinRoot,
|
|
7
|
-
import { ensureSyncRepository } from "./runtime.js";
|
|
8
|
-
const buildAddEntryCandidate = async (targetPath,
|
|
7
|
+
import { buildConfiguredHomeLocalPath, buildRepoPathWithinRoot, resolveCommandTargetPath, } from "./paths.js";
|
|
8
|
+
import { ensureSyncRepository, resolveSyncPaths } from "./runtime.js";
|
|
9
|
+
const buildAddEntryCandidate = async (targetPath, syncDirectory, homeDirectory, input) => {
|
|
9
10
|
const targetStats = await getPathStats(targetPath);
|
|
10
11
|
if (targetStats === undefined) {
|
|
11
12
|
throw new DevsyncError("Sync target does not exist.", {
|
|
@@ -27,13 +28,10 @@ const buildAddEntryCandidate = async (targetPath, context, input) => {
|
|
|
27
28
|
hint: "Track a regular file, symlink, or directory.",
|
|
28
29
|
});
|
|
29
30
|
})();
|
|
30
|
-
if (doPathsOverlap(targetPath,
|
|
31
|
+
if (doPathsOverlap(targetPath, syncDirectory)) {
|
|
31
32
|
throw new DevsyncError("Sync target overlaps the devsync repository.", {
|
|
32
33
|
code: "TARGET_OVERLAPS_SYNC_DIR",
|
|
33
|
-
details: [
|
|
34
|
-
`Target: ${targetPath}`,
|
|
35
|
-
`Sync directory: ${context.paths.syncDirectory}`,
|
|
36
|
-
],
|
|
34
|
+
details: [`Target: ${targetPath}`, `Sync directory: ${syncDirectory}`],
|
|
37
35
|
hint: "Choose a path outside the devsync sync directory.",
|
|
38
36
|
});
|
|
39
37
|
}
|
|
@@ -48,21 +46,20 @@ const buildAddEntryCandidate = async (targetPath, context, input) => {
|
|
|
48
46
|
hint: "Store age key material outside tracked sync targets.",
|
|
49
47
|
});
|
|
50
48
|
}
|
|
51
|
-
const repoPath = buildRepoPathWithinRoot(targetPath,
|
|
49
|
+
const repoPath = buildRepoPathWithinRoot(targetPath, homeDirectory, "Sync target");
|
|
52
50
|
const configuredLocalPath = buildConfiguredHomeLocalPath(repoPath);
|
|
53
51
|
return {
|
|
54
52
|
configuredLocalPath,
|
|
55
53
|
kind,
|
|
56
54
|
localPath: targetPath,
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
profiles: input.profiles?.map((m) => normalizeSyncProfileName(m)) ?? [],
|
|
56
|
+
profilesExplicit: input.profiles !== undefined,
|
|
59
57
|
mode: input.mode,
|
|
60
58
|
modeExplicit: true,
|
|
61
|
-
name: repoPath,
|
|
62
59
|
repoPath,
|
|
63
60
|
};
|
|
64
61
|
};
|
|
65
|
-
export const trackSyncTarget = async (request,
|
|
62
|
+
export const trackSyncTarget = async (request, environment, cwd) => {
|
|
66
63
|
const target = request.target.trim();
|
|
67
64
|
if (target.length === 0) {
|
|
68
65
|
throw new DevsyncError("Target path is required.", {
|
|
@@ -70,18 +67,19 @@ export const trackSyncTarget = async (request, context) => {
|
|
|
70
67
|
hint: "Pass a file or directory path, for example 'devsync track ~/.gitconfig'.",
|
|
71
68
|
});
|
|
72
69
|
}
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
const { syncDirectory, configPath, homeDirectory } = resolveSyncPaths(environment);
|
|
71
|
+
await ensureSyncRepository(syncDirectory);
|
|
72
|
+
const config = await readSyncConfig(syncDirectory, environment);
|
|
75
73
|
const identityFile = config.age !== undefined
|
|
76
|
-
? resolveConfiguredIdentityFile(config.age.identityFile,
|
|
74
|
+
? resolveConfiguredIdentityFile(config.age.identityFile, environment)
|
|
77
75
|
: undefined;
|
|
78
|
-
const
|
|
79
|
-
request.
|
|
80
|
-
request.
|
|
81
|
-
const
|
|
82
|
-
const candidate = await buildAddEntryCandidate(resolveCommandTargetPath(target,
|
|
76
|
+
const isProfileClear = request.profiles !== undefined &&
|
|
77
|
+
request.profiles.length === 1 &&
|
|
78
|
+
request.profiles[0] === "";
|
|
79
|
+
const effectiveProfiles = isProfileClear ? [] : request.profiles;
|
|
80
|
+
const candidate = await buildAddEntryCandidate(resolveCommandTargetPath(target, environment, cwd), syncDirectory, homeDirectory, {
|
|
83
81
|
identityFile,
|
|
84
|
-
|
|
82
|
+
profiles: effectiveProfiles,
|
|
85
83
|
mode: request.mode,
|
|
86
84
|
});
|
|
87
85
|
const existingEntry = config.entries.find((entry) => {
|
|
@@ -105,24 +103,24 @@ export const trackSyncTarget = async (request, context) => {
|
|
|
105
103
|
...config,
|
|
106
104
|
entries: [...config.entries, candidate],
|
|
107
105
|
});
|
|
108
|
-
await writeValidatedSyncConfig(
|
|
106
|
+
await writeValidatedSyncConfig(syncDirectory, nextConfig, environment);
|
|
109
107
|
return {
|
|
110
108
|
alreadyTracked,
|
|
111
109
|
changed: true,
|
|
112
|
-
configPath
|
|
110
|
+
configPath,
|
|
113
111
|
kind: candidate.kind,
|
|
114
112
|
localPath: candidate.localPath,
|
|
115
|
-
|
|
113
|
+
profiles: candidate.profiles,
|
|
116
114
|
mode: candidate.mode,
|
|
117
115
|
repoPath: candidate.repoPath,
|
|
118
|
-
syncDirectory
|
|
116
|
+
syncDirectory,
|
|
119
117
|
};
|
|
120
118
|
}
|
|
121
119
|
const modeChanged = existingEntry?.mode !== request.mode;
|
|
122
|
-
const
|
|
123
|
-
(existingEntry?.
|
|
124
|
-
!candidate.
|
|
125
|
-
const changed = modeChanged ||
|
|
120
|
+
const profilesChanged = effectiveProfiles !== undefined &&
|
|
121
|
+
(existingEntry?.profiles.length !== candidate.profiles.length ||
|
|
122
|
+
!candidate.profiles.every((m) => existingEntry?.profiles.includes(m)));
|
|
123
|
+
const changed = modeChanged || profilesChanged;
|
|
126
124
|
if (changed) {
|
|
127
125
|
const nextConfig = createSyncConfigDocument({
|
|
128
126
|
...config,
|
|
@@ -133,29 +131,29 @@ export const trackSyncTarget = async (request, context) => {
|
|
|
133
131
|
return {
|
|
134
132
|
...entry,
|
|
135
133
|
...(modeChanged ? { mode: request.mode } : {}),
|
|
136
|
-
...(
|
|
134
|
+
...(profilesChanged
|
|
137
135
|
? {
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
profiles: candidate.profiles,
|
|
137
|
+
profilesExplicit: candidate.profilesExplicit,
|
|
140
138
|
}
|
|
141
139
|
: {}),
|
|
142
140
|
};
|
|
143
141
|
}),
|
|
144
142
|
});
|
|
145
|
-
await writeValidatedSyncConfig(
|
|
143
|
+
await writeValidatedSyncConfig(syncDirectory, nextConfig, environment);
|
|
146
144
|
}
|
|
147
145
|
return {
|
|
148
146
|
alreadyTracked,
|
|
149
147
|
changed,
|
|
150
|
-
configPath
|
|
148
|
+
configPath,
|
|
151
149
|
kind: candidate.kind,
|
|
152
150
|
localPath: candidate.localPath,
|
|
153
|
-
|
|
154
|
-
? candidate.
|
|
155
|
-
: (existingEntry?.
|
|
151
|
+
profiles: profilesChanged
|
|
152
|
+
? candidate.profiles
|
|
153
|
+
: (existingEntry?.profiles ?? []),
|
|
156
154
|
mode: modeChanged ? request.mode : (existingEntry?.mode ?? request.mode),
|
|
157
155
|
repoPath: candidate.repoPath,
|
|
158
|
-
syncDirectory
|
|
156
|
+
syncDirectory,
|
|
159
157
|
};
|
|
160
158
|
};
|
|
161
159
|
//# sourceMappingURL=add.js.map
|
package/dist/services/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/services/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EACL,wBAAwB,EAExB,cAAc,GAGf,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/services/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare const sortSyncConfigEntries: (entries: readonly SyncConfig["entri
|
|
|
7
7
|
mac?: string | undefined;
|
|
8
8
|
linux?: string | undefined;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
profiles?: string[] | undefined;
|
|
11
11
|
mode?: "normal" | "secret" | "ignore" | undefined;
|
|
12
12
|
}[];
|
|
13
13
|
export declare const createSyncConfigDocument: (config: ResolvedSyncConfig) => SyncConfig;
|
|
@@ -21,7 +21,7 @@ export declare const writeValidatedSyncConfig: (syncDirectory: string, config: S
|
|
|
21
21
|
mac?: string | undefined;
|
|
22
22
|
linux?: string | undefined;
|
|
23
23
|
};
|
|
24
|
-
|
|
24
|
+
profiles?: string[] | undefined;
|
|
25
25
|
mode?: "normal" | "secret" | "ignore" | undefined;
|
|
26
26
|
}[];
|
|
27
27
|
} | {
|
|
@@ -38,7 +38,7 @@ export declare const writeValidatedSyncConfig: (syncDirectory: string, config: S
|
|
|
38
38
|
mac?: string | undefined;
|
|
39
39
|
linux?: string | undefined;
|
|
40
40
|
};
|
|
41
|
-
|
|
41
|
+
profiles?: string[] | undefined;
|
|
42
42
|
mode?: "normal" | "secret" | "ignore" | undefined;
|
|
43
43
|
}[];
|
|
44
44
|
}>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveDefaultLocalPath } from "#app/config/platform.js";
|
|
2
2
|
import { formatSyncConfig, parseSyncConfig, resolveSyncConfigFilePath, } from "#app/config/sync.js";
|
|
3
3
|
import { writeTextFileAtomically } from "./filesystem.js";
|
|
4
4
|
export const sortSyncConfigEntries = (entries) => {
|
|
5
5
|
return [...entries].sort((left, right) => {
|
|
6
|
-
return
|
|
6
|
+
return resolveDefaultLocalPath(left.localPath).localeCompare(resolveDefaultLocalPath(right.localPath));
|
|
7
7
|
});
|
|
8
8
|
};
|
|
9
9
|
export const createSyncConfigDocument = (config) => {
|
|
@@ -11,7 +11,7 @@ export const createSyncConfigDocument = (config) => {
|
|
|
11
11
|
kind: entry.kind,
|
|
12
12
|
localPath: entry.configuredLocalPath,
|
|
13
13
|
...(entry.modeExplicit ? { mode: entry.mode } : {}),
|
|
14
|
-
...(entry.
|
|
14
|
+
...(entry.profilesExplicit ? { profiles: [...entry.profiles] } : {}),
|
|
15
15
|
})));
|
|
16
16
|
return {
|
|
17
17
|
version: 6,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/services/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/services/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,eAAe,EAEf,yBAAyB,GAE1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAiD,EACjD,EAAE;IACF,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,OAAO,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAC1D,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CACzC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,MAA0B,EACd,EAAE;IACd,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAiC,EAAE,CAAC,CAAC;QAC5D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,mBAAmB;QACpC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,GAAG,EAAE;oBACH,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY;oBACrC,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;iBACvC;aACF,CAAC;QACN,OAAO;KACM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,aAAqB,EACrB,MAAkB,EAClB,WAA8B,EAC9B,EAAE;IACF,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAE5D,MAAM,uBAAuB,CAC3B,yBAAyB,CAAC,aAAa,CAAC,EACxC,gBAAgB,CAAC,UAAU,CAAC,CAC7B,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { type SyncContext } from "./runtime.js";
|
|
2
1
|
export type DoctorCheckLevel = "fail" | "ok" | "warn";
|
|
3
2
|
export type DoctorCheck = Readonly<{
|
|
3
|
+
checkId: string;
|
|
4
4
|
detail: string;
|
|
5
5
|
level: DoctorCheckLevel;
|
|
6
|
-
name: string;
|
|
7
6
|
}>;
|
|
8
7
|
export type SyncDoctorResult = Readonly<{
|
|
9
8
|
checks: readonly DoctorCheck[];
|
|
@@ -12,5 +11,5 @@ export type SyncDoctorResult = Readonly<{
|
|
|
12
11
|
hasWarnings: boolean;
|
|
13
12
|
syncDirectory: string;
|
|
14
13
|
}>;
|
|
15
|
-
export declare const runSyncDoctor: (
|
|
14
|
+
export declare const runSyncDoctor: (environment: NodeJS.ProcessEnv) => Promise<SyncDoctorResult>;
|
|
16
15
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAoBH,eAAO,MAAM,aAAa,GACxB,aAAa,MAAM,CAAC,UAAU,KAC7B,OAAO,CAAC,gBAAgB,CA8G1B,CAAC"}
|
package/dist/services/doctor.js
CHANGED
|
@@ -1,45 +1,48 @@
|
|
|
1
|
+
import { resolveSyncConfigFilePath } from "#app/config/sync.js";
|
|
1
2
|
import { pathExists } from "./filesystem.js";
|
|
2
3
|
import { ensureRepository } from "./git.js";
|
|
3
|
-
import { loadSyncConfig, } from "./runtime.js";
|
|
4
|
-
const ok = (
|
|
4
|
+
import { loadSyncConfig, resolveSyncPaths, } from "./runtime.js";
|
|
5
|
+
const ok = (checkId, detail) => ({
|
|
6
|
+
checkId,
|
|
5
7
|
detail,
|
|
6
8
|
level: "ok",
|
|
7
|
-
name,
|
|
8
9
|
});
|
|
9
|
-
const warn = (
|
|
10
|
+
const warn = (checkId, detail) => ({
|
|
11
|
+
checkId,
|
|
10
12
|
detail,
|
|
11
13
|
level: "warn",
|
|
12
|
-
name,
|
|
13
14
|
});
|
|
14
|
-
const fail = (
|
|
15
|
+
const fail = (checkId, detail) => ({
|
|
16
|
+
checkId,
|
|
15
17
|
detail,
|
|
16
18
|
level: "fail",
|
|
17
|
-
name,
|
|
18
19
|
});
|
|
19
|
-
export const runSyncDoctor = async (
|
|
20
|
+
export const runSyncDoctor = async (environment) => {
|
|
21
|
+
const { syncDirectory } = resolveSyncPaths(environment);
|
|
22
|
+
const configPath = resolveSyncConfigFilePath(syncDirectory);
|
|
20
23
|
const checks = [];
|
|
21
24
|
try {
|
|
22
|
-
await ensureRepository(
|
|
25
|
+
await ensureRepository(syncDirectory);
|
|
23
26
|
checks.push(ok("git", "Sync directory is a git repository."));
|
|
24
27
|
}
|
|
25
28
|
catch (error) {
|
|
26
29
|
checks.push(fail("git", error instanceof Error ? error.message : "Git repository check failed."));
|
|
27
30
|
return {
|
|
28
31
|
checks,
|
|
29
|
-
configPath
|
|
32
|
+
configPath,
|
|
30
33
|
hasFailures: true,
|
|
31
34
|
hasWarnings: false,
|
|
32
|
-
syncDirectory
|
|
35
|
+
syncDirectory,
|
|
33
36
|
};
|
|
34
37
|
}
|
|
35
38
|
let config;
|
|
36
39
|
try {
|
|
37
|
-
const { effectiveConfig, fullConfig } = await loadSyncConfig(
|
|
40
|
+
const { effectiveConfig, fullConfig } = await loadSyncConfig(syncDirectory, environment);
|
|
38
41
|
config = effectiveConfig;
|
|
39
42
|
checks.push(ok("config", `Loaded config with ${fullConfig.entries.length} entries and ${effectiveConfig.age.recipients.length} recipients.`));
|
|
40
|
-
checks.push(ok("
|
|
41
|
-
? "No active
|
|
42
|
-
: `Active
|
|
43
|
+
checks.push(ok("profiles", effectiveConfig.activeProfile === undefined
|
|
44
|
+
? "No active profile configured."
|
|
45
|
+
: `Active profile: ${effectiveConfig.activeProfile}.`));
|
|
43
46
|
}
|
|
44
47
|
catch (error) {
|
|
45
48
|
checks.push(fail("config", error instanceof Error
|
|
@@ -47,10 +50,10 @@ export const runSyncDoctor = async (context) => {
|
|
|
47
50
|
: "Sync configuration could not be read."));
|
|
48
51
|
return {
|
|
49
52
|
checks,
|
|
50
|
-
configPath
|
|
53
|
+
configPath,
|
|
51
54
|
hasFailures: true,
|
|
52
55
|
hasWarnings: false,
|
|
53
|
-
syncDirectory
|
|
56
|
+
syncDirectory,
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
checks.push((await pathExists(config.age.identityFile))
|
|
@@ -60,7 +63,7 @@ export const runSyncDoctor = async (context) => {
|
|
|
60
63
|
? warn("entries", "No sync entries are configured yet.")
|
|
61
64
|
: ok("entries", `Tracked ${config.entries.length} sync entries.`));
|
|
62
65
|
const missingEntries = config.entries.filter((entry) => {
|
|
63
|
-
return !
|
|
66
|
+
return !environment || entry.localPath.length > 0;
|
|
64
67
|
});
|
|
65
68
|
let missingCount = 0;
|
|
66
69
|
for (const entry of missingEntries) {
|
|
@@ -75,10 +78,10 @@ export const runSyncDoctor = async (context) => {
|
|
|
75
78
|
const hasWarnings = checks.some((check) => check.level === "warn");
|
|
76
79
|
return {
|
|
77
80
|
checks,
|
|
78
|
-
configPath
|
|
81
|
+
configPath,
|
|
79
82
|
hasFailures,
|
|
80
83
|
hasWarnings,
|
|
81
|
-
syncDirectory
|
|
84
|
+
syncDirectory,
|
|
82
85
|
};
|
|
83
86
|
};
|
|
84
87
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAEL,cAAc,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { lstat } from "node:fs/promises";
|
|
2
|
-
export { buildExecutableMode, isExecutableMode } from "#app/lib/file-mode.js";
|
|
3
2
|
export declare const pathExists: (path: string) => Promise<boolean>;
|
|
4
|
-
export declare const getPathStats: (path: string) => Promise<import("
|
|
5
|
-
export declare const listDirectoryEntries: (path: string) => Promise<import("
|
|
3
|
+
export declare const getPathStats: (path: string) => Promise<import("fs").Stats | undefined>;
|
|
4
|
+
export declare const listDirectoryEntries: (path: string) => Promise<import("fs").Dirent<string>[]>;
|
|
6
5
|
export declare const writeFileNode: (path: string, node: Readonly<{
|
|
7
6
|
contents: string | Uint8Array;
|
|
8
7
|
executable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/services/filesystem.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,EAUN,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/services/filesystem.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,EAUN,MAAM,kBAAkB,CAAC;AAO1B,eAAO,MAAM,UAAU,GAAU,MAAM,MAAM,qBAY5C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,4CAU9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,2CAMtD,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,MAAM,QAAQ,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC,kBAKH,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,MAAM,MAAM,EAAE,YAAY,MAAM,kBAItE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,YAAY,MAAM,EAClB,QAAQ,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,kBAiC1C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,UAAU,MAAM,kBA6BjB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,YAAY,MAAM,kBAc5D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,YAAY,MAAM,EAClB,UAAU,MAAM,kBAcjB,CAAC"}
|
|
@@ -2,7 +2,6 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { access, chmod, lstat, mkdir, mkdtemp, readdir, readFile, readlink, rename, rm, symlink, writeFile, } from "node:fs/promises";
|
|
3
3
|
import { basename, dirname, join } from "node:path";
|
|
4
4
|
import { buildExecutableMode, isExecutableMode } from "#app/lib/file-mode.js";
|
|
5
|
-
export { buildExecutableMode, isExecutableMode } from "#app/lib/file-mode.js";
|
|
6
5
|
import { DevsyncError } from "./error.js";
|
|
7
6
|
export const pathExists = async (path) => {
|
|
8
7
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/services/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,EAAE,EACF,OAAO,EACP,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/services/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,EAAE,EACF,OAAO,EACP,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,IAAY,EACZ,IAGE,EACF,EAAE;IACF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,UAAkB,EAAE,EAAE;IACzE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAAkB,EAClB,UAAkB,EAClB,KAAyC,EACzC,EAAE;IACF,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvD,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAEvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,kBAAkB,CACtB,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,EAC5B,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAC7B,CAAC;QACJ,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;QACjC,MAAM,gBAAgB,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAE/D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,YAAY,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,aAAa,CAAC,UAAU,EAAE;QAC9B,QAAQ,EAAE,MAAM,QAAQ,CAAC,UAAU,CAAC;QACpC,UAAU,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,UAAkB,EAClB,QAAgB,EAChB,EAAE;IACF,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,CAAC,UAAU,CAAC,EACnB,IAAI,QAAQ,CAAC,UAAU,CAAC,wBAAwB,UAAU,EAAE,EAAE,CAC/D,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,CAAC;QACH,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACrC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEnC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,WAAW,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,CAAC,UAAU,CAAC,EACnB,IAAI,QAAQ,CAAC,UAAU,CAAC,wBAAwB,UAAU,EAAE,EAAE,CAC/D,CAAC;IAEF,MAAM,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAkB,EAClB,QAAgB,EAChB,EAAE;IACF,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,MAAM,OAAO,CACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACpE,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type SyncContext } from "./runtime.js";
|
|
2
1
|
export type SyncForgetRequest = Readonly<{
|
|
3
2
|
target: string;
|
|
4
3
|
}>;
|
|
@@ -10,5 +9,5 @@ export type SyncForgetResult = Readonly<{
|
|
|
10
9
|
secretArtifactCount: number;
|
|
11
10
|
syncDirectory: string;
|
|
12
11
|
}>;
|
|
13
|
-
export declare const forgetSyncTarget: (request: SyncForgetRequest,
|
|
12
|
+
export declare const forgetSyncTarget: (request: SyncForgetRequest, environment: NodeJS.ProcessEnv, cwd: string) => Promise<SyncForgetResult>;
|
|
14
13
|
//# sourceMappingURL=forget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/services/forget.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/services/forget.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AA+IH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,iBAAiB,EAC1B,aAAa,MAAM,CAAC,UAAU,EAC9B,KAAK,MAAM,KACV,OAAO,CAAC,gBAAgB,CAsC1B,CAAC"}
|
package/dist/services/forget.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { readdir, rm } from "node:fs/promises";
|
|
2
2
|
import { dirname, join, posix } from "node:path";
|
|
3
3
|
import { readSyncConfig, resolveSyncArtifactsDirectoryPath, } from "#app/config/sync.js";
|
|
4
|
+
import { isPathEqualOrNested } from "#app/lib/path.js";
|
|
4
5
|
import { createSyncConfigDocument, writeValidatedSyncConfig, } from "./config-file.js";
|
|
5
6
|
import { DevsyncError } from "./error.js";
|
|
6
7
|
import { getPathStats, listDirectoryEntries, removePathAtomically, } from "./filesystem.js";
|
|
7
|
-
import {
|
|
8
|
+
import { resolveTrackedEntry } from "./paths.js";
|
|
8
9
|
import { collectArtifactNamespaces, isSecretArtifactPath, resolveArtifactRelativePath, resolveEntryArtifactPath, } from "./repo-artifacts.js";
|
|
9
|
-
import { ensureSyncRepository } from "./runtime.js";
|
|
10
|
+
import { ensureSyncRepository, resolveSyncPaths } from "./runtime.js";
|
|
10
11
|
const collectRepoArtifactCounts = async (targetPath, counts, relativePath) => {
|
|
11
12
|
const stats = await getPathStats(targetPath);
|
|
12
13
|
if (stats === undefined) {
|
|
@@ -34,16 +35,16 @@ const collectEntryArtifactCounts = async (syncDirectory, entry) => {
|
|
|
34
35
|
secret: 0,
|
|
35
36
|
};
|
|
36
37
|
const namespaces = collectArtifactNamespaces([entry]);
|
|
37
|
-
for (const
|
|
38
|
-
await collectRepoArtifactCounts(resolveEntryArtifactPath(artifactsRoot, entry,
|
|
38
|
+
for (const profile of namespaces) {
|
|
39
|
+
await collectRepoArtifactCounts(resolveEntryArtifactPath(artifactsRoot, entry, profile), counts, resolveArtifactRelativePath({
|
|
39
40
|
category: "plain",
|
|
40
|
-
|
|
41
|
+
profile,
|
|
41
42
|
repoPath: entry.repoPath,
|
|
42
43
|
}));
|
|
43
44
|
if (entry.kind !== "directory") {
|
|
44
45
|
const secretRelativePath = resolveArtifactRelativePath({
|
|
45
46
|
category: "secret",
|
|
46
|
-
|
|
47
|
+
profile,
|
|
47
48
|
repoPath: entry.repoPath,
|
|
48
49
|
});
|
|
49
50
|
await collectRepoArtifactCounts(join(artifactsRoot, ...secretRelativePath.split("/")), counts, secretRelativePath);
|
|
@@ -77,14 +78,14 @@ const pruneEmptyParentDirectories = async (startPath, rootPath) => {
|
|
|
77
78
|
const removeTrackedEntryArtifacts = async (syncDirectory, entry) => {
|
|
78
79
|
const artifactsRoot = resolveSyncArtifactsDirectoryPath(syncDirectory);
|
|
79
80
|
const namespaces = collectArtifactNamespaces([entry]);
|
|
80
|
-
for (const
|
|
81
|
-
const plainPath = resolveEntryArtifactPath(artifactsRoot, entry,
|
|
81
|
+
for (const profile of namespaces) {
|
|
82
|
+
const plainPath = resolveEntryArtifactPath(artifactsRoot, entry, profile);
|
|
82
83
|
await removePathAtomically(plainPath);
|
|
83
84
|
await pruneEmptyParentDirectories(dirname(plainPath), artifactsRoot);
|
|
84
85
|
if (entry.kind !== "directory") {
|
|
85
86
|
const secretPath = join(artifactsRoot, ...resolveArtifactRelativePath({
|
|
86
87
|
category: "secret",
|
|
87
|
-
|
|
88
|
+
profile,
|
|
88
89
|
repoPath: entry.repoPath,
|
|
89
90
|
}).split("/"));
|
|
90
91
|
await removePathAtomically(secretPath);
|
|
@@ -92,33 +93,34 @@ const removeTrackedEntryArtifacts = async (syncDirectory, entry) => {
|
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
};
|
|
95
|
-
export const forgetSyncTarget = async (request,
|
|
96
|
+
export const forgetSyncTarget = async (request, environment, cwd) => {
|
|
96
97
|
const target = request.target.trim();
|
|
97
98
|
if (target.length === 0) {
|
|
98
99
|
throw new DevsyncError("Target path is required.");
|
|
99
100
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const
|
|
101
|
+
const { syncDirectory, configPath } = resolveSyncPaths(environment);
|
|
102
|
+
await ensureSyncRepository(syncDirectory);
|
|
103
|
+
const config = await readSyncConfig(syncDirectory, environment);
|
|
104
|
+
const entry = resolveTrackedEntry(target, config.entries, environment, cwd);
|
|
103
105
|
if (entry === undefined) {
|
|
104
106
|
throw new DevsyncError(`No tracked sync entry matches: ${target}`);
|
|
105
107
|
}
|
|
106
|
-
const { plainArtifactCount, secretArtifactCount } = await collectEntryArtifactCounts(
|
|
108
|
+
const { plainArtifactCount, secretArtifactCount } = await collectEntryArtifactCounts(syncDirectory, entry);
|
|
107
109
|
const nextConfig = createSyncConfigDocument({
|
|
108
110
|
...config,
|
|
109
111
|
entries: config.entries.filter((configEntry) => {
|
|
110
112
|
return configEntry.repoPath !== entry.repoPath;
|
|
111
113
|
}),
|
|
112
114
|
});
|
|
113
|
-
await writeValidatedSyncConfig(
|
|
114
|
-
await removeTrackedEntryArtifacts(
|
|
115
|
+
await writeValidatedSyncConfig(syncDirectory, nextConfig, environment);
|
|
116
|
+
await removeTrackedEntryArtifacts(syncDirectory, entry);
|
|
115
117
|
return {
|
|
116
|
-
configPath
|
|
118
|
+
configPath,
|
|
117
119
|
localPath: entry.localPath,
|
|
118
120
|
plainArtifactCount,
|
|
119
121
|
repoPath: entry.repoPath,
|
|
120
122
|
secretArtifactCount,
|
|
121
|
-
syncDirectory
|
|
123
|
+
syncDirectory,
|
|
122
124
|
};
|
|
123
125
|
};
|
|
124
126
|
//# sourceMappingURL=forget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/services/forget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAEL,cAAc,EACd,iCAAiC,GAClC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/services/forget.ts"],"names":[],"mappings":"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"}
|
package/dist/services/init.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type SyncContext } from "./runtime.js";
|
|
2
1
|
export type SyncInitRequest = Readonly<{
|
|
3
2
|
identityFile?: string;
|
|
4
3
|
recipients: readonly string[];
|
|
@@ -15,5 +14,5 @@ export type SyncInitResult = Readonly<{
|
|
|
15
14
|
recipientCount: number;
|
|
16
15
|
syncDirectory: string;
|
|
17
16
|
}>;
|
|
18
|
-
export declare const initializeSync: (request: SyncInitRequest,
|
|
17
|
+
export declare const initializeSync: (request: SyncInitRequest, environment: NodeJS.ProcessEnv) => Promise<SyncInitResult>;
|
|
19
18
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAqJH,eAAO,MAAM,cAAc,GACzB,SAAS,eAAe,EACxB,aAAa,MAAM,CAAC,UAAU,KAC7B,OAAO,CAAC,cAAc,CAoIxB,CAAC"}
|