A
Austin Ziegler
I am pleased to announce the release of Archive::Tar::Minitar 0.5.1, a
bugfix release over Archive::Tar::Minitar 0.5.0. This is one of two
utility packages required for installation and use of Ruwiki as a
RubyGem.
For those who verify PGP signatures, note that I have changed to
signing my releases with GPG instead of PGP 8.
Archive::Tar::Minitar README
============================
Archive::Tar::Minitar is a pure-Ruby library and command-line utility that
provides the ability to deal with POSIX tar(1) archive files. The
implementation is based heavily on Mauricio Fernández's implementation in
rpa-base, but has been reorganised to promote reuse in other projects.
This release is version 0.5.1, offering a bugfix over version 0.5.0. The
library can only handle files and directories at this point. A future version
will be expanded to handle symbolic links and hard links in a portable manner.
The command line utility, minitar, can only create archives, extract from
archives, and list archive contents.
Using this library is easy. The simplest case is:
require 'zlib'
require 'archive/tar/minitar'
include Archive::Tar
# Packs everything that matches Find.find('tests')
File.open('test.tar', 'wb') { |tar| Minitar.pack('tests', tar) }
# Unpacks 'test.tar' to 'x', creating 'x' if necessary.
Minitar.unpack('test.tar', 'x')
A gzipped tar can be written with:
tgz = Zlib::GzipWriter.new(File.open('test.tgz', 'wb'))
# Warning: tgz will be closed!
Minitar.pack('tests', tgz)
tgz = Zlib::GzipReader.new(File.open('test.tgz', 'rb'))
# Warning: tgz will be closed!
Minitar.unpack(tgz, 'x')
As the case above shows, one need not write to a file. However, it will
sometimes require that one dive a little deeper into the API, as in the case
of StringIO objects. Note that I'm not providing a block with Minitar::Output,
as Minitar::Output#close automatically closes both the Output object and the
wrapped data stream object.
begin
sgz = Zlib::GzipWriter.new(StringIO.new(""))
tar = Output.new(sgz)
Find.find('tests') do |entry|
Minitar.pack_file(entry, tar)
end
ensure
# Closes both tar and sgz.
tar.close
end
Copyright
=========
# Copyright 2004 Mauricio Julio Fernández Pradier and Austin Ziegler
#
# This program is based on and incorporates parts of RPA:ackage from
# rpa-base (lib/rpa/package.rb and lib/rpa/util.rb) by Mauricio and has been
# adapted to be more generic by Austin.
#
# 'minitar' contains an adaptation of Ruby/ProgressBar by Satoru
# Takabayashi <[email protected]>, copyright © 2001 - 2004.
#
# This program is free software. It may be redistributed and/or modified
# under the terms of the GPL version 2 (or later) or Ruby's licence.
#
# $Id: README,v 1.2 2004/09/22 17:47:43 austin Exp $
bugfix release over Archive::Tar::Minitar 0.5.0. This is one of two
utility packages required for installation and use of Ruwiki as a
RubyGem.
For those who verify PGP signatures, note that I have changed to
signing my releases with GPG instead of PGP 8.
Archive::Tar::Minitar README
============================
Archive::Tar::Minitar is a pure-Ruby library and command-line utility that
provides the ability to deal with POSIX tar(1) archive files. The
implementation is based heavily on Mauricio Fernández's implementation in
rpa-base, but has been reorganised to promote reuse in other projects.
This release is version 0.5.1, offering a bugfix over version 0.5.0. The
library can only handle files and directories at this point. A future version
will be expanded to handle symbolic links and hard links in a portable manner.
The command line utility, minitar, can only create archives, extract from
archives, and list archive contents.
Using this library is easy. The simplest case is:
require 'zlib'
require 'archive/tar/minitar'
include Archive::Tar
# Packs everything that matches Find.find('tests')
File.open('test.tar', 'wb') { |tar| Minitar.pack('tests', tar) }
# Unpacks 'test.tar' to 'x', creating 'x' if necessary.
Minitar.unpack('test.tar', 'x')
A gzipped tar can be written with:
tgz = Zlib::GzipWriter.new(File.open('test.tgz', 'wb'))
# Warning: tgz will be closed!
Minitar.pack('tests', tgz)
tgz = Zlib::GzipReader.new(File.open('test.tgz', 'rb'))
# Warning: tgz will be closed!
Minitar.unpack(tgz, 'x')
As the case above shows, one need not write to a file. However, it will
sometimes require that one dive a little deeper into the API, as in the case
of StringIO objects. Note that I'm not providing a block with Minitar::Output,
as Minitar::Output#close automatically closes both the Output object and the
wrapped data stream object.
begin
sgz = Zlib::GzipWriter.new(StringIO.new(""))
tar = Output.new(sgz)
Find.find('tests') do |entry|
Minitar.pack_file(entry, tar)
end
ensure
# Closes both tar and sgz.
tar.close
end
Copyright
=========
# Copyright 2004 Mauricio Julio Fernández Pradier and Austin Ziegler
#
# This program is based on and incorporates parts of RPA:ackage from
# rpa-base (lib/rpa/package.rb and lib/rpa/util.rb) by Mauricio and has been
# adapted to be more generic by Austin.
#
# 'minitar' contains an adaptation of Ruby/ProgressBar by Satoru
# Takabayashi <[email protected]>, copyright © 2001 - 2004.
#
# This program is free software. It may be redistributed and/or modified
# under the terms of the GPL version 2 (or later) or Ruby's licence.
#
# $Id: README,v 1.2 2004/09/22 17:47:43 austin Exp $