# HG changeset patch # User dbateman # Date 1158096327 0 # Node ID f1375e3f3b97b22472f296edfd7ff3264e346340 # Parent 14078139f94114bec9993fd7963f3039a315bd93 [project @ 2006-09-12 21:25:27 by dbateman] diff -r 14078139f941 -r f1375e3f3b97 scripts/ChangeLog --- a/scripts/ChangeLog Tue Sep 12 02:46:33 2006 +0000 +++ b/scripts/ChangeLog Tue Sep 12 21:25:27 2006 +0000 @@ -1,3 +1,11 @@ +2006-08-30 David Bateman + + * pkg/pkg.m (install): Disallow bundles of packages. More verbose + error message for archive name not matching package name. + (installed_packages): Size header of printed results to + arguments. Sort the list of installed packages before printing + them. + 2006-09-11 Paul Kienzle * signal/freqz.m: Update tests. @@ -22,7 +30,7 @@ 2006-08-30 David Bateman - * pkg/pkg.m create_pkgadddel): Resolve variable name-clash from + * pkg/pkg.m (create_pkgadddel): Resolve variable name-clash from previous change. 2006-08-26 David Bateman diff -r 14078139f941 -r f1375e3f3b97 scripts/pkg/pkg.m --- a/scripts/pkg/pkg.m Tue Sep 12 02:46:33 2006 +0000 +++ b/scripts/pkg/pkg.m Tue Sep 12 21:25:27 2006 +0000 @@ -157,6 +157,10 @@ if (err) error("Couldn't read directory produced by tar: %s\n", msg); endif + + if (length(dirlist) > 3) + error("Bundles of packages are not allowed") + endif for k = 3:length(dirlist) # the two first entries of dirlist are "." and ".." packdir = [tmpdir "/" dirlist{k} "/"]; @@ -173,7 +177,8 @@ [dummy, nm] = fileparts(tgz); if ((length(nm) >= length(desc.name)) && ! strcmp(desc.name,nm(1:length(desc.name)))) - error("Package name doesn't correspond to its filename"); + error(["Package name '",desc.name,"' doesn't correspond", + "to its filename '",nm,"'"]); endif ## Set default installation directory @@ -992,32 +997,37 @@ return; endif - ## Print a header + ## Compute the maximal lengths of name, version, and dir h1 = "Package Name"; h2 = "Version"; h3 = "Installation directory"; + max_name_length = length(h1); + max_version_length = length(h2); + names = cell(num_packages,1); + for i = 1:num_packages + max_name_length = max(max_name_length, + length(installed_packages{i}.name)); + max_version_length = max(max_version_length, + length(installed_packages{i}.version)); + names{i} = installed_packages{i}.name; + endfor + h1 = postpad (h1, max_name_length,' '); + h2 = postpad (h2, max_version_length, ' ');; + + ## Print a header header = sprintf("%s | %s | %s\n", h1, h2, h3); printf(header); tmp = sprintf(repmat("-", 1, length(header)-1)); tmp(length(h1)+2) = "+"; tmp(length(h1)+length(h2)+5) = "+"; printf("%s\n", tmp); - ## Compute the maximal lengths of name, version, and dir - max_name_length = length(h1); - max_version_length = length(h2); - for i = 1:num_packages - max_name_length = max(max_name_length, - length(installed_packages{i}.name)); - max_version_length = max(max_version_length, - length(installed_packages{i}.version)); - endfor - ## Print the packages format = sprintf("%%%ds | %%%ds | %%s\n", max_name_length, max_version_length); + [dummy, idx] = sort(names); for i = 1:num_packages - cur_name = installed_packages{i}.name; - cur_version = installed_packages{i}.version; - cur_dir = installed_packages{i}.dir; + cur_name = installed_packages{idx(i)}.name; + cur_version = installed_packages{idx(i)}.version; + cur_dir = installed_packages{idx(i)}.dir; printf(format, cur_name, cur_version, cur_dir); endfor endfunction