@house365/comate 0.2.2 → 0.2.3
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/bin/init-run.mjs +26 -13
- package/package.json +1 -1
package/bin/init-run.mjs
CHANGED
|
@@ -166,28 +166,35 @@ export function pkgVersion(root = resolve(import.meta.dirname, '..')) {
|
|
|
166
166
|
// Box-drawing glyphs need a UTF-8 capable terminal. Windows consoles still
|
|
167
167
|
// default to a legacy codepage where they render as mojibake, so the wordmark
|
|
168
168
|
// only goes out when the codepage says otherwise; everything else gets the
|
|
169
|
-
// plain line.
|
|
170
|
-
//
|
|
171
|
-
|
|
169
|
+
// plain line.
|
|
170
|
+
//
|
|
171
|
+
// isTTY deliberately does NOT gate this. npm's Windows global install resolves
|
|
172
|
+
// `comate` to a comate.ps1 shim, and PowerShell calling node through a .ps1
|
|
173
|
+
// wrapper takes over stdout — so isTTY is false in a real terminal and the
|
|
174
|
+
// wordmark never showed. CI is the case actually worth suppressing, and it
|
|
175
|
+
// announces itself with an env var.
|
|
176
|
+
export function banner(version, { utf8 = unicodeSafe(), ci = isCI() } = {}) {
|
|
172
177
|
const tag = `comate${version ? ` v${version}` : ''}`;
|
|
173
|
-
const plain = `\n ${tag}
|
|
174
|
-
if (!
|
|
178
|
+
const plain = `\n ${tag} - AI coding almost there!\n`;
|
|
179
|
+
if (!utf8 || ci) return plain;
|
|
175
180
|
|
|
176
181
|
const art = [
|
|
177
|
-
'██████╗ ██████╗ ███╗ ███╗ █████╗
|
|
178
|
-
'
|
|
179
|
-
'██║ ██║ ██║██╔████╔██║███████║ ██║',
|
|
180
|
-
'██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║',
|
|
181
|
-
'╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║',
|
|
182
|
-
' ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝',
|
|
182
|
+
' ██████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗',
|
|
183
|
+
'██╔════╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝',
|
|
184
|
+
'██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ',
|
|
185
|
+
'██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ',
|
|
186
|
+
'╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗',
|
|
187
|
+
' ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝',
|
|
183
188
|
];
|
|
184
189
|
const cyan = (s) => (process.env.NO_COLOR ? s : `\x1B[36m${s}\x1B[0m`);
|
|
185
190
|
const dim = (s) => (process.env.NO_COLOR ? s : `\x1B[2m${s}\x1B[0m`);
|
|
186
191
|
return [
|
|
187
192
|
'',
|
|
188
|
-
|
|
193
|
+
// Trailing padding keeps the source rows aligned; strip it so the colour
|
|
194
|
+
// reset doesn't sit behind spaces the terminal may highlight on select.
|
|
195
|
+
...art.map((line) => ` ${cyan(line.replace(/\s+$/, ''))}`),
|
|
189
196
|
'',
|
|
190
|
-
` ${dim(`${tag}
|
|
197
|
+
` ${dim(`${tag} - AI coding almost there!`)}`,
|
|
191
198
|
'',
|
|
192
199
|
].join('\n');
|
|
193
200
|
}
|
|
@@ -199,3 +206,9 @@ function unicodeSafe() {
|
|
|
199
206
|
if (process.platform !== 'win32') return true;
|
|
200
207
|
return /65001/.test(capture('chcp', []) ?? '');
|
|
201
208
|
}
|
|
209
|
+
|
|
210
|
+
// Every major CI sets CI=true; GITHUB_ACTIONS covers the Actions runner even in
|
|
211
|
+
// the odd config that doesn't.
|
|
212
|
+
function isCI() {
|
|
213
|
+
return Boolean(process.env.CI || process.env.GITHUB_ACTIONS);
|
|
214
|
+
}
|