@tokenbooks/wt 0.1.4 → 0.2.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/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/env-patcher.js +17 -3
- package/dist/core/env-patcher.js.map +1 -1
- package/dist/core/update-check.d.ts +16 -0
- package/dist/core/update-check.js +131 -0
- package/dist/core/update-check.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ const doctor_1 = require("./commands/doctor");
|
|
|
10
10
|
const open_1 = require("./commands/open");
|
|
11
11
|
const git_1 = require("./core/git");
|
|
12
12
|
const package_json_1 = require("../package.json");
|
|
13
|
+
const update_check_1 = require("./core/update-check");
|
|
13
14
|
const program = new commander_1.Command();
|
|
14
15
|
program
|
|
15
16
|
.name('wt')
|
|
@@ -82,4 +83,8 @@ program
|
|
|
82
83
|
await (0, doctor_1.doctorCommand)({ json: opts.json, fix: opts.fix });
|
|
83
84
|
});
|
|
84
85
|
program.parse();
|
|
86
|
+
process.stderr.write((0, update_check_1.getUpdateNotice)(package_json_1.version) + '\n');
|
|
87
|
+
if (!(0, update_check_1.isCacheFresh)()) {
|
|
88
|
+
(0, update_check_1.refreshUpdateCache)(package_json_1.name);
|
|
89
|
+
}
|
|
85
90
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,wCAA4C;AAC5C,4CAAgD;AAChD,8CAAkD;AAClD,0CAA8C;AAC9C,8CAAkD;AAClD,0CAA8C;AAC9C,oCAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/core/env-patcher.js
CHANGED
|
@@ -97,7 +97,8 @@ function patchUrlPort(value, patch, context) {
|
|
|
97
97
|
*/
|
|
98
98
|
function patchEnvContent(content, patches, context) {
|
|
99
99
|
const patchMap = new Map(patches.map((p) => [p.var, p]));
|
|
100
|
-
|
|
100
|
+
const found = new Set();
|
|
101
|
+
const lines = content
|
|
101
102
|
.split('\n')
|
|
102
103
|
.map((line) => {
|
|
103
104
|
const match = line.match(/^([A-Z_][A-Z0-9_]*)=(.*)/);
|
|
@@ -107,12 +108,25 @@ function patchEnvContent(content, patches, context) {
|
|
|
107
108
|
const patch = patchMap.get(varName);
|
|
108
109
|
if (!patch)
|
|
109
110
|
return line;
|
|
111
|
+
found.add(varName);
|
|
110
112
|
const unquoted = rawValue.replace(/^["']|["']$/g, '');
|
|
111
113
|
const patched = applyPatch(unquoted, patch, context);
|
|
112
114
|
const quote = rawValue.startsWith('"') ? '"' : rawValue.startsWith("'") ? "'" : '';
|
|
113
115
|
return `${varName}=${quote}${patched}${quote}`;
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
+
});
|
|
117
|
+
// Append vars declared in patches but missing from the source file.
|
|
118
|
+
// Only "port" patches can be computed without a source value.
|
|
119
|
+
for (const patch of patches) {
|
|
120
|
+
if (found.has(patch.var))
|
|
121
|
+
continue;
|
|
122
|
+
if (patch.type === 'port') {
|
|
123
|
+
const serviceName = patch.service;
|
|
124
|
+
if (serviceName && serviceName in context.ports) {
|
|
125
|
+
lines.push(`${patch.var}=${context.ports[serviceName]}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return lines.join('\n');
|
|
116
130
|
}
|
|
117
131
|
/**
|
|
118
132
|
* Copy and patch all env files from the main worktree to the target worktree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-patcher.js","sourceRoot":"","sources":["../../src/core/env-patcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,
|
|
1
|
+
{"version":3,"file":"env-patcher.js","sourceRoot":"","sources":["../../src/core/env-patcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronously read the update cache and return a version notice string.
|
|
3
|
+
* Returns a multi-line update notice if a newer version is available,
|
|
4
|
+
* or a simple version line otherwise.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getUpdateNotice(currentVersion: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Fetch the latest version from the npm registry and write it to the cache.
|
|
9
|
+
* Fire-and-forget — all errors are silently swallowed.
|
|
10
|
+
*/
|
|
11
|
+
export declare function refreshUpdateCache(packageName: string): void;
|
|
12
|
+
/**
|
|
13
|
+
* Check whether the cache is fresh (less than TTL old).
|
|
14
|
+
* Used to skip redundant registry fetches.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isCacheFresh(): boolean;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getUpdateNotice = getUpdateNotice;
|
|
37
|
+
exports.refreshUpdateCache = refreshUpdateCache;
|
|
38
|
+
exports.isCacheFresh = isCacheFresh;
|
|
39
|
+
const fs = __importStar(require("node:fs"));
|
|
40
|
+
const path = __importStar(require("node:path"));
|
|
41
|
+
const https = __importStar(require("node:https"));
|
|
42
|
+
const os = __importStar(require("node:os"));
|
|
43
|
+
const CACHE_PATH = path.join(os.homedir(), '.cache', 'wt-update-check.json');
|
|
44
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
45
|
+
const FETCH_TIMEOUT_MS = 3000;
|
|
46
|
+
/**
|
|
47
|
+
* Compare two semver-like version strings (e.g. "0.1.4" vs "0.2.0").
|
|
48
|
+
* Returns true if b is newer than a.
|
|
49
|
+
*/
|
|
50
|
+
function isNewer(a, b) {
|
|
51
|
+
const pa = a.split('.').map(Number);
|
|
52
|
+
const pb = b.split('.').map(Number);
|
|
53
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
54
|
+
const na = pa[i] ?? 0;
|
|
55
|
+
const nb = pb[i] ?? 0;
|
|
56
|
+
if (nb > na)
|
|
57
|
+
return true;
|
|
58
|
+
if (nb < na)
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Synchronously read the update cache and return a version notice string.
|
|
65
|
+
* Returns a multi-line update notice if a newer version is available,
|
|
66
|
+
* or a simple version line otherwise.
|
|
67
|
+
*/
|
|
68
|
+
function getUpdateNotice(currentVersion) {
|
|
69
|
+
try {
|
|
70
|
+
const raw = fs.readFileSync(CACHE_PATH, 'utf-8');
|
|
71
|
+
const cache = JSON.parse(raw);
|
|
72
|
+
if (cache.latest && isNewer(currentVersion, cache.latest)) {
|
|
73
|
+
return `wt v${currentVersion} — update available: ${cache.latest}\nRun: pnpm add -g @tokenbooks/wt`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Cache missing or corrupt — fall through
|
|
78
|
+
}
|
|
79
|
+
return `wt v${currentVersion}`;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Fetch the latest version from the npm registry and write it to the cache.
|
|
83
|
+
* Fire-and-forget — all errors are silently swallowed.
|
|
84
|
+
*/
|
|
85
|
+
function refreshUpdateCache(packageName) {
|
|
86
|
+
const url = `https://registry.npmjs.org/${packageName}/latest`;
|
|
87
|
+
const req = https.get(url, { timeout: FETCH_TIMEOUT_MS }, (res) => {
|
|
88
|
+
let body = '';
|
|
89
|
+
res.on('data', (chunk) => {
|
|
90
|
+
body += chunk.toString();
|
|
91
|
+
});
|
|
92
|
+
res.on('end', () => {
|
|
93
|
+
try {
|
|
94
|
+
const data = JSON.parse(body);
|
|
95
|
+
if (!data.version)
|
|
96
|
+
return;
|
|
97
|
+
const cache = {
|
|
98
|
+
latest: data.version,
|
|
99
|
+
checkedAt: Date.now(),
|
|
100
|
+
};
|
|
101
|
+
const dir = path.dirname(CACHE_PATH);
|
|
102
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
103
|
+
fs.writeFileSync(CACHE_PATH, JSON.stringify(cache) + '\n');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Silently swallow JSON/write errors
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
req.on('error', () => {
|
|
111
|
+
// Silently swallow network errors
|
|
112
|
+
});
|
|
113
|
+
req.on('timeout', () => {
|
|
114
|
+
req.destroy();
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check whether the cache is fresh (less than TTL old).
|
|
119
|
+
* Used to skip redundant registry fetches.
|
|
120
|
+
*/
|
|
121
|
+
function isCacheFresh() {
|
|
122
|
+
try {
|
|
123
|
+
const raw = fs.readFileSync(CACHE_PATH, 'utf-8');
|
|
124
|
+
const cache = JSON.parse(raw);
|
|
125
|
+
return Date.now() - cache.checkedAt < CACHE_TTL_MS;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/core/update-check.ts"],"names":[],"mappings":"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"}
|