@git.zone/tsdisk 1.2.1 → 1.4.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_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +4 -1
- package/dist_ts/index.js +4 -2
- package/dist_ts/tsdisk.cleanup.d.ts +5 -0
- package/dist_ts/tsdisk.cleanup.js +25 -2
- package/dist_ts/tsdisk.cli.d.ts +13 -1
- package/dist_ts/tsdisk.cli.js +125 -50
- package/dist_ts/tsdisk.progress.d.ts +31 -0
- package/dist_ts/tsdisk.progress.js +64 -0
- package/dist_ts/tsdisk.scan.d.ts +3 -0
- package/dist_ts/tsdisk.scan.js +48 -19
- package/dist_ts/tsdisk.usage.d.ts +50 -0
- package/dist_ts/tsdisk.usage.js +194 -0
- package/package.json +1 -1
- package/readme.md +26 -5
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +4 -0
- package/ts/tsdisk.cleanup.ts +26 -1
- package/ts/tsdisk.cli.ts +110 -53
- package/ts/tsdisk.progress.ts +78 -0
- package/ts/tsdisk.scan.ts +45 -18
- package/ts/tsdisk.usage.ts +199 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsdisk',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.4.0',
|
|
7
7
|
description: 'A disk usage diagnostic CLI for finding large files, caches, logs, and Docker storage.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHdGQUF3RjtDQUN0RyxDQUFBIn0=
|
package/dist_ts/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { commitinfo } from './00_commitinfo_data.js';
|
|
2
|
-
export { formatBytes, collectDiskReport, collectProjectToolCacheReport, main, parseDuOutput, runCli, } from './tsdisk.cli.js';
|
|
2
|
+
export { formatBytes, collectDiskReport, collectProjectToolCacheReport, diagnosticCommandComplete, main, parseDuOutput, runCli, } from './tsdisk.cli.js';
|
|
3
3
|
export * from './tsdisk.toolcaches.js';
|
|
4
4
|
export * from './tsdisk.scan.js';
|
|
5
5
|
export * from './tsdisk.cleanup.js';
|
|
6
|
+
export * from './tsdisk.usage.js';
|
|
7
|
+
export { DiskProgressReporter, estimateReclaimableSpace } from './tsdisk.progress.js';
|
|
8
|
+
export type { IDiskProgress, IReclaimEstimate } from './tsdisk.progress.js';
|
|
6
9
|
export type { IRuntimeContext, IDiagnosticSection } from './tsdisk.cli.js';
|
package/dist_ts/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { commitinfo } from './00_commitinfo_data.js';
|
|
2
|
-
export { formatBytes, collectDiskReport, collectProjectToolCacheReport, main, parseDuOutput, runCli, } from './tsdisk.cli.js';
|
|
2
|
+
export { formatBytes, collectDiskReport, collectProjectToolCacheReport, diagnosticCommandComplete, main, parseDuOutput, runCli, } from './tsdisk.cli.js';
|
|
3
3
|
export * from './tsdisk.toolcaches.js';
|
|
4
4
|
export * from './tsdisk.scan.js';
|
|
5
5
|
export * from './tsdisk.cleanup.js';
|
|
6
|
-
|
|
6
|
+
export * from './tsdisk.usage.js';
|
|
7
|
+
export { DiskProgressReporter, estimateReclaimableSpace } from './tsdisk.progress.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6QixJQUFJLEVBQ0osYUFBYSxFQUNiLE1BQU0sR0FDUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUMifQ==
|
|
@@ -7,6 +7,8 @@ export interface ICleanupAction {
|
|
|
7
7
|
applyArgs: string[];
|
|
8
8
|
scope: string;
|
|
9
9
|
blocked?: string;
|
|
10
|
+
sudoArgs?: string[];
|
|
11
|
+
requiresSudo?: boolean;
|
|
10
12
|
}
|
|
11
13
|
export interface ICleanupPlan {
|
|
12
14
|
dryRun: boolean;
|
|
@@ -20,7 +22,10 @@ export interface ICliOptions {
|
|
|
20
22
|
apply: boolean;
|
|
21
23
|
yes: boolean;
|
|
22
24
|
days: number;
|
|
25
|
+
sudo?: 'auto' | 'allow' | 'never';
|
|
23
26
|
}
|
|
24
27
|
export declare function parseCliOptions(args: string[]): ICliOptions;
|
|
25
28
|
/** Build project-scoped owner commands. No discovered marker authorizes deletion. */
|
|
26
29
|
export declare function createCleanupPlan(options: ICliOptions): Promise<ICleanupPlan>;
|
|
30
|
+
/** A versioned owner preview determines whether authentication is needed. */
|
|
31
|
+
export declare function dockerPreviewRequiresSudo(stdout: string): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as plugins from './tsdisk.plugins.js';
|
|
2
2
|
export function parseCliOptions(args) {
|
|
3
|
-
const options = { command: 'diagnose', roots: [], categories: ['rust', 'docker'], json: false, apply: false, yes: false, days: 14 };
|
|
3
|
+
const options = { command: 'diagnose', roots: [], categories: ['rust', 'docker'], json: false, apply: false, yes: false, days: 14, sudo: 'auto' };
|
|
4
4
|
let commandSeen = false;
|
|
5
5
|
let dryRun = false;
|
|
6
6
|
let cleanupOption = false;
|
|
@@ -34,6 +34,13 @@ export function parseCliOptions(args) {
|
|
|
34
34
|
dryRun = true;
|
|
35
35
|
cleanupOption = true;
|
|
36
36
|
}
|
|
37
|
+
else if (arg === '--sudo' || arg === '--no-sudo') {
|
|
38
|
+
const value = arg === '--sudo' ? 'allow' : 'never';
|
|
39
|
+
if (options.sudo !== 'auto' && options.sudo !== value)
|
|
40
|
+
throw new Error('--sudo and --no-sudo cannot be combined.');
|
|
41
|
+
options.sudo = value;
|
|
42
|
+
cleanupOption = true;
|
|
43
|
+
}
|
|
37
44
|
else if (['--root', '--only', '--days'].some((flag) => arg === flag || arg.startsWith(`${flag}=`))) {
|
|
38
45
|
const separator = arg.indexOf('=');
|
|
39
46
|
const name = separator < 0 ? arg : arg.slice(0, separator);
|
|
@@ -116,6 +123,13 @@ export async function createCleanupPlan(options) {
|
|
|
116
123
|
if (!version || (different !== undefined && different !== -1 && version[different] < minimum[different])) {
|
|
117
124
|
action.blocked = `@git.zone/${binary} ${minimum.join('.')} or later is required for the documented prune contract.`;
|
|
118
125
|
}
|
|
126
|
+
if (category === 'docker' && version && (version[0] > 3 || (version[0] === 3 && version[1] >= 7))) {
|
|
127
|
+
action.previewArgs = ['prune', '--json'];
|
|
128
|
+
action.sudoArgs = [...action.applyArgs, '--sudo'];
|
|
129
|
+
}
|
|
130
|
+
else if (category === 'docker' && options.sudo === 'allow') {
|
|
131
|
+
action.blocked = '@git.zone/tsdocker 3.7.0 or later is required for sudo cleanup. Upgrade the project tool first.';
|
|
132
|
+
}
|
|
119
133
|
}
|
|
120
134
|
catch {
|
|
121
135
|
action.blocked = `Install a current @git.zone/${binary} in this project before cleanup. No tool is downloaded automatically.`;
|
|
@@ -125,4 +139,13 @@ export async function createCleanupPlan(options) {
|
|
|
125
139
|
}
|
|
126
140
|
return plan;
|
|
127
141
|
}
|
|
128
|
-
|
|
142
|
+
/** A versioned owner preview determines whether authentication is needed. */
|
|
143
|
+
export function dockerPreviewRequiresSudo(stdout) {
|
|
144
|
+
const plan = JSON.parse(stdout);
|
|
145
|
+
if (plan.schemaVersion !== 1 || plan.kind !== 'tsdocker-prune-plan' || !Array.isArray(plan.cacheDirs)
|
|
146
|
+
|| plan.cacheDirs.some((cache) => typeof cache?.removal?.requiresSudo !== 'boolean')) {
|
|
147
|
+
throw new Error('Invalid Docker permission preview; refusing cleanup.');
|
|
148
|
+
}
|
|
149
|
+
return plan.cacheDirs.some((cache) => cache.removal.requiresSudo === true);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNkaXNrLmNsZWFudXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c2Rpc2suY2xlYW51cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBZ0MvQyxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWM7SUFDNUMsTUFBTSxPQUFPLEdBQWdCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMvSixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDeEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ25CLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMxQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFBQyxPQUFPLE9BQU8sQ0FBQztRQUFDLENBQUM7UUFDbkYsSUFBSSxHQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQUMsT0FBTyxPQUFPLENBQUM7UUFBQyxDQUFDO1FBQ3pGLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFH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
|
package/dist_ts/tsdisk.cli.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { type IWorkspaceScanOptions, type IScanIssue } from './tsdisk.scan.js';
|
|
2
|
+
import { type IUsageReport } from './tsdisk.usage.js';
|
|
3
|
+
import { type IDiskProgress } from './tsdisk.progress.js';
|
|
4
|
+
export { formatBytes } from './tsdisk.progress.js';
|
|
2
5
|
export type { IWorkspaceScanOptions } from './tsdisk.scan.js';
|
|
3
6
|
import { type IToolCacheFinding } from './tsdisk.toolcaches.js';
|
|
4
7
|
interface ICommandResult {
|
|
@@ -8,6 +11,7 @@ interface ICommandResult {
|
|
|
8
11
|
truncated?: boolean;
|
|
9
12
|
}
|
|
10
13
|
export interface IRuntimeContext {
|
|
14
|
+
onProgress?: (progress: Partial<IDiskProgress>) => void;
|
|
11
15
|
runningAsRoot: boolean;
|
|
12
16
|
sudoAvailable: boolean;
|
|
13
17
|
sudoChecked: boolean;
|
|
@@ -23,30 +27,38 @@ interface IDuEntry {
|
|
|
23
27
|
bytes: number;
|
|
24
28
|
path: string;
|
|
25
29
|
}
|
|
26
|
-
export declare function formatBytes(bytes: number): string;
|
|
27
30
|
export declare function parseDuOutput(output: string): IDuEntry[];
|
|
28
31
|
export declare function collectToolCachePathsFromRoot(root: string, options: IWorkspaceScanOptions): Promise<IToolCacheFinding[]>;
|
|
29
32
|
export declare function collectProjectToolCacheReport(ctx: IRuntimeContext, roots?: string[]): Promise<{
|
|
30
33
|
roots: string[];
|
|
31
34
|
toolCaches: IToolCacheFinding[];
|
|
35
|
+
usagePriorityPaths: string[];
|
|
32
36
|
issues: IScanIssue[];
|
|
37
|
+
issueCounts: Partial<Record<"timeout" | "read-error" | "invalid-marker" | "depth-limit" | "entry-limit" | "mount-boundary" | "symlink" | "size-unavailable", number>>;
|
|
33
38
|
complete: boolean;
|
|
34
39
|
}>;
|
|
35
40
|
export declare function collectProjectToolCacheDiagnostics(ctx: IRuntimeContext): Promise<IToolCacheFinding[]>;
|
|
36
41
|
export declare function main(): Promise<void>;
|
|
37
42
|
export interface IDiagnosticSection {
|
|
38
43
|
name: string;
|
|
44
|
+
kind?: 'command' | 'derived';
|
|
45
|
+
derivedFrom?: 'usage.entries';
|
|
39
46
|
command: string;
|
|
40
47
|
args: string[];
|
|
41
48
|
result: ICommandResult;
|
|
42
49
|
complete: boolean;
|
|
43
50
|
}
|
|
51
|
+
export declare function diagnosticCommandComplete(command: string, result: ICommandResult): boolean;
|
|
44
52
|
export declare function collectDiskReport(ctx: IRuntimeContext, roots?: string[]): Promise<{
|
|
53
|
+
usage: IUsageReport;
|
|
54
|
+
reclaim: import("./tsdisk.progress.js").IReclaimEstimate;
|
|
45
55
|
sections: IDiagnosticSection[];
|
|
46
56
|
complete: boolean;
|
|
47
57
|
roots: string[];
|
|
48
58
|
toolCaches: IToolCacheFinding[];
|
|
59
|
+
usagePriorityPaths: string[];
|
|
49
60
|
issues: IScanIssue[];
|
|
61
|
+
issueCounts: Partial<Record<"timeout" | "read-error" | "invalid-marker" | "depth-limit" | "entry-limit" | "mount-boundary" | "symlink" | "size-unavailable", number>>;
|
|
50
62
|
schemaVersion: number;
|
|
51
63
|
generatedAt: string;
|
|
52
64
|
}>;
|