@tinyrack/dotweave 0.39.4

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 (246) hide show
  1. package/bin/index.js +5 -0
  2. package/dist/application.d.ts +5 -0
  3. package/dist/application.d.ts.map +1 -0
  4. package/dist/application.js +86 -0
  5. package/dist/application.js.map +1 -0
  6. package/dist/cli/autocomplete.d.ts +7 -0
  7. package/dist/cli/autocomplete.d.ts.map +1 -0
  8. package/dist/cli/autocomplete.js +62 -0
  9. package/dist/cli/autocomplete.js.map +1 -0
  10. package/dist/cli/cd.d.ts +4 -0
  11. package/dist/cli/cd.d.ts.map +1 -0
  12. package/dist/cli/cd.js +23 -0
  13. package/dist/cli/cd.js.map +1 -0
  14. package/dist/cli/doctor.d.ts +4 -0
  15. package/dist/cli/doctor.d.ts.map +1 -0
  16. package/dist/cli/doctor.js +92 -0
  17. package/dist/cli/doctor.js.map +1 -0
  18. package/dist/cli/index.d.ts +4 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +22 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/init.d.ts +4 -0
  23. package/dist/cli/init.d.ts.map +1 -0
  24. package/dist/cli/init.js +110 -0
  25. package/dist/cli/init.js.map +1 -0
  26. package/dist/cli/profile/index.d.ts +3 -0
  27. package/dist/cli/profile/index.d.ts.map +1 -0
  28. package/dist/cli/profile/index.js +15 -0
  29. package/dist/cli/profile/index.js.map +1 -0
  30. package/dist/cli/profile/list.d.ts +4 -0
  31. package/dist/cli/profile/list.d.ts.map +1 -0
  32. package/dist/cli/profile/list.js +42 -0
  33. package/dist/cli/profile/list.js.map +1 -0
  34. package/dist/cli/profile/use.d.ts +4 -0
  35. package/dist/cli/profile/use.d.ts.map +1 -0
  36. package/dist/cli/profile/use.js +49 -0
  37. package/dist/cli/profile/use.js.map +1 -0
  38. package/dist/cli/pull.d.ts +4 -0
  39. package/dist/cli/pull.d.ts.map +1 -0
  40. package/dist/cli/pull.js +107 -0
  41. package/dist/cli/pull.js.map +1 -0
  42. package/dist/cli/push.d.ts +4 -0
  43. package/dist/cli/push.d.ts.map +1 -0
  44. package/dist/cli/push.js +49 -0
  45. package/dist/cli/push.js.map +1 -0
  46. package/dist/cli/root-commands.d.ts +13 -0
  47. package/dist/cli/root-commands.d.ts.map +1 -0
  48. package/dist/cli/root-commands.js +25 -0
  49. package/dist/cli/root-commands.js.map +1 -0
  50. package/dist/cli/status.d.ts +4 -0
  51. package/dist/cli/status.d.ts.map +1 -0
  52. package/dist/cli/status.js +132 -0
  53. package/dist/cli/status.js.map +1 -0
  54. package/dist/cli/track.d.ts +4 -0
  55. package/dist/cli/track.d.ts.map +1 -0
  56. package/dist/cli/track.js +133 -0
  57. package/dist/cli/track.js.map +1 -0
  58. package/dist/cli/untrack.d.ts +4 -0
  59. package/dist/cli/untrack.d.ts.map +1 -0
  60. package/dist/cli/untrack.js +40 -0
  61. package/dist/cli/untrack.js.map +1 -0
  62. package/dist/config/constants.d.ts +31 -0
  63. package/dist/config/constants.d.ts.map +1 -0
  64. package/dist/config/constants.js +33 -0
  65. package/dist/config/constants.js.map +1 -0
  66. package/dist/config/global-config.d.ts +21 -0
  67. package/dist/config/global-config.d.ts.map +1 -0
  68. package/dist/config/global-config.js +89 -0
  69. package/dist/config/global-config.js.map +1 -0
  70. package/dist/config/identity-file.d.ts +9 -0
  71. package/dist/config/identity-file.d.ts.map +1 -0
  72. package/dist/config/identity-file.js +48 -0
  73. package/dist/config/identity-file.js.map +1 -0
  74. package/dist/config/migration.d.ts +9 -0
  75. package/dist/config/migration.d.ts.map +1 -0
  76. package/dist/config/migration.js +61 -0
  77. package/dist/config/migration.js.map +1 -0
  78. package/dist/config/platform.d.ts +12 -0
  79. package/dist/config/platform.d.ts.map +1 -0
  80. package/dist/config/platform.js +25 -0
  81. package/dist/config/platform.js.map +1 -0
  82. package/dist/config/runtime-env.d.ts +7 -0
  83. package/dist/config/runtime-env.d.ts.map +1 -0
  84. package/dist/config/runtime-env.js +31 -0
  85. package/dist/config/runtime-env.js.map +1 -0
  86. package/dist/config/sync-entry.d.ts +14 -0
  87. package/dist/config/sync-entry.d.ts.map +1 -0
  88. package/dist/config/sync-entry.js +99 -0
  89. package/dist/config/sync-entry.js.map +1 -0
  90. package/dist/config/sync-schema.d.ts +146 -0
  91. package/dist/config/sync-schema.d.ts.map +1 -0
  92. package/dist/config/sync-schema.js +392 -0
  93. package/dist/config/sync-schema.js.map +1 -0
  94. package/dist/config/sync.d.ts +8 -0
  95. package/dist/config/sync.d.ts.map +1 -0
  96. package/dist/config/sync.js +53 -0
  97. package/dist/config/sync.js.map +1 -0
  98. package/dist/config/xdg.d.ts +10 -0
  99. package/dist/config/xdg.d.ts.map +1 -0
  100. package/dist/config/xdg.js +90 -0
  101. package/dist/config/xdg.js.map +1 -0
  102. package/dist/index.d.ts +3 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +4 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/lib/content.d.ts +5 -0
  107. package/dist/lib/content.d.ts.map +1 -0
  108. package/dist/lib/content.js +29 -0
  109. package/dist/lib/content.js.map +1 -0
  110. package/dist/lib/crypto.d.ts +45 -0
  111. package/dist/lib/crypto.d.ts.map +1 -0
  112. package/dist/lib/crypto.js +130 -0
  113. package/dist/lib/crypto.js.map +1 -0
  114. package/dist/lib/env.d.ts +13 -0
  115. package/dist/lib/env.d.ts.map +1 -0
  116. package/dist/lib/env.js +50 -0
  117. package/dist/lib/env.js.map +1 -0
  118. package/dist/lib/error.d.ts +22 -0
  119. package/dist/lib/error.d.ts.map +1 -0
  120. package/dist/lib/error.js +50 -0
  121. package/dist/lib/error.js.map +1 -0
  122. package/dist/lib/file-mode.d.ts +36 -0
  123. package/dist/lib/file-mode.d.ts.map +1 -0
  124. package/dist/lib/file-mode.js +55 -0
  125. package/dist/lib/file-mode.js.map +1 -0
  126. package/dist/lib/filesystem.d.ts +60 -0
  127. package/dist/lib/filesystem.d.ts.map +1 -0
  128. package/dist/lib/filesystem.js +190 -0
  129. package/dist/lib/filesystem.js.map +1 -0
  130. package/dist/lib/git.d.ts +23 -0
  131. package/dist/lib/git.d.ts.map +1 -0
  132. package/dist/lib/git.js +162 -0
  133. package/dist/lib/git.js.map +1 -0
  134. package/dist/lib/jsonc.d.ts +8 -0
  135. package/dist/lib/jsonc.d.ts.map +1 -0
  136. package/dist/lib/jsonc.js +78 -0
  137. package/dist/lib/jsonc.js.map +1 -0
  138. package/dist/lib/path.d.ts +21 -0
  139. package/dist/lib/path.d.ts.map +1 -0
  140. package/dist/lib/path.js +44 -0
  141. package/dist/lib/path.js.map +1 -0
  142. package/dist/lib/promise.d.ts +10 -0
  143. package/dist/lib/promise.d.ts.map +1 -0
  144. package/dist/lib/promise.js +25 -0
  145. package/dist/lib/promise.js.map +1 -0
  146. package/dist/lib/string.d.ts +6 -0
  147. package/dist/lib/string.d.ts.map +1 -0
  148. package/dist/lib/string.js +8 -0
  149. package/dist/lib/string.js.map +1 -0
  150. package/dist/lib/validation.d.ts +7 -0
  151. package/dist/lib/validation.d.ts.map +1 -0
  152. package/dist/lib/validation.js +13 -0
  153. package/dist/lib/validation.js.map +1 -0
  154. package/dist/lib/version.d.ts +2 -0
  155. package/dist/lib/version.d.ts.map +1 -0
  156. package/dist/lib/version.js +4 -0
  157. package/dist/lib/version.js.map +1 -0
  158. package/dist/migrations/global-v3.d.ts +3 -0
  159. package/dist/migrations/global-v3.d.ts.map +1 -0
  160. package/dist/migrations/global-v3.js +5 -0
  161. package/dist/migrations/global-v3.js.map +1 -0
  162. package/dist/services/autocomplete.d.ts +5 -0
  163. package/dist/services/autocomplete.d.ts.map +1 -0
  164. package/dist/services/autocomplete.js +185 -0
  165. package/dist/services/autocomplete.js.map +1 -0
  166. package/dist/services/config-file.d.ts +73 -0
  167. package/dist/services/config-file.d.ts.map +1 -0
  168. package/dist/services/config-file.js +40 -0
  169. package/dist/services/config-file.js.map +1 -0
  170. package/dist/services/doctor.d.ts +16 -0
  171. package/dist/services/doctor.d.ts.map +1 -0
  172. package/dist/services/doctor.js +126 -0
  173. package/dist/services/doctor.js.map +1 -0
  174. package/dist/services/init.d.ts +24 -0
  175. package/dist/services/init.d.ts.map +1 -0
  176. package/dist/services/init.js +265 -0
  177. package/dist/services/init.js.map +1 -0
  178. package/dist/services/local-materialization.d.ts +30 -0
  179. package/dist/services/local-materialization.d.ts.map +1 -0
  180. package/dist/services/local-materialization.js +451 -0
  181. package/dist/services/local-materialization.js.map +1 -0
  182. package/dist/services/local-snapshot.d.ts +26 -0
  183. package/dist/services/local-snapshot.d.ts.map +1 -0
  184. package/dist/services/local-snapshot.js +119 -0
  185. package/dist/services/local-snapshot.js.map +1 -0
  186. package/dist/services/paths.d.ts +8 -0
  187. package/dist/services/paths.d.ts.map +1 -0
  188. package/dist/services/paths.js +71 -0
  189. package/dist/services/paths.js.map +1 -0
  190. package/dist/services/profile.d.ts +39 -0
  191. package/dist/services/profile.d.ts.map +1 -0
  192. package/dist/services/profile.js +124 -0
  193. package/dist/services/profile.js.map +1 -0
  194. package/dist/services/pull.d.ts +38 -0
  195. package/dist/services/pull.d.ts.map +1 -0
  196. package/dist/services/pull.js +148 -0
  197. package/dist/services/pull.js.map +1 -0
  198. package/dist/services/push.d.ts +38 -0
  199. package/dist/services/push.d.ts.map +1 -0
  200. package/dist/services/push.js +120 -0
  201. package/dist/services/push.js.map +1 -0
  202. package/dist/services/repo-artifacts.d.ts +52 -0
  203. package/dist/services/repo-artifacts.d.ts.map +1 -0
  204. package/dist/services/repo-artifacts.js +325 -0
  205. package/dist/services/repo-artifacts.js.map +1 -0
  206. package/dist/services/repo-snapshot.d.ts +7 -0
  207. package/dist/services/repo-snapshot.d.ts.map +1 -0
  208. package/dist/services/repo-snapshot.js +181 -0
  209. package/dist/services/repo-snapshot.js.map +1 -0
  210. package/dist/services/runtime.d.ts +30 -0
  211. package/dist/services/runtime.d.ts.map +1 -0
  212. package/dist/services/runtime.js +71 -0
  213. package/dist/services/runtime.js.map +1 -0
  214. package/dist/services/set.d.ts +41 -0
  215. package/dist/services/set.d.ts.map +1 -0
  216. package/dist/services/set.js +288 -0
  217. package/dist/services/set.js.map +1 -0
  218. package/dist/services/status.d.ts +41 -0
  219. package/dist/services/status.d.ts.map +1 -0
  220. package/dist/services/status.js +87 -0
  221. package/dist/services/status.js.map +1 -0
  222. package/dist/services/terminal/cli-runtime.d.ts +18 -0
  223. package/dist/services/terminal/cli-runtime.d.ts.map +1 -0
  224. package/dist/services/terminal/cli-runtime.js +19 -0
  225. package/dist/services/terminal/cli-runtime.js.map +1 -0
  226. package/dist/services/terminal/logger.d.ts +9 -0
  227. package/dist/services/terminal/logger.d.ts.map +1 -0
  228. package/dist/services/terminal/logger.js +15 -0
  229. package/dist/services/terminal/logger.js.map +1 -0
  230. package/dist/services/terminal/path-completion.d.ts +3 -0
  231. package/dist/services/terminal/path-completion.d.ts.map +1 -0
  232. package/dist/services/terminal/path-completion.js +108 -0
  233. package/dist/services/terminal/path-completion.js.map +1 -0
  234. package/dist/services/terminal/shell.d.ts +24 -0
  235. package/dist/services/terminal/shell.d.ts.map +1 -0
  236. package/dist/services/terminal/shell.js +227 -0
  237. package/dist/services/terminal/shell.js.map +1 -0
  238. package/dist/services/track.d.ts +20 -0
  239. package/dist/services/track.d.ts.map +1 -0
  240. package/dist/services/track.js +224 -0
  241. package/dist/services/track.js.map +1 -0
  242. package/dist/services/untrack.d.ts +13 -0
  243. package/dist/services/untrack.d.ts.map +1 -0
  244. package/dist/services/untrack.js +133 -0
  245. package/dist/services/untrack.js.map +1 -0
  246. package/package.json +84 -0
@@ -0,0 +1,265 @@
1
+ import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { CONSTANTS } from "#app/config/constants.ts";
4
+ import { formatGlobalDotweaveConfig, readGlobalDotweaveConfig, } from "#app/config/global-config.ts";
5
+ import { resolveDefaultIdentityFile } from "#app/config/identity-file.ts";
6
+ import { readEnvValue } from "#app/config/runtime-env.ts";
7
+ import { createInitialSyncConfig, formatSyncConfig, parseSyncConfig, readSyncConfig, syncConfigFileName, } from "#app/config/sync.ts";
8
+ import { createAgeIdentityFile, readAgeRecipientsFromIdentityFile, writeAgeIdentityFile, } from "#app/lib/crypto.ts";
9
+ import { DotweaveError, wrapUnknownError } from "#app/lib/error.ts";
10
+ import { pathExists, writeTextFileAtomically } from "#app/lib/filesystem.ts";
11
+ import { ensureGitRepository, ensureRepository, initializeRepository, } from "#app/lib/git.ts";
12
+ import { resolveJsoncConfigPath } from "#app/lib/jsonc.ts";
13
+ import { resolveAgeFromSyncConfig, resolveSyncConfigResolutionContext, resolveSyncPaths, } from "./runtime.js";
14
+ export const defaultSyncIdentityFile = CONSTANTS.INIT.DEFAULT_IDENTITY_FILE;
15
+ const managedRepositoryAttributesFileName = ".gitattributes";
16
+ const managedRepositoryAttributesContents = "* -text\n";
17
+ export const createMissingRepositoryAgeKeyError = () => {
18
+ return new DotweaveError("Existing repository setup requires an age private key.", {
19
+ code: "INIT_AGE_IDENTITY_REQUIRED",
20
+ hint: "Provide your existing age private key with '--key' or '--promptKey'.",
21
+ });
22
+ };
23
+ const normalizeRecipients = (recipients) => {
24
+ return [
25
+ ...new Set(recipients.map((recipient) => recipient.trim()).filter(Boolean)),
26
+ ].sort((left, right) => {
27
+ return left.localeCompare(right);
28
+ });
29
+ };
30
+ const resolveInitAgeBootstrap = async (request, reporter) => {
31
+ const identityFile = resolveDefaultIdentityFile(readEnvValue("HOME"), readEnvValue("XDG_CONFIG_HOME"));
32
+ const explicitRecipients = normalizeRecipients(request.recipients);
33
+ if (request.ageIdentity !== undefined) {
34
+ reporter?.start("Writing age identity file...");
35
+ const { recipient } = await writeAgeIdentityFile(identityFile, request.ageIdentity);
36
+ return {
37
+ generatedIdentity: false,
38
+ recipients: normalizeRecipients([...explicitRecipients, recipient]),
39
+ };
40
+ }
41
+ if (explicitRecipients.length === 0) {
42
+ if (await pathExists(identityFile)) {
43
+ reporter?.start("Loading age recipients from the existing identity...");
44
+ return {
45
+ generatedIdentity: false,
46
+ recipients: normalizeRecipients(await readAgeRecipientsFromIdentityFile(identityFile)),
47
+ };
48
+ }
49
+ reporter?.start("Generating a new age identity...");
50
+ const { recipient } = await createAgeIdentityFile(identityFile);
51
+ return {
52
+ generatedIdentity: true,
53
+ recipients: [recipient],
54
+ };
55
+ }
56
+ if (request.generateAgeIdentity === true) {
57
+ reporter?.start("Generating a new age identity...");
58
+ const { recipient } = await createAgeIdentityFile(identityFile);
59
+ return {
60
+ generatedIdentity: true,
61
+ recipients: normalizeRecipients([...explicitRecipients, recipient]),
62
+ };
63
+ }
64
+ if (await pathExists(identityFile)) {
65
+ reporter?.start("Using the existing age identity file...");
66
+ return {
67
+ generatedIdentity: false,
68
+ recipients: explicitRecipients,
69
+ };
70
+ }
71
+ reporter?.start("Generating a new age identity...");
72
+ const { recipient } = await createAgeIdentityFile(identityFile);
73
+ return {
74
+ generatedIdentity: true,
75
+ recipients: normalizeRecipients([...explicitRecipients, recipient]),
76
+ };
77
+ };
78
+ const assertInitRequestMatchesConfig = (age, request) => {
79
+ if (age === undefined) {
80
+ return;
81
+ }
82
+ const recipients = normalizeRecipients(request.recipients);
83
+ if (recipients.length > 0 &&
84
+ JSON.stringify(recipients) !==
85
+ JSON.stringify(normalizeRecipients([...age.recipients]))) {
86
+ throw new DotweaveError("Sync configuration already exists with different age recipients.", {
87
+ code: "INIT_RECIPIENT_MISMATCH",
88
+ details: [
89
+ `Requested recipients: ${recipients.join(", ") || "(none)"}`,
90
+ `Configured recipients: ${normalizeRecipients([...age.recipients]).join(", ")}`,
91
+ ],
92
+ hint: `Use the existing recipients, or update ${syncConfigFileName} manually if you intend to rotate recipients.`,
93
+ });
94
+ }
95
+ };
96
+ const buildAlreadyInitializedResult = (config, base) => {
97
+ const age = config.age !== undefined ? resolveAgeFromSyncConfig(config.age) : undefined;
98
+ return {
99
+ alreadyInitialized: true,
100
+ configPath: base.configPath,
101
+ entryCount: config.entries.length,
102
+ gitAction: base.gitAction,
103
+ ...(base.gitSource === undefined ? {} : { gitSource: base.gitSource }),
104
+ generatedIdentity: false,
105
+ identityFile: age?.identityFile ?? "",
106
+ recipientCount: age?.recipients.length ?? 0,
107
+ syncDirectory: base.syncDirectory,
108
+ };
109
+ };
110
+ const writeGlobalSettings = async (globalConfigPath) => {
111
+ const existingGlobalConfig = await readGlobalDotweaveConfig(globalConfigPath);
112
+ const globalConfigToWrite = {
113
+ activeProfile: existingGlobalConfig?.activeProfile ?? CONSTANTS.SYNC.DEFAULT_PROFILE,
114
+ version: CONSTANTS.GLOBAL_CONFIG.CURRENT_VERSION,
115
+ };
116
+ await mkdir(dirname(globalConfigPath), { recursive: true });
117
+ await writeTextFileAtomically(globalConfigPath, formatGlobalDotweaveConfig(globalConfigToWrite));
118
+ };
119
+ const ensureManagedRepositoryAttributes = async (syncDirectory) => {
120
+ const attributesPath = join(syncDirectory, managedRepositoryAttributesFileName);
121
+ if (await pathExists(attributesPath)) {
122
+ const existingContents = await readFile(attributesPath, "utf8");
123
+ if (existingContents === managedRepositoryAttributesContents) {
124
+ return;
125
+ }
126
+ }
127
+ await writeTextFileAtomically(attributesPath, managedRepositoryAttributesContents);
128
+ };
129
+ export const initializeSyncDirectory = async (request, reporter) => {
130
+ reporter?.start("Initializing sync directory...");
131
+ const { syncDirectory, configPath, globalConfigPath } = resolveSyncPaths();
132
+ const context = resolveSyncConfigResolutionContext();
133
+ const resolvedConfigPath = await resolveJsoncConfigPath(configPath);
134
+ const configExists = await pathExists(resolvedConfigPath);
135
+ const identityFile = resolveDefaultIdentityFile(readEnvValue("HOME"), readEnvValue("XDG_CONFIG_HOME"));
136
+ const importingRepository = request.repository !== undefined && request.repository.trim() !== "";
137
+ if (importingRepository &&
138
+ request.ageIdentity === undefined &&
139
+ !(await pathExists(identityFile))) {
140
+ throw createMissingRepositoryAgeKeyError();
141
+ }
142
+ if (configExists) {
143
+ reporter?.start("Checking the existing sync directory...");
144
+ await ensureGitRepository(syncDirectory);
145
+ await ensureManagedRepositoryAttributes(syncDirectory);
146
+ reporter?.start("Loading the existing sync config...");
147
+ const config = await readSyncConfig(syncDirectory, context);
148
+ assertInitRequestMatchesConfig(config.age, request);
149
+ await resolveInitAgeBootstrap(request, reporter);
150
+ return buildAlreadyInitializedResult(config, {
151
+ configPath,
152
+ gitAction: "existing",
153
+ syncDirectory,
154
+ });
155
+ }
156
+ await mkdir(dirname(syncDirectory), {
157
+ recursive: true,
158
+ });
159
+ reporter?.start("Preparing the sync directory...");
160
+ let gitAction = "existing";
161
+ let gitSource;
162
+ try {
163
+ reporter?.start("Checking for an existing git repository...");
164
+ await ensureRepository(syncDirectory);
165
+ reporter?.start("Using the existing git repository...");
166
+ }
167
+ catch {
168
+ const syncDirectoryExists = await pathExists(syncDirectory);
169
+ if (syncDirectoryExists) {
170
+ const entries = await readdir(syncDirectory);
171
+ if (entries.length > 0) {
172
+ throw new DotweaveError("Sync directory already exists and is not empty.", {
173
+ code: "SYNC_DIR_NOT_EMPTY",
174
+ details: [`Sync directory: ${syncDirectory}`],
175
+ hint: "Empty the directory, remove it, or point init at a different repository source.",
176
+ });
177
+ }
178
+ }
179
+ const gitSourceInput = request.repository?.trim() || undefined;
180
+ let gitResult;
181
+ try {
182
+ reporter?.start(gitSourceInput === undefined
183
+ ? "Initializing a new git repository..."
184
+ : `Cloning the sync directory from ${gitSourceInput}...`);
185
+ gitResult = await initializeRepository(syncDirectory, gitSourceInput, reporter);
186
+ }
187
+ catch (error) {
188
+ throw wrapUnknownError(gitSourceInput === undefined
189
+ ? "Failed to initialize the sync directory."
190
+ : "Failed to clone the sync directory.", error, {
191
+ code: gitSourceInput === undefined
192
+ ? "SYNC_INIT_GIT_FAILED"
193
+ : "SYNC_CLONE_FAILED",
194
+ details: [
195
+ `Sync directory: ${syncDirectory}`,
196
+ ...(gitSourceInput === undefined
197
+ ? []
198
+ : [`Repository source: ${gitSourceInput}`]),
199
+ ],
200
+ hint: gitSourceInput === undefined
201
+ ? "Check that git is installed and the sync directory is writable."
202
+ : "Check that the repository source is reachable and you have access to it.",
203
+ });
204
+ }
205
+ gitAction = gitResult.action;
206
+ gitSource = gitResult.source;
207
+ }
208
+ reporter?.start("Preparing the sync artifact directory...");
209
+ await mkdir(syncDirectory, { recursive: true });
210
+ await ensureManagedRepositoryAttributes(syncDirectory);
211
+ if (await pathExists(await resolveJsoncConfigPath(configPath))) {
212
+ reporter?.start("Loading the existing sync config...");
213
+ const config = await readSyncConfig(syncDirectory, context);
214
+ const ageBootstrap = await resolveInitAgeBootstrap(request, reporter);
215
+ if (configExists) {
216
+ return buildAlreadyInitializedResult(config, {
217
+ configPath,
218
+ gitAction,
219
+ gitSource,
220
+ syncDirectory,
221
+ });
222
+ }
223
+ reporter?.start("Writing global dotweave settings...");
224
+ await writeGlobalSettings(globalConfigPath);
225
+ const age = config.age !== undefined
226
+ ? resolveAgeFromSyncConfig(config.age)
227
+ : undefined;
228
+ return {
229
+ alreadyInitialized: false,
230
+ configPath,
231
+ entryCount: config.entries.length,
232
+ gitAction,
233
+ ...(gitSource === undefined ? {} : { gitSource }),
234
+ generatedIdentity: ageBootstrap.generatedIdentity,
235
+ identityFile: age?.identityFile ??
236
+ resolveDefaultIdentityFile(readEnvValue("HOME"), readEnvValue("XDG_CONFIG_HOME")),
237
+ recipientCount: age?.recipients.length ?? 0,
238
+ syncDirectory,
239
+ };
240
+ }
241
+ reporter?.start("Preparing sync encryption settings...");
242
+ const ageBootstrap = await resolveInitAgeBootstrap(request, reporter);
243
+ // Write global settings.jsonc (without age)
244
+ reporter?.start("Writing global dotweave settings...");
245
+ await writeGlobalSettings(globalConfigPath);
246
+ // Write sync config with age
247
+ const initialConfig = createInitialSyncConfig({
248
+ recipients: [...new Set(ageBootstrap.recipients.map((r) => r.trim()))],
249
+ });
250
+ reporter?.start("Writing sync config...");
251
+ parseSyncConfig(initialConfig, context);
252
+ await writeFile(configPath, formatSyncConfig(initialConfig), "utf8");
253
+ return {
254
+ alreadyInitialized: false,
255
+ configPath,
256
+ entryCount: 0,
257
+ gitAction,
258
+ ...(gitSource === undefined ? {} : { gitSource }),
259
+ generatedIdentity: ageBootstrap.generatedIdentity,
260
+ identityFile: resolveDefaultIdentityFile(readEnvValue("HOME"), readEnvValue("XDG_CONFIG_HOME")),
261
+ recipientCount: ageBootstrap.recipients.length,
262
+ syncDirectory,
263
+ };
264
+ };
265
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ConsolaInstance } from "consola";
2
+ import { type ResolvedSyncConfig, type ResolvedSyncConfigEntry } from "#app/config/sync.ts";
3
+ import type { FileLikeSnapshotNode, SnapshotNode } from "./local-snapshot.ts";
4
+ type MaterializationConfig = ResolvedSyncConfig & Readonly<{
5
+ activeProfile?: string;
6
+ }>;
7
+ export type EntryMaterialization = Readonly<{
8
+ desiredKeys: ReadonlySet<string>;
9
+ type: "absent";
10
+ }> | Readonly<{
11
+ desiredKeys: ReadonlySet<string>;
12
+ node: FileLikeSnapshotNode;
13
+ type: "file";
14
+ }> | Readonly<{
15
+ desiredKeys: ReadonlySet<string>;
16
+ nodes: ReadonlyMap<string, FileLikeSnapshotNode>;
17
+ type: "directory";
18
+ }>;
19
+ export declare const buildEntryMaterialization: (entry: ResolvedSyncConfigEntry, snapshot: ReadonlyMap<string, SnapshotNode>, reporter?: ConsolaInstance) => EntryMaterialization;
20
+ export declare const countDeletedLocalNodes: (entry: ResolvedSyncConfigEntry, desiredKeys: ReadonlySet<string>, config: MaterializationConfig, existingKeys?: Set<string>, reporter?: ConsolaInstance, keyToLocalPath?: Map<string, string>, deletedKeys?: Set<string>) => Promise<number>;
21
+ export declare const collectChangedLocalPaths: (entry: ResolvedSyncConfigEntry, materialization: EntryMaterialization, config?: MaterializationConfig) => Promise<string[]>;
22
+ export declare const applyEntryMaterialization: (entry: ResolvedSyncConfigEntry, materialization: EntryMaterialization, config: MaterializationConfig, reporter?: ConsolaInstance) => Promise<void>;
23
+ export declare const buildPullCounts: (materializations: readonly (EntryMaterialization | undefined)[]) => {
24
+ decryptedFileCount: number;
25
+ directoryCount: number;
26
+ plainFileCount: number;
27
+ symlinkCount: number;
28
+ };
29
+ export {};
30
+ //# sourceMappingURL=local-materialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-materialization.d.ts","sourceRoot":"","sources":["../../src/services/local-materialization.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAC;AAqB7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE9E,KAAK,qBAAqB,GAAG,kBAAkB,GAC7C,QAAQ,CAAC;IACP,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAqBL,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,CAAC;IACP,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC,GACF,QAAQ,CAAC;IACP,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,GACF,QAAQ,CAAC;IACP,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC,CAAC;AA6KP,eAAO,MAAM,yBAAyB,GACpC,OAAO,uBAAuB,EAC9B,UAAU,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAC3C,WAAW,eAAe,KACzB,oBA8EF,CAAC;AA0OF,eAAO,MAAM,sBAAsB,GACjC,OAAO,uBAAuB,EAC9B,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,QAAQ,qBAAqB,EAC7B,eAAc,GAAG,CAAC,MAAM,CAAqB,EAC7C,WAAW,eAAe,EAC1B,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,cAAc,GAAG,CAAC,MAAM,CAAC,oBAoC1B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,uBAAuB,EAC9B,iBAAiB,oBAAoB,EACrC,SAAS,qBAAqB,sBAuG/B,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,OAAO,uBAAuB,EAC9B,iBAAiB,oBAAoB,EACrC,QAAQ,qBAAqB,EAC7B,WAAW,eAAe,kBA8C3B,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,kBAAkB,SAAS,CAAC,oBAAoB,GAAG,SAAS,CAAC,EAAE;;;;;CA+ChE,CAAC"}