@mind-fold/open-flow 0.1.12 → 0.1.14
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.
|
@@ -7,6 +7,7 @@ export declare function getWriteMode(): WriteMode;
|
|
|
7
7
|
/**
|
|
8
8
|
* Write file with conflict handling
|
|
9
9
|
* - If file doesn't exist: write directly
|
|
10
|
+
* - If file exists and content is identical: skip silently
|
|
10
11
|
* - If file exists and mode is 'force': overwrite
|
|
11
12
|
* - If file exists and mode is 'skip': skip
|
|
12
13
|
* - If file exists and mode is 'ask': prompt user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../src/utils/file-writer.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,SAAS,CAAC;CAChB;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAElD;AAED,wBAAgB,YAAY,IAAI,SAAS,CAExC;
|
|
1
|
+
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../src/utils/file-writer.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,SAAS,CAAC;CAChB;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAElD;AAED,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAWD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,OAAO,CAAC,CAoFlB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C"}
|
|
@@ -10,16 +10,25 @@ export function setWriteMode(mode) {
|
|
|
10
10
|
export function getWriteMode() {
|
|
11
11
|
return globalWriteMode;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Get relative path from cwd for display
|
|
15
|
+
*/
|
|
16
|
+
function getRelativePath(filePath) {
|
|
17
|
+
const cwd = process.cwd();
|
|
18
|
+
const relativePath = path.relative(cwd, filePath);
|
|
19
|
+
return relativePath || path.basename(filePath);
|
|
20
|
+
}
|
|
13
21
|
/**
|
|
14
22
|
* Write file with conflict handling
|
|
15
23
|
* - If file doesn't exist: write directly
|
|
24
|
+
* - If file exists and content is identical: skip silently
|
|
16
25
|
* - If file exists and mode is 'force': overwrite
|
|
17
26
|
* - If file exists and mode is 'skip': skip
|
|
18
27
|
* - If file exists and mode is 'ask': prompt user
|
|
19
28
|
*/
|
|
20
29
|
export async function writeFile(filePath, content, options) {
|
|
21
30
|
const exists = fs.existsSync(filePath);
|
|
22
|
-
const
|
|
31
|
+
const displayPath = getRelativePath(filePath);
|
|
23
32
|
if (!exists) {
|
|
24
33
|
// File doesn't exist, write directly
|
|
25
34
|
fs.writeFileSync(filePath, content);
|
|
@@ -28,18 +37,25 @@ export async function writeFile(filePath, content, options) {
|
|
|
28
37
|
}
|
|
29
38
|
return true;
|
|
30
39
|
}
|
|
31
|
-
// File exists,
|
|
40
|
+
// File exists, check if content is identical
|
|
41
|
+
const existingContent = fs.readFileSync(filePath, "utf-8");
|
|
42
|
+
if (existingContent === content) {
|
|
43
|
+
// Content identical, skip silently
|
|
44
|
+
console.log(chalk.gray(` ✓ Unchanged: ${displayPath}`));
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
// File exists with different content, handle based on mode
|
|
32
48
|
const mode = globalWriteMode;
|
|
33
49
|
if (mode === "force") {
|
|
34
50
|
fs.writeFileSync(filePath, content);
|
|
35
51
|
if (options?.executable) {
|
|
36
52
|
fs.chmodSync(filePath, "755");
|
|
37
53
|
}
|
|
38
|
-
console.log(chalk.yellow(` ↻ Overwritten: ${
|
|
54
|
+
console.log(chalk.yellow(` ↻ Overwritten: ${displayPath}`));
|
|
39
55
|
return true;
|
|
40
56
|
}
|
|
41
57
|
if (mode === "skip") {
|
|
42
|
-
console.log(chalk.gray(` ○ Skipped: ${
|
|
58
|
+
console.log(chalk.gray(` ○ Skipped: ${displayPath} (already exists)`));
|
|
43
59
|
return false;
|
|
44
60
|
}
|
|
45
61
|
// mode === 'ask': Interactive prompt
|
|
@@ -47,7 +63,7 @@ export async function writeFile(filePath, content, options) {
|
|
|
47
63
|
{
|
|
48
64
|
type: "list",
|
|
49
65
|
name: "action",
|
|
50
|
-
message: `File "${
|
|
66
|
+
message: `File "${displayPath}" already exists. What would you like to do?`,
|
|
51
67
|
choices: [
|
|
52
68
|
{ name: "Skip (keep existing)", value: "skip" },
|
|
53
69
|
{ name: "Overwrite", value: "overwrite" },
|
|
@@ -57,7 +73,7 @@ export async function writeFile(filePath, content, options) {
|
|
|
57
73
|
},
|
|
58
74
|
]);
|
|
59
75
|
if (action === "skip") {
|
|
60
|
-
console.log(chalk.gray(` ○ Skipped: ${
|
|
76
|
+
console.log(chalk.gray(` ○ Skipped: ${displayPath}`));
|
|
61
77
|
return false;
|
|
62
78
|
}
|
|
63
79
|
if (action === "overwrite") {
|
|
@@ -65,12 +81,12 @@ export async function writeFile(filePath, content, options) {
|
|
|
65
81
|
if (options?.executable) {
|
|
66
82
|
fs.chmodSync(filePath, "755");
|
|
67
83
|
}
|
|
68
|
-
console.log(chalk.yellow(` ↻ Overwritten: ${
|
|
84
|
+
console.log(chalk.yellow(` ↻ Overwritten: ${displayPath}`));
|
|
69
85
|
return true;
|
|
70
86
|
}
|
|
71
87
|
if (action === "skip-all") {
|
|
72
88
|
globalWriteMode = "skip";
|
|
73
|
-
console.log(chalk.gray(` ○ Skipped: ${
|
|
89
|
+
console.log(chalk.gray(` ○ Skipped: ${displayPath}`));
|
|
74
90
|
return false;
|
|
75
91
|
}
|
|
76
92
|
if (action === "overwrite-all") {
|
|
@@ -79,7 +95,7 @@ export async function writeFile(filePath, content, options) {
|
|
|
79
95
|
if (options?.executable) {
|
|
80
96
|
fs.chmodSync(filePath, "755");
|
|
81
97
|
}
|
|
82
|
-
console.log(chalk.yellow(` ↻ Overwritten: ${
|
|
98
|
+
console.log(chalk.yellow(` ↻ Overwritten: ${displayPath}`));
|
|
83
99
|
return true;
|
|
84
100
|
}
|
|
85
101
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../src/utils/file-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAQhC,2CAA2C;AAC3C,IAAI,eAAe,GAAc,KAAK,CAAC;AAEvC,MAAM,UAAU,YAAY,CAAC,IAAe;IAC3C,eAAe,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY;IAC3B,OAAO,eAAe,CAAC;AACxB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../src/utils/file-writer.ts"],"names":[],"mappings":"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"}
|