Skip to content

Commit 7e0d4f5

Browse files
authored
Merge pull request #92 from yuiseki/feat/explicit-layer-list-flag
Inspect: make layer list opt-in
2 parents 6cd842f + 4558615 commit 7e0d4f5

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

docs/SPEC.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ vt-optimizer -m <mbtiles> [-s <style.json>] [-o <output>] [-z <z> -x <x> -y <y>
176176
* `--histogram-buckets 10`(デフォルト 10)
177177
* `--topn <k>`: 最大タイル(サイズ)上位 k 件(z/x/y、bytes、layer count 等)
178178
* `--sample <count|ratio>`: サンプリングは **ズームごと**に適用する
179+
* `--include-layer-list`: レイヤー統計を出力する(明示指定がない場合は省略)
179180

180181
### 4.5 optimize
181182

src/cli.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ pub struct InspectArgs {
151151
#[arg(long, default_value_t = false)]
152152
pub ndjson_compact: bool,
153153

154+
/// Include per-layer stats (expensive; requires reading and decoding tiles).
155+
#[arg(long, default_value_t = false)]
156+
pub include_layer_list: bool,
157+
154158
/// Tile summary detail level (full or compact).
155159
#[arg(long, value_enum, default_value_t = TileInfoFormat::Full)]
156160
pub tile_info_format: TileInfoFormat,

src/main.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ fn main() -> Result<()> {
237237
sort: vt_optimizer::cli::TileSortArg::Size,
238238
ndjson_lite: false,
239239
ndjson_compact: false,
240+
include_layer_list: false,
240241
tile_info_format: vt_optimizer::cli::TileInfoFormat::Full,
241242
};
242243
run_inspect(args)?;
@@ -266,6 +267,7 @@ fn main() -> Result<()> {
266267
sort: vt_optimizer::cli::TileSortArg::Size,
267268
ndjson_lite: false,
268269
ndjson_compact: false,
270+
include_layer_list: false,
269271
tile_info_format: vt_optimizer::cli::TileInfoFormat::Full,
270272
};
271273
run_inspect(args)?;
@@ -350,9 +352,7 @@ fn run_inspect(args: vt_optimizer::cli::InspectArgs) -> Result<()> {
350352
summary,
351353
layers,
352354
recommend: args.recommend,
353-
include_layer_list: output == ReportFormat::Text
354-
&& (stats_filter.includes(vt_optimizer::output::StatsSection::Layers)
355-
|| stats_filter.includes(vt_optimizer::output::StatsSection::Summary)),
355+
include_layer_list: args.include_layer_list,
356356
list_tiles: if args.list_tiles {
357357
Some(TileListOptions {
358358
limit: args.limit,
@@ -376,7 +376,9 @@ fn run_inspect(args: vt_optimizer::cli::InspectArgs) -> Result<()> {
376376
}
377377
};
378378
let report = vt_optimizer::output::apply_tile_info_format(report, args.tile_info_format);
379-
let summary_totals = if stats_filter.includes(vt_optimizer::output::StatsSection::Summary) {
379+
let summary_totals = if args.include_layer_list
380+
&& stats_filter.includes(vt_optimizer::output::StatsSection::Summary)
381+
{
380382
vt_optimizer::output::summarize_file_layers(&report.file_layers)
381383
} else {
382384
None
@@ -411,8 +413,12 @@ fn run_inspect(args: vt_optimizer::cli::InspectArgs) -> Result<()> {
411413
stats_filter.includes(vt_optimizer::output::StatsSection::Histogram);
412414
let include_histogram_by_zoom = args.stats.is_some()
413415
&& stats_filter.includes(vt_optimizer::output::StatsSection::HistogramByZoom);
414-
let include_layers = stats_filter.includes(vt_optimizer::output::StatsSection::Layers);
415416
let hide_tile_summary_sections = args.x.is_some() && args.y.is_some();
417+
let include_layers = args.include_layer_list
418+
&& stats_filter.includes(vt_optimizer::output::StatsSection::Layers);
419+
let show_layers_tip = !args.include_layer_list
420+
&& stats_filter.includes(vt_optimizer::output::StatsSection::Layers)
421+
&& !hide_tile_summary_sections;
416422
let include_recommendations =
417423
stats_filter.includes(vt_optimizer::output::StatsSection::Recommendations);
418424
let include_bucket = stats_filter.includes(vt_optimizer::output::StatsSection::Bucket);
@@ -502,6 +508,10 @@ fn run_inspect(args: vt_optimizer::cli::InspectArgs) -> Result<()> {
502508
format_summary_label("Values in this tile", totals.property_value_count)
503509
);
504510
}
511+
if show_layers_tip {
512+
println!();
513+
println!("Tip: use --include-layer-list to include layer statistics.");
514+
}
505515
}
506516
if include_zoom && !report.by_zoom.is_empty() {
507517
println!();
@@ -603,6 +613,10 @@ fn run_inspect(args: vt_optimizer::cli::InspectArgs) -> Result<()> {
603613
);
604614
}
605615
}
616+
if show_layers_tip && !include_summary {
617+
println!();
618+
println!("Tip: use --include-layer-list to include layer statistics.");
619+
}
606620
if include_recommendations && !report.recommended_buckets.is_empty() {
607621
println!();
608622
println!("{}", emphasize_section_heading("## Recommendations"));

tests/cli.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ fn parse_inspect_options() {
143143
"zxy",
144144
"--ndjson-lite",
145145
"--ndjson-compact",
146+
"--include-layer-list",
146147
"--tile-info-format",
147148
"compact",
148149
]);
@@ -173,6 +174,7 @@ fn parse_inspect_options() {
173174
assert_eq!(args.sort, vt_optimizer::cli::TileSortArg::Zxy);
174175
assert!(args.ndjson_lite);
175176
assert!(args.ndjson_compact);
177+
assert!(args.include_layer_list);
176178
assert_eq!(args.tile_info_format, TileInfoFormat::Compact);
177179
}
178180
_ => panic!("expected inspect command"),
@@ -250,5 +252,6 @@ fn inspect_help_describes_fields() {
250252
assert!(help.contains("Fast defaults"));
251253
assert!(help.contains("Histogram bucket index"));
252254
assert!(help.contains("NDJSON"));
255+
assert!(help.contains("Include per-layer stats"));
253256
assert!(help.contains("Tile summary detail level"));
254257
}

0 commit comments

Comments
 (0)