@@ -305,7 +305,28 @@ impl PackageMetadata {
305305 }
306306
307307 // Generate blob reference and download URLs
308- if let Some ( filename) = manifest. filenames ( ) . first ( ) {
308+ let filenames = manifest. filenames ( ) ;
309+
310+ // Find the main binary - prefer pkg_name, then exclude known auxiliary files
311+ let main_file = filenames. iter ( ) . find ( |f| {
312+ let name = f. rsplit ( '/' ) . next ( ) . unwrap_or ( f) ;
313+ name == self . pkg_name || name == & self . pkg
314+ } ) . or_else ( || {
315+ // Fallback: find first file that's not an auxiliary file
316+ filenames. iter ( ) . find ( |f| {
317+ let name = f. rsplit ( '/' ) . next ( ) . unwrap_or ( f) ;
318+ !name. ends_with ( ".version" )
319+ && !name. ends_with ( ".log" )
320+ && !name. ends_with ( ".sig" )
321+ && !name. ends_with ( ".json" )
322+ && name != "CHECKSUM"
323+ && name != "SBUILD"
324+ && name != "LICENSE"
325+ && name != "BUILD.log"
326+ } )
327+ } ) . or_else ( || filenames. first ( ) ) ;
328+
329+ if let Some ( filename) = main_file {
309330 self . ghcr_blob = manifest. get_blob_ref ( filename) ;
310331
311332 // Generate download URL and manifest URL
@@ -317,9 +338,15 @@ impl PackageMetadata {
317338 "https://api.ghcr.pkgforge.dev/{}?tag={}&manifest" ,
318339 ghcr_path, tag
319340 ) ) ;
320- // Size is usually same as ghcr_size for single binary packages
321- self . size_raw = self . ghcr_size_raw ;
322- self . size = self . ghcr_size . clone ( ) ;
341+
342+ // Get size of main binary if available
343+ if let Some ( layer) = manifest. get_layer_by_filename ( filename) {
344+ self . size_raw = Some ( layer. size ) ;
345+ self . size = Some ( format_size ( layer. size ) ) ;
346+ } else {
347+ self . size_raw = self . ghcr_size_raw ;
348+ self . size = self . ghcr_size . clone ( ) ;
349+ }
323350 }
324351 }
325352
0 commit comments