changelog
- Fri, 19 Oct 2007 22:46:20 -0400
- by brett [Fri, 19 Oct 2007 22:46:20 -0400] rev 28
- [svn] Change all the license notices from GPLv2 to GPLv3.
Instead of checking the archive contents, figuring out what to do, and
doing it, instead we now always extract the archive to a private directory,
and then shuffle around the contents appropriately. I expected this to be
a bigger win than my benchmarks have borne out, but I'm sticking with this
strategy because it provides a cleaner separation of responsibilities
between the extractors and the archive type handlers, and also I have to
believe it's a much better way to handle bigger archives -- since we're now
reading it once and not twice.
- Sun, 29 Apr 2007 15:30:01 -0400
- by brett [Sun, 29 Apr 2007 15:30:01 -0400] rev 27
- [svn] Really small cleanliness bit.
- Sun, 29 Apr 2007 15:25:04 -0400
- by brett [Sun, 29 Apr 2007 15:25:04 -0400] rev 26
- [svn] Little DRY cleanups.
- Sun, 29 Apr 2007 15:12:02 -0400
- by brett [Sun, 29 Apr 2007 15:12:02 -0400] rev 25
- [svn] Move policy-handling code into a dedicated set of classes. This makes
question construction at least moderately cleaner, and more importantly, it
gets it out of the main application class, where it was bugging me.
- Sun, 29 Apr 2007 13:29:50 -0400
- by brett [Sun, 29 Apr 2007 13:29:50 -0400] rev 24
- [svn] Documentation update.
- Sat, 28 Apr 2007 23:52:36 -0400
- by brett [Sat, 28 Apr 2007 23:52:36 -0400] rev 23
- [svn] If an archive contains other archives, and the user didn't specify that
they wanted recursion, prompt them to find out what they want to do.
This required some changes in the way prompting for one-item archives works
too, because if an archive inside another archive is itself a one-item
archive, things get really weird. I'm still not really sure what the right
policy is for that.
I'm not wild about this code. It feels like programming a bunch of special
cases. I need to figure out a better way to abstract it. I'm thinking
some kind of Policy class....
- Sat, 21 Apr 2007 13:09:58 -0400
- by brett [Sat, 21 Apr 2007 13:09:58 -0400] rev 22
- [svn] Improve the way we check archive contents. If all the entries look like
they're in ., they really shouldn't count as being in the same directory;
look at the next piece of the path. If the archive only has one
non-directory item, report that more clearly. You'll be able to tell by
whether or not there's a trailing slash in the prompt.
Improve the tests for doing straight decompression, and seek to the
beginning of the archive before we start writing to the file -- otherwise,
we write 0-byte files.
Lots of new ideas in the TODO. I think I'll do another release once
recursion is interactive.
- Sat, 21 Apr 2007 10:22:32 -0400
- by brett [Sat, 21 Apr 2007 10:22:32 -0400] rev 21
- [svn] Do some tests with a .tar.bz2 as well as a .tar.gz. I thought there were
some bugs with this that I found when using dtrx, but I can't reproduce
them this way, so I guess I'll have to investigate further. In the
meantime, they can't hurt.
- Sat, 10 Feb 2007 20:43:00 -0500
- by brett [Sat, 10 Feb 2007 20:43:00 -0500] rev 20
- [svn] If the archive contains one directory with the "wrong" name, ask the user
what they want to do to extract it.
Also add a switch to prevent being asked this question, for use in scripts
and the like.
- Sat, 10 Feb 2007 16:43:44 -0500
- by brett [Sat, 10 Feb 2007 16:43:44 -0500] rev 19
- [svn] Rename the program to dtrx.
Add a -l/-t option, which just lists the contents of an archive without
extracting anything.
- Tue, 02 Jan 2007 20:30:17 -0500
- by brett [Tue, 02 Jan 2007 20:30:17 -0500] rev 18
- [svn] Add basic documentation, and make this version 3.0.
- Sun, 31 Dec 2006 19:29:46 -0500
- by brett [Sun, 31 Dec 2006 19:29:46 -0500] rev 17
- [svn] Lots of tests for various boundary cases, and slightly better handling for
some of them.
- Sun, 31 Dec 2006 19:27:23 -0500
- by brett [Sun, 31 Dec 2006 19:27:23 -0500] rev 16
- [svn] There's now an entirely new object hierarchy for handlers, because the
number of corner cases, switches, etc. was starting to get out of hand.
This makes it easier to tell what's going on in a given case.
- Sun, 31 Dec 2006 19:25:16 -0500
- by brett [Sun, 31 Dec 2006 19:25:16 -0500] rev 15
- [svn] Add a -f/--flat option, which will extract the archive contents into the
current directory, rather than a dedicated subdirectory.
- Sun, 31 Dec 2006 19:20:26 -0500
- by brett [Sun, 31 Dec 2006 19:20:26 -0500] rev 14
- [svn] Add support for just decompressing files that are compressed. So, if you
have foobar.txt.gz, running x on it will give you foobar.txt.
I also moved the test definitions to a YAML file, which makes them easier
to write and understand. Hopefully.
- Tue, 19 Dec 2006 19:27:14 -0500
- by brett [Tue, 19 Dec 2006 19:27:14 -0500] rev 13
- [svn] Add options to tweak the logging level to taste.
- Tue, 19 Dec 2006 19:13:29 -0500
- by brett [Tue, 19 Dec 2006 19:13:29 -0500] rev 12
- [svn] Introduce a real logging system. Right now all this really gets us is the
return of warnings when BombHandler has to use an unusual extraction
directory, but it can grow from here.
- Tue, 19 Dec 2006 18:01:00 -0500
- by brett [Tue, 19 Dec 2006 18:01:00 -0500] rev 11
- [svn] This is version 2.0 because I said so.
- Sun, 17 Dec 2006 09:20:02 -0500
- by brett [Sun, 17 Dec 2006 09:20:02 -0500] rev 10
- [svn] Add tests for the case where we do recursive extraction of an archive
that's not in the current working directory, and fix the associated bug.
- Sun, 17 Dec 2006 08:30:32 -0500
- by brett [Sun, 17 Dec 2006 08:30:32 -0500] rev 9
- [svn] Fix issues with basename methods. First, string's rsplit method only
arrived in Python 2.4, so don't use it. Second, tweak the RPM basename
method to catch the case where arch == noarch.
- Mon, 13 Nov 2006 23:06:30 -0500
- by brett [Mon, 13 Nov 2006 23:06:30 -0500] rev 8
- [svn] Make ExtractorApplication suck less. Now the strategies for handling
different archive types are out in their own classes, and polymorphism
takes care of everything for us. This is way cleaner.
While I was at it I changed the behavior in the case where an archive
contains one directory that doesn't match the basename. I now treat that
the same as a bomb. This can lead to silly directory structures but
ensures that there's no "data" loss nor unexpected results.
- Sat, 11 Nov 2006 18:42:19 -0500
- by brett [Sat, 11 Nov 2006 18:42:19 -0500] rev 7
- [svn] Add a test for recursive extraction which also makes sure that we fix
permissions after we extract the archive, and DTRT when an archive contains
one file. Add code to handle the latter two cases.
ExtractorApplication is a total mess at this point. I already am having a
hard time following how the pieces fit together. Cleaning it up is my next
task; that'll be easier now that I test most of the functionality again.
- Mon, 06 Nov 2006 22:36:47 -0500
- by brett [Mon, 06 Nov 2006 22:36:47 -0500] rev 6
- [svn] The big thing here is recursive extraction. Find archive files in the
thing we're extracting, and extract those when we're done, if the user
provides the -r option. While I was at it:
* --help/--version switches too.
* Throw a more useful error if we get a weird encoding.
* Some other small fix I'm forgetting.
I should definitely add tests for this. I also really want to step back
and reevaluate the structure of ExtractorApplication. I don't expect it to
be a shining example of good OO anyway, but it's getting moderately hairy
now, with lots of shared state and side effects and stuff.
- Sat, 04 Nov 2006 10:34:06 -0500
- by brett [Sat, 04 Nov 2006 10:34:06 -0500] rev 5
- [svn] Deal with a bunch of low-hanging fruit:
* Correctly cope with mimetype oddities I found on Fedora.
* I'm not doing anything with shar files yet, so take out that hook.
* Better error handling and reporting throughout, including a meaningful
exit code.
* Remove unused cruft from the BaseExtractor.run method.
* When reporting the "basename" for the archive, make sure it doesn't
include any preceding path.
* If the archive contains one directory whose name doesn't match the
archive basename, rename it after extraction.
- Although I just realized this probably does the wrong thing if there's
just one file in the archive.
- Wed, 01 Nov 2006 22:03:46 -0500
- by brett [Wed, 01 Nov 2006 22:03:46 -0500] rev 4
- [svn] Additions.
- Tue, 31 Oct 2006 19:31:44 -0500
- by brett [Tue, 31 Oct 2006 19:31:44 -0500] rev 3
- [svn] Ideas off the top of my head.
- Sun, 29 Oct 2006 20:03:12 -0500
- by brett [Sun, 29 Oct 2006 20:03:12 -0500] rev 2
- [svn] Fix a small bug that would crash the program if an archive was empty.
Make basename calculation more robust.
Go ahead and run .exe files through the ZipExtractor. Need to cope more
gracefully when it doesn't work, but I've lost momentum for tonight.
- Sun, 29 Oct 2006 19:34:46 -0500
- by brett [Sun, 29 Oct 2006 19:34:46 -0500] rev 1
- [svn] Repository reorganization to make tags easy
- Sun, 29 Oct 2006 19:31:27 -0500
- by brett [Sun, 29 Oct 2006 19:31:27 -0500] rev 0
- [svn] Repository reorganization