[file_utils] dirpacker: --machine-readable

The option --machine-readable allows to print the list of bins in a
machine-readable format.
This commit is contained in:
Matteo Cypriani 2014-06-01 21:43:27 -04:00
parent 235a22aba1
commit 718d4c5c95
2 changed files with 22 additions and 6 deletions

View File

@ -16,6 +16,10 @@ called a bin.
By default, dirpacker displays a list of bins and the files they
would contain, along with the size of each file and some statistics.
With the option --machine-readable, this list will be printed in a
machine-readable format: each line contains a bin's name, then a
tabulation, then a file that belongs to this bin.
With the option --move, a directory will be created for each volume and
the files will be moved to the corresponding volume.

View File

@ -53,12 +53,18 @@ class Bin:
def print(self):
"""Displays the contents of the bin.
"""
print("\n### {} ###\nList of files:".format(self.name()))
if not options.machine_readable:
print("\n### {} ###\nList of files:".format(self.name()))
for filename, size in sorted(self.files.items()):
print("{:12.2f} MiB\t{}".format(size, filename))
sizefree = options.maxbinsize - self.size
print("This bin's size: {:.2f} MiB".format(self.size))
print("Unused: {:.2f} MiB".format(sizefree))
if options.machine_readable:
print(self.name(), end="")
else:
print("{:12.2f} MiB".format(size))
print("\t{}".format(filename))
if not options.machine_readable:
sizefree = options.maxbinsize - self.size
print("This bin's size: {:.2f} MiB".format(self.size))
print("Unused: {:.2f} MiB".format(sizefree))
def name(self):
"""Returns the bin's name'
@ -136,6 +142,9 @@ arg_parser.add_argument("--prefix", action="store", default="bin_",
help="prefix of a bin's name (default: \"bin_\")")
arg_parser.add_argument("--move", action="store_true",
help="move input to per-volume directories")
arg_parser.add_argument("-m", "--machine-readable", action="store_true",
help="print the list of volumes in a machine-readable"
" format; implies --quiet")
arg_parser.add_argument("-v", "--verbose", action="store_true", default=True,
help="be verbose (this is the default)")
arg_parser.add_argument("-q", "--quiet", action="store_false", dest="verbose",
@ -144,6 +153,9 @@ arg_parser.add_argument("filenames", metavar="file", nargs="+",
help="files or directories to pack")
options = arg_parser.parse_args()
if options.machine_readable:
options.verbose = False
### Preliminary statistics ###
@ -198,7 +210,7 @@ Actual unused space over the {} bins created: {:.2f} MiB"""
# Print the contents of the bins
if options.verbose:
if options.verbose or options.machine_readable:
for b in bins:
b.print()