Adds a utility binary and adds tasks to the windows node

This commit is contained in:
zontreck 2024-08-24 00:02:02 -07:00
parent 6555b6c8f0
commit 92df8e4dcd
3 changed files with 104 additions and 14 deletions

67
bin/mkfsreport.dart Normal file
View file

@ -0,0 +1,67 @@
/*
Make File System Report
This tool will generate a HTML report for the base path specified.
*/
import 'dart:ffi';
import 'dart:io';
import 'package:libac_dart/argparse/Args.dart';
import 'package:libac_dart/argparse/Builder.dart';
import 'package:libac_dart/argparse/CLIHelper.dart';
import 'package:libac_dart/argparse/types/Bool.dart';
import 'package:libac_dart/argparse/types/String.dart';
import 'package:libac_dart/consts.dart';
import 'package:libac_dart/utils/IOTools.dart';
Future<int> main(List<String> args) async {
String VERSION = "1.0.082424.0001";
Arguments defaults = ArgumentsBuilder.builder()
.withArgument(BoolArgument(
name: "asc",
description: "Operate in ascending mode, smallest size listed first"))
.withArgument(StringArgument(
name: "path",
value: "/",
description: "The path to generate a report for"))
.withArgument(
BoolArgument(name: "help", description: "Hey look! It's me!"))
.withArgument(StringArgument(
name: "o",
value: "file.html",
description:
"Where to place the report. If not specified, stdout is used"))
.build();
Arguments parsed = await CLIHelper.parseArgs(args, Arguments());
String helpTest =
"Make File System Report\nVersion: $VERSION\nUsing LibAC Version: ${Constants.VERSION}\nAuthor: Tara Piccari\n\n${CLIHelper.makeArgCLIHelp(defaults)}";
if (parsed.count == 0 || !parsed.hasArg("path") || parsed.hasArg("help")) {
print(helpTest);
return 0;
}
bool ascending = false;
if (parsed.hasArg("asc")) ascending = true;
StringArgument pathArg = parsed.getArg("path") as StringArgument;
print("> Analyzing files...");
await getDirectorySize(pathArg.value,
cacheSize: true, recursive: true, verbose: parsed.hasArg("o"));
FileInformationCache FIC = FileInformationCache.obtain();
String report =
await FIC.generateHTMLReport(ascending: ascending, VERSION: VERSION);
if (parsed.hasArg("o")) {
prnt("> Generating report...\r");
StringArgument outputPath = parsed.getArg("o") as StringArgument;
await File(outputPath.value).writeAsString(report);
prnt("\r> Task Completed\n");
} else {
print(report);
}
return 0;
}