diff --git a/commands/files.rb b/commands/files.rb index 9a2b429d8..c23462b80 100644 --- a/commands/files.rb +++ b/commands/files.rb @@ -5,12 +5,6 @@ require_relative '../lib/package_utils' class Command def self.files(pkg) - # Check if the package is even installed first, as this is the most likely reason we cannot find a filelist. - unless PackageUtils.installed?(pkg.name) - puts "Package #{pkg.name} is not installed.".lightred - return - end - # Fake packages do not have any files. if pkg.is_fake? puts "Package #{pkg.name} is fake and has no files.".lightred @@ -18,19 +12,33 @@ class Command end # We can't do anything if we don't have the filelist. - unless File.file?(filelist_path = File.join(CREW_META_PATH, "#{pkg.name}.filelist")) - puts "Package #{pkg.name} does not have a filelist :(".lightred + filelist_path = File.join("#{CREW_LIB_PATH}/manifest/#{ARCH}/#{pkg.name[0]}/", "#{pkg.name}.filelist") + puts "Manifest file: #{filelist_path}".yellow if CREW_VERBOSE + unless File.file?(filelist_path) + if PackageUtils.compatible?(pkg) + puts "Package #{pkg.name} does not have a filelist but should since #{ARCH} is compatible. :(".lightred + else + puts "Package #{pkg.name} does not have a filelist since #{ARCH} is not compatible. :(".lightred + end return end - # Print the name and description of the package. - puts pkg.name.lightgreen + ": #{pkg.description}".lightblue + # Installed packages have green names, incompatible packages have red, and compatible but not installed have blue. + if PackageUtils.installed?(pkg.name) + print pkg.name.lightgreen + elsif !PackageUtils.compatible?(pkg) + print pkg.name.lightred + else + print pkg.name.lightblue + end + puts ": #{pkg.description}".lightblue - size, filelist = ConvenienceFunctions.read_filelist(filelist_path, always_calcuate_from_disk: true) + # Extract the filelist and the total size of those files. + filesize, filelist = ConvenienceFunctions.read_filelist(filelist_path) # Print the filelist, the total number of files, and the total size of those files. puts filelist - puts "\nTotal found: #{filelist.count}".lightgreen - puts "Disk usage: #{MiscFunctions.human_size(size)}".lightgreen + puts "\nTotal found: #{filelist.count - 1}".lightgreen + puts "Disk usage: #{MiscFunctions.human_size(filesize)}".lightgreen end end diff --git a/commands/help.rb b/commands/help.rb index 3b66f7b29..46c37f566 100644 --- a/commands/help.rb +++ b/commands/help.rb @@ -50,9 +50,8 @@ class Command EOT when 'files' puts <<~EOT - Display installed files of package(s). - Usage: crew files [ ...] - The package(s) must be currently installed. + Display files of package(s). + Usage: crew files [-v|--verbose] [ ...] EOT when 'install' puts <<~EOT diff --git a/lib/const.rb b/lib/const.rb index e91772b43..8b7da6cef 100644 --- a/lib/const.rb +++ b/lib/const.rb @@ -4,7 +4,7 @@ require 'etc' require 'open3' OLD_CREW_VERSION = defined?(CREW_VERSION) ? CREW_VERSION : '1.0' -CREW_VERSION = '1.68.8' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION +CREW_VERSION = '1.68.9' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION # Kernel architecture. KERN_ARCH = Etc.uname[:machine] @@ -497,7 +497,7 @@ CREW_DOCOPT = <<~DOCOPT crew deps [options] [--deep] [-t|--tree] [-b|--include-build-deps] [--exclude-buildessential] [-v|--verbose] ... crew diskstat [options] [-a|--all] [] crew download [options] [-s|--source] [-v|--verbose] ... - crew files [options] ... + crew files [options] [-v|--verbose] ... crew help [options] [] [-v|--verbose] [] crew install [options] [-f|--force] [-k|--keep] [--regenerate-filelist] [-s|--source] [-S|--recursive-build] [-v|--verbose] ... crew list [options] [-v|--verbose] (available|compatible|incompatible|essential|installed) diff --git a/lib/convenience_functions.rb b/lib/convenience_functions.rb index 55b98c781..36d0c6ef7 100644 --- a/lib/convenience_functions.rb +++ b/lib/convenience_functions.rb @@ -64,10 +64,8 @@ class ConvenienceFunctions def self.read_filelist(path, always_calcuate_from_disk: false) filelist = File.readlines(path, chomp: true) - if filelist.first&.start_with?('# Total size') && !always_calcuate_from_disk - total_size, *contents = filelist - return [total_size[/Total size: (\d+)/, 1].to_i, contents] + return [filelist.first[/Total size: (\d+)/, 1].to_i, filelist] else return [get_package_disk_size(filelist), filelist] end