archprint 0.12.1 → 0.12.2
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/CHANGELOG.md +6 -0
- package/dist/cli/adoption-readme.d.ts.map +1 -1
- package/dist/cli/adoption-readme.js +12 -28
- package/dist/cli/adoption-readme.js.map +1 -1
- package/dist/cli/ignore-file.d.ts.map +1 -1
- package/dist/cli/ignore-file.js +11 -8
- package/dist/cli/ignore-file.js.map +1 -1
- package/dist/cli/line-breaks.d.ts +6 -0
- package/dist/cli/line-breaks.d.ts.map +1 -0
- package/dist/cli/line-breaks.js +6 -0
- package/dist/cli/line-breaks.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# archprint
|
|
2
2
|
|
|
3
|
+
## 0.12.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- `archprint eject` now restores `README.md`, `.prettierignore` and `.npmignore` byte for byte. Before, a file without a final newline, with several trailing newlines, or with mixed line endings came back slightly different after archprint added and then removed its section.
|
|
8
|
+
|
|
3
9
|
## 0.12.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adoption-readme.d.ts","sourceRoot":"","sources":["../../src/cli/adoption-readme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adoption-readme.d.ts","sourceRoot":"","sources":["../../src/cli/adoption-readme.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CA6BpF;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,OAAO,GAC1B,YAAY,CA2Bd"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { existsSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { staysInsideItsFolder } from '../generator/owned-paths.js';
|
|
3
|
+
import { lineBreakAt, lineBreakBefore, lineBreakOf } from './line-breaks.js';
|
|
3
4
|
const START = '<!-- archprint:start -->';
|
|
4
5
|
const END = '<!-- archprint:end -->';
|
|
5
|
-
function detectLayout(content) {
|
|
6
|
-
const bom = content.startsWith('') ? '' : '';
|
|
7
|
-
const eol = /\r\n/.test(content) ? '\r\n' : '\n';
|
|
8
|
-
return { eol, bom };
|
|
9
|
-
}
|
|
10
6
|
function block(body, eol) {
|
|
11
7
|
const lines = [
|
|
12
8
|
'## Architecture rules (managed by archprint, do not edit between the markers)',
|
|
@@ -26,26 +22,17 @@ export function injectAdoptionSection(readmePath, body) {
|
|
|
26
22
|
writeFileSync(readmePath, `${block(body, '\n')}\n`);
|
|
27
23
|
return { status: 'created' };
|
|
28
24
|
}
|
|
29
|
-
const
|
|
30
|
-
const { eol, bom } = detectLayout(raw);
|
|
31
|
-
const content = bom ? raw.slice(bom.length) : raw;
|
|
25
|
+
const content = readFileSync(readmePath, 'utf8');
|
|
32
26
|
const start = content.indexOf(START);
|
|
33
27
|
const end = content.indexOf(END);
|
|
34
28
|
if ((start !== -1) !== (end !== -1) || (start !== -1 && end < start)) {
|
|
35
29
|
return { status: 'skipped', reason: 'unpaired archprint markers in README; left untouched' };
|
|
36
30
|
}
|
|
37
|
-
const
|
|
38
|
-
const fresh = block(body,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const e = normalized.indexOf(END) + END.length;
|
|
43
|
-
next = normalized.slice(0, s) + fresh + normalized.slice(e);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
next = `${normalized.replace(/\n+$/, '')}\n\n${fresh}\n`;
|
|
47
|
-
}
|
|
48
|
-
writeFileSync(readmePath, bom + (eol === '\r\n' ? next.replace(/\n/g, '\r\n') : next));
|
|
31
|
+
const eol = lineBreakOf(content);
|
|
32
|
+
const fresh = block(body, eol);
|
|
33
|
+
writeFileSync(readmePath, start !== -1
|
|
34
|
+
? content.slice(0, start) + fresh + content.slice(end + END.length)
|
|
35
|
+
: `${content}${eol}${fresh}${eol}`);
|
|
49
36
|
return { status: 'updated' };
|
|
50
37
|
}
|
|
51
38
|
catch (error) {
|
|
@@ -61,23 +48,20 @@ export function stripAdoptionSection(readmePath, createdByArchprint) {
|
|
|
61
48
|
status: 'skipped',
|
|
62
49
|
reason: 'README.md links outside the repository, so archprint leaves it alone',
|
|
63
50
|
};
|
|
64
|
-
const
|
|
65
|
-
const { eol, bom } = detectLayout(raw);
|
|
66
|
-
const content = (bom ? raw.slice(bom.length) : raw).replace(/\r\n/g, '\n');
|
|
51
|
+
const content = readFileSync(readmePath, 'utf8');
|
|
67
52
|
const start = content.indexOf(START);
|
|
68
53
|
const end = content.indexOf(END);
|
|
69
54
|
if (start === -1 || end === -1 || end < start) {
|
|
70
55
|
return { status: 'skipped', reason: 'no archprint section' };
|
|
71
56
|
}
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
|
|
57
|
+
const blockEnd = end + END.length;
|
|
58
|
+
const without = content.slice(0, start - lineBreakBefore(content, start)) +
|
|
59
|
+
content.slice(blockEnd + lineBreakAt(content, blockEnd));
|
|
75
60
|
if (createdByArchprint && without.trim() === '') {
|
|
76
61
|
rmSync(readmePath, { force: true });
|
|
77
62
|
return { status: 'updated', reason: 'removed archprint-created README' };
|
|
78
63
|
}
|
|
79
|
-
|
|
80
|
-
writeFileSync(readmePath, bom + (eol === '\r\n' ? out.replace(/\n/g, '\r\n') : out));
|
|
64
|
+
writeFileSync(readmePath, without);
|
|
81
65
|
return { status: 'updated' };
|
|
82
66
|
}
|
|
83
67
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adoption-readme.js","sourceRoot":"","sources":["../../src/cli/adoption-readme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"adoption-readme.js","sourceRoot":"","sources":["../../src/cli/adoption-readme.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore-file.d.ts","sourceRoot":"","sources":["../../src/cli/ignore-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ignore-file.d.ts","sourceRoot":"","sources":["../../src/cli/ignore-file.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,YAAY,CAYd;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAgBT"}
|
package/dist/cli/ignore-file.js
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
import { existsSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { staysInsideItsFolder } from '../generator/owned-paths.js';
|
|
3
|
+
import { lineBreakAt, lineBreakBefore, lineBreakOf } from './line-breaks.js';
|
|
3
4
|
const START = '# archprint:start';
|
|
4
5
|
const END = '# archprint:end';
|
|
5
|
-
function markerBlock(entry) {
|
|
6
|
-
return [START, entry, END].join(
|
|
6
|
+
function markerBlock(entry, eol) {
|
|
7
|
+
return [START, entry, END].join(eol);
|
|
7
8
|
}
|
|
8
9
|
export function ensureIgnoreEntry(filePath, entry, options = {}) {
|
|
9
10
|
if (!staysInsideItsFolder(filePath))
|
|
10
11
|
return 'skipped';
|
|
11
|
-
const block = markerBlock(entry);
|
|
12
12
|
if (!existsSync(filePath)) {
|
|
13
13
|
if (options.create === false)
|
|
14
14
|
return 'skipped';
|
|
15
|
-
writeFileSync(filePath, `${
|
|
15
|
+
writeFileSync(filePath, `${markerBlock(entry, '\n')}\n`);
|
|
16
16
|
return 'created';
|
|
17
17
|
}
|
|
18
18
|
const content = readFileSync(filePath, 'utf8');
|
|
19
19
|
if (content.includes(START) || content.includes(END))
|
|
20
20
|
return 'present';
|
|
21
|
-
|
|
21
|
+
const eol = lineBreakOf(content);
|
|
22
|
+
writeFileSync(filePath, `${content}${eol}${markerBlock(entry, eol)}${eol}`);
|
|
22
23
|
return 'appended';
|
|
23
24
|
}
|
|
24
25
|
export function removeIgnoreEntry(filePath, options = {}) {
|
|
@@ -29,12 +30,14 @@ export function removeIgnoreEntry(filePath, options = {}) {
|
|
|
29
30
|
const end = content.indexOf(END);
|
|
30
31
|
if (start === -1 || end === -1 || end < start)
|
|
31
32
|
return false;
|
|
32
|
-
const
|
|
33
|
-
|
|
33
|
+
const blockEnd = end + END.length;
|
|
34
|
+
const remaining = content.slice(0, start - lineBreakBefore(content, start)) +
|
|
35
|
+
content.slice(blockEnd + lineBreakAt(content, blockEnd));
|
|
36
|
+
if (remaining.trim() === '' && options.deleteIfEmpty) {
|
|
34
37
|
rmSync(filePath, { force: true });
|
|
35
38
|
return true;
|
|
36
39
|
}
|
|
37
|
-
writeFileSync(filePath, remaining
|
|
40
|
+
writeFileSync(filePath, remaining);
|
|
38
41
|
return true;
|
|
39
42
|
}
|
|
40
43
|
//# sourceMappingURL=ignore-file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore-file.js","sourceRoot":"","sources":["../../src/cli/ignore-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ignore-file.js","sourceRoot":"","sources":["../../src/cli/ignore-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,KAAK,GAAG,mBAAmB,CAAC;AAClC,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAE9B,SAAS,WAAW,CAAC,KAAa,EAAE,GAAW;IAC7C,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAID,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,KAAa,EACb,UAAgC,EAAE;IAElC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAC/C,aAAa,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACvE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,QAAQ,EAAE,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC5E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAAuC,EAAE;IAEzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAClC,MAAM,SAAS,GACb,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QACrD,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const lineBreakOf: (content: string) => string;
|
|
2
|
+
/** Length of the line break that ends just before `index` (0, 1 or 2). */
|
|
3
|
+
export declare const lineBreakBefore: (content: string, index: number) => number;
|
|
4
|
+
/** Length of the line break that starts at `index` (0, 1 or 2). */
|
|
5
|
+
export declare const lineBreakAt: (content: string, index: number) => number;
|
|
6
|
+
//# sourceMappingURL=line-breaks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-breaks.d.ts","sourceRoot":"","sources":["../../src/cli/line-breaks.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAAgD,CAAC;AAE/F,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,MAC8B,CAAC;AAEhG,mEAAmE;AACnE,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,MACY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const lineBreakOf = (content) => (/\r\n/.test(content) ? '\r\n' : '\n');
|
|
2
|
+
/** Length of the line break that ends just before `index` (0, 1 or 2). */
|
|
3
|
+
export const lineBreakBefore = (content, index) => index >= 2 && content.startsWith('\r\n', index - 2) ? 2 : content[index - 1] === '\n' ? 1 : 0;
|
|
4
|
+
/** Length of the line break that starts at `index` (0, 1 or 2). */
|
|
5
|
+
export const lineBreakAt = (content, index) => content.startsWith('\r\n', index) ? 2 : content[index] === '\n' ? 1 : 0;
|
|
6
|
+
//# sourceMappingURL=line-breaks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-breaks.js","sourceRoot":"","sources":["../../src/cli/line-breaks.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE/F,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CACxE,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhG,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CACpE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED