# HG changeset patch # User brett # Date 1167787817 18000 # Node ID 1600807a32bdf612d4d1b9c436d178695ee969dc # Parent 481a2b4be471f165b82420c0194ce919ad662e50 [svn] Add basic documentation, and make this version 3.0. diff -r 481a2b4be471 -r 1600807a32bd INSTALL --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/INSTALL Tue Jan 02 20:30:17 2007 -0500 @@ -0,0 +1,47 @@ +x Installation Documentation +============================ + +Requirements +------------ + +To run x, you'll need Python_ 2.4 or greater. You can also use Python 2.3 +if you separately install the `subprocess module`_. + +.. _Python: http://www.python.org/ +.. _`subprocess module`: http://www.lysator.liu.se/~astrand/popen5/ + +x calls out to different external tools to support different archive types. +Most of these are already installed on most GNU/Linux systems, so you +probably won't have to worry about these too much, but just for +completeness, the exact requirements for each format are as follows: + +tar archives + tar + +zip archives + unzip, zipinfo + +cpio archives + cpio + +rpm archives + rpm2cpio, cpio + +deb archives + ar, tar, zcat + +Files compressed with gzip or compress + zcat + +Files compressed with bzip2 + bzcat + +Installation +------------ + +x is just a simple script, making it easy to stash wherever you need it. +Just copy ``scripts/x`` to a location that's convenient for you. If you'd +like to install the program system-wide, you can run the following as root +or equivalent:: + + python setup.py install diff -r 481a2b4be471 -r 1600807a32bd MANIFEST.in --- a/MANIFEST.in Sun Dec 31 19:29:46 2006 -0500 +++ b/MANIFEST.in Tue Jan 02 20:30:17 2007 -0500 @@ -1,3 +1,3 @@ -include COPYING +include COPYING INSTALL README recursive-include tests * exclude tests/testscript.sh diff -r 481a2b4be471 -r 1600807a32bd README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Tue Jan 02 20:30:17 2007 -0500 @@ -0,0 +1,79 @@ +x - Intelligent archive extraction +================================== + +Introduction +------------ + +x extracts archives in a number of different formats; it currently supports +tar, zip, cpio, rpm, and deb. It can also decompress files compressed with +gzip, bzip2, or compress. + +In addition to providing one command to handle many different archive +types, x also aids the user by extracting contents consistently. By +default, everything will be written to a dedicated directory that's named +after the archive. x will also change the permissions to ensure that the +owner can read and write all those files. + +Running x +--------- + +To run x, simply call it with the archive(s) you wish to extract as +arguments. For example:: + + x coreutils-5.*.tar.gz + +x supports a number of options to mandate specific behavior: + +-r, --recursive + With this option, x will search inside the archives you specify to see + if any of the contents are themselves archives, and extract those as + well. + +-o, --overwrite + Normally, x will avoid extracting into a directory that already exists, + and instead try to find an alternative name to use. If this option is + listed, x will use the default directory name no matter what. + +-f, --flat + Extract archive contents into the current directory, instead of their + own dedicated directory. This is handy if you have multiple archive + files which all need to be extracted into the same directory structure. + Note that existing files may be overwritten with this option. + +-q, --quiet + Suppress warning messages. Listing this option twice will cause the + x to be silent if at all possible. + +-v, --verbose + Print more information about x's behavior. You can list this option up + to three times for more information. + +--help + Display basic help. + +--version + Display x's version, copyright, and license information. + +Other Useful Information +------------------------ + +x 3.0 is copyright (c) 2006 `Brett Smith`_. Feel free to send comments, +bug reports, patches, and so on. You can find the latest version of x on +`its home page`_. + +.. _`Brett Smith`: mailto:brettcsmith@brettcsmith.org +.. _`its home page`: http://www.brettcsmith.org/2006/x/ + +x is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., 51 +Franklin Street, 5th Floor, Boston, MA, 02111. diff -r 481a2b4be471 -r 1600807a32bd TODO --- a/TODO Sun Dec 31 19:29:46 2006 -0500 +++ b/TODO Tue Jan 02 20:30:17 2007 -0500 @@ -1,8 +1,8 @@ Things which I have a use case/anti-use case for: -* Avoid overwriting directories. -* Decompress non-archive files. +* Figure out what the deal is with strerror. * Better error messages (file doesn't exist, isn't readable, etc.) * Interactivity: ask about overwriting, recursing, etc. +* Consistently raise and handle exceptions. Things that are generally good: * Better tests. @@ -14,3 +14,4 @@ * Use zipfile instead of the zip commands. * Processing from stdin. * Extracting control.tar.gz from deb files. +* shar support. diff -r 481a2b4be471 -r 1600807a32bd scripts/x --- a/scripts/x Sun Dec 31 19:29:46 2006 -0500 +++ b/scripts/x Tue Jan 02 20:30:17 2007 -0500 @@ -29,7 +29,7 @@ from cStringIO import StringIO -VERSION = "2.1" +VERSION = "3.0" VERSION_BANNER = """x version %s Copyright (c) 2006 Brett Smith diff -r 481a2b4be471 -r 1600807a32bd setup.py --- a/setup.py Sun Dec 31 19:29:46 2006 -0500 +++ b/setup.py Tue Jan 02 20:30:17 2007 -0500 @@ -3,10 +3,11 @@ from distutils.core import setup setup(name="x", - version = "2.0", + version = "3.0", description = "Script to intelligently extract multiple archive types", author = "Brett Smith", author_email = "brettcsmith@brettcsmith.org", url = "http://www.brettcsmith.org/2006/x", scripts = ['scripts/x'], + license = "GNU General Public License, version 2 or later" )