coquelicot.git
5 years agoupdate NEWS file for version 0.9.2 coquelicot-0.9.2
Lunar [Mon, 8 Apr 2013 15:54:50 +0000 (15:54 +0000)]
update NEWS file for version 0.9.2

5 years agobump version number to 0.9.2
Lunar [Mon, 8 Apr 2013 15:27:03 +0000 (15:27 +0000)]
bump version number to 0.9.2

5 years agoadd a TODO entry about supporting sub-directory installations
Lunar [Mon, 8 Apr 2013 15:29:10 +0000 (15:29 +0000)]
add a TODO entry about supporting sub-directory installations

5 years agoconvert NEWS to proper Markdown
Lunar [Mon, 8 Apr 2013 14:58:52 +0000 (14:58 +0000)]
convert NEWS to proper Markdown

This allows to directly use it in the website.

5 years agorework and split documentation
Lunar [Mon, 8 Apr 2013 14:56:19 +0000 (14:56 +0000)]
rework and split documentation

The very long README file has been split in several files targetting different
audiences:

 * INSTALL: describe how to setup Coquelicot from the source code. This file
   can be omitted in distribution packages for better tailored configuration
   instructions.
 * HACKING: notes for developers and other technical details.
 * TODO: future plans for enthusiasts.

README itself now only contains the detailed list of features and authorship
informations.

Because the size of README is now below 5 kiB, we also need to update the test
on how too large input are handled. We now use the background image instead.

5 years agocleanup old stub launcher for Coquelicot::Application
Lunar [Wed, 3 Apr 2013 15:50:00 +0000 (15:50 +0000)]
cleanup old stub launcher for Coquelicot::Application

It will not work properly as we've switched to prefer Rainbows!.

5 years agomention author and license for JavaScript libraries in README
Lunar [Wed, 3 Apr 2013 15:42:30 +0000 (15:42 +0000)]
mention author and license for JavaScript libraries in README

5 years agoproperly save mtimes in create_archive task
Lunar [Wed, 3 Apr 2013 14:08:00 +0000 (14:08 +0000)]
properly save mtimes in create_archive task

5 years agoexpand TarWriter#add_file_simple and #mkdir in create_archive task
Lunar [Wed, 3 Apr 2013 14:02:21 +0000 (14:02 +0000)]
expand TarWriter#add_file_simple and #mkdir in create_archive task

Unfortunately, Gem::Package::TarWriterTar currently does not provide an
interface to add a file (or a directory) and specify its mtime. So we need to
expand it in order to be able to write proper mtimes later on.

5 years agofix jquery.lightBoxFu.js file mode
Lunar [Wed, 3 Apr 2013 13:54:06 +0000 (13:54 +0000)]
fix jquery.lightBoxFu.js file mode

This piece of JavaScript is not meant to be executed on a server.

5 years agoensure gem files have been unlinked after they have been sent
Lunar [Wed, 3 Apr 2013 12:58:13 +0000 (12:58 +0000)]
ensure gem files have been unlinked after they have been sent

This was previously commented only for debugging purpose.

5 years agoadd a new release step
Lunar [Sat, 30 Mar 2013 15:14:27 +0000 (16:14 +0100)]
add a new release step

5 years agofallback on code version when the gem version is unavailable
Lunar [Fri, 22 Mar 2013 10:45:00 +0000 (10:45 +0000)]
fallback on code version when the gem version is unavailable

5 years agoadd missing require for Coquelicot::Helpers
Lunar [Fri, 22 Mar 2013 10:42:27 +0000 (10:42 +0000)]
add missing require for Coquelicot::Helpers

`Coquelicot::Helpers#gem_version` needs `Gem` to be loaded.

5 years agodocument the release process
Lunar [Thu, 21 Mar 2013 15:15:55 +0000 (16:15 +0100)]
document the release process

5 years agoupdate NEWS file for version 0.9.1 coquelicot-0.9.1
Lunar [Thu, 21 Mar 2013 14:24:03 +0000 (15:24 +0100)]
update NEWS file for version 0.9.1

5 years agobump version number to 0.9.1
Lunar [Thu, 21 Mar 2013 14:48:41 +0000 (15:48 +0100)]
bump version number to 0.9.1

5 years agofix upload progress tracking
Lunar [Thu, 21 Mar 2013 14:19:36 +0000 (15:19 +0100)]
fix upload progress tracking

The conditional inclusion of the Upr middle does not work when we are the one
starting Rainbows!. As this is now the preferred webserver, the simple fix
is to always include it.

5 years agofix an embarassing typo which prevented Coquelicot to load with Ruby >= 1.9
Lunar [Thu, 21 Mar 2013 14:19:30 +0000 (15:19 +0100)]
fix an embarassing typo which prevented Coquelicot to load with Ruby >= 1.9

5 years agobe more specific when catching loading failures
Lunar [Thu, 14 Mar 2013 18:59:38 +0000 (19:59 +0100)]
be more specific when catching loading failures

5 years agoadd missing XML namespace in default layout
Lunar [Thu, 14 Mar 2013 16:43:42 +0000 (17:43 +0100)]
add missing XML namespace in default layout

5 years agoaccess rubygems.org over HTTPS coquelicot-0.9
Lunar [Thu, 14 Mar 2013 12:00:51 +0000 (13:00 +0100)]
access rubygems.org over HTTPS

5 years agoclarify, reword and improve README
Lunar [Thu, 14 Mar 2013 10:42:22 +0000 (11:42 +0100)]
clarify, reword and improve README

Thanks intrigeri for being so good with details.

5 years agominor rewording of extended description
Lunar [Thu, 14 Mar 2013 09:31:03 +0000 (10:31 +0100)]
minor rewording of extended description

A "specific focus" is a little bit redundant.

5 years agoupdate german translation
Lunar [Wed, 13 Mar 2013 23:30:22 +0000 (00:30 +0100)]
update german translation

Thanks to casper.

5 years agoupdate french translation
Lunar [Wed, 13 Mar 2013 17:24:47 +0000 (18:24 +0100)]
update french translation

5 years agorefresh PO files
Lunar [Wed, 13 Mar 2013 17:08:53 +0000 (18:08 +0100)]
refresh PO files

5 years agoadd NEWS file
Lunar [Wed, 13 Mar 2013 15:49:54 +0000 (16:49 +0100)]
add NEWS file

5 years agobump version number to 0.9 (final)
Lunar [Wed, 13 Mar 2013 15:49:46 +0000 (16:49 +0100)]
bump version number to 0.9 (final)

5 years agouse gem version number when creating translation catalogs
Lunar [Wed, 13 Mar 2013 17:11:18 +0000 (18:11 +0100)]
use gem version number when creating translation catalogs

5 years agowhitespaces
Lunar [Wed, 13 Mar 2013 17:09:48 +0000 (18:09 +0100)]
whitespaces

5 years agocope with Sinatra more aggressively trying to guess Content-Type
Lunar [Wed, 13 Mar 2013 17:43:44 +0000 (18:43 +0100)]
cope with Sinatra more aggressively trying to guess Content-Type

It looks like recent Sinatra are now trying to guess Content-Type more
aggressively when using attachment. So we now set Content-Length and
Content-Type before calling Sinatra's methods in Application#send_stored_file.

5 years agostop recommending to use bundler --binstubs
Lunar [Wed, 13 Mar 2013 17:05:54 +0000 (18:05 +0100)]
stop recommending to use bundler --binstubs

As this actually overwrites bin/coquelicot and thus prevents the
software to work properly, it is a pretty bad idea.

5 years agofix app not starting when using Ruby 1.8
Lunar [Wed, 13 Mar 2013 17:00:52 +0000 (18:00 +0100)]
fix app not starting when using Ruby 1.8

It looks like wrapping the application inside a lambda is not supported when
using Ruby 1.8. So we skip the "half-close" monkeypatch when using something
before Ruby 1.9 and build the Rack application directly.

5 years agoadd a create_archive rake task to create source tarball
Lunar [Wed, 13 Mar 2013 15:02:35 +0000 (16:02 +0100)]
add a create_archive rake task to create source tarball

5 years agomention Coquelicot version in a meta generator header
Lunar [Wed, 13 Mar 2013 15:02:11 +0000 (16:02 +0100)]
mention Coquelicot version in a meta generator header

5 years agoadd TODO entry about using better encryption
Lunar [Wed, 13 Mar 2013 15:01:50 +0000 (16:01 +0100)]
add TODO entry about using better encryption

5 years agorephrase README section about the "download password" feature
Lunar [Wed, 13 Mar 2013 15:01:26 +0000 (16:01 +0100)]
rephrase README section about the "download password" feature

5 years agodo not include .gitignore, .placeholder files and coquelicot.git symlink in gem
Lunar [Wed, 13 Mar 2013 14:57:52 +0000 (15:57 +0100)]
do not include .gitignore, .placeholder files and coquelicot.git symlink in gem

5 years agoexplicitly add rake to development dependencies
Lunar [Wed, 13 Mar 2013 11:58:59 +0000 (12:58 +0100)]
explicitly add rake to development dependencies

5 years agobe more explicit when data collection and download passwords
Lunar [Wed, 13 Mar 2013 11:57:51 +0000 (12:57 +0100)]
be more explicit when data collection and download passwords

5 years agoadjust footer position in stylesheet
Lunar [Wed, 13 Mar 2013 11:56:45 +0000 (12:56 +0100)]
adjust footer position in stylesheet

5 years agoupdate TOOD entry in README about gemification
Lunar [Wed, 13 Mar 2013 11:56:33 +0000 (12:56 +0100)]
update TOOD entry in README about gemification

5 years agostop failing when rubygems or bundler cannot be loaded
Lunar [Wed, 13 Mar 2013 11:54:11 +0000 (12:54 +0100)]
stop failing when rubygems or bundler cannot be loaded

When installed from a system-wide package or from a Gem, Coquelicot might not
need Rubygems or Bundler to work. So we now try to load them, but we continue
if we can't, as maybe dependencies have been handled in another way.

5 years agoproperly set paths when using a configuration file
Lunar [Wed, 13 Mar 2013 11:53:30 +0000 (12:53 +0100)]
properly set paths when using a configuration file

5 years agoimplement better AGPL compliance
Lunar [Wed, 13 Mar 2013 11:39:58 +0000 (12:39 +0100)]
implement better AGPL compliance

We now detect if Coquelicot is running from a serviceable Git clone.
When it is the case, we offer to retrieve source using Git as we did
previously.

If there is a Git repository which is not usable, a warning is sent to the
logs.

In case source can't be provided by Git, we offer a link to an on-the-fly
created Gem that can be downloaded and unpacked. The version number of
the running software is mangled to add the server hostname and a date.

5 years agoadd a link to project homepage in README
Lunar [Wed, 13 Mar 2013 11:38:31 +0000 (12:38 +0100)]
add a link to project homepage in README

5 years agosupport multiple languages for about_text
Lunar [Sat, 9 Mar 2013 12:51:21 +0000 (13:51 +0100)]
support multiple languages for about_text

5 years agoreset session after testing language features in app
Lunar [Sat, 9 Mar 2013 12:26:42 +0000 (13:26 +0100)]
reset session after testing language features in app

The application will set save through a session cookie the preferred language.
In order to not have leaky tests, we now reset the session when we do not use
the default language.

5 years agofactor out 'browser prefers french' spec context
Lunar [Sat, 9 Mar 2013 11:59:13 +0000 (12:59 +0100)]
factor out 'browser prefers french' spec context

5 years agoadd test for the about_text setting
Lunar [Sat, 9 Mar 2013 11:50:39 +0000 (12:50 +0100)]
add test for the about_text setting

5 years agoadd more files to .gitignore
Lunar [Fri, 8 Mar 2013 21:40:20 +0000 (22:40 +0100)]
add more files to .gitignore

5 years agoupdate copyright years
Lunar [Fri, 8 Mar 2013 21:38:43 +0000 (22:38 +0100)]
update copyright years

5 years agomove to an all-in-one command shell interface
Lunar [Fri, 8 Mar 2013 21:21:23 +0000 (22:21 +0100)]
move to an all-in-one command shell interface

Instead of having several different commands, we now move to a model where
there is one `coquelicot` command with several sub-commands.

`coquelicot-collect-garbage` is replaced by `coquelicot gc`.

`coquelicot-migrate-jyraphe` is replaced by coquelicot migrate-jyraphe`.

And two new sub-commands have been added: `start` and `stop`. They respectively
start and stop the Rainbows! web server, properly configured to run Coquelicot.

The configuration file for Coquelicot has gained new settings for web server
configuration:

 * `pid`: a path to the pid file,
 * `log`: a path to the log file,
 * `listen`: addresses on which requests should be accepted.

All of them are passed unmodified to Rainbows!: they are provided for the
administrator's convenience in order to keep all settings for Coquelicot in a
single configuration file.

Because there is no different environment for development and production,
`show_exceptions` is also mentioned in the default configuration file. Its
default value has been adjusted to false.

5 years agoupdate all remaining dependencies
Lunar [Fri, 8 Mar 2013 18:33:57 +0000 (19:33 +0100)]
update all remaining dependencies

5 years agoupdate to Moneta 0.7 and its new API
Lunar [Fri, 8 Mar 2013 18:32:55 +0000 (19:32 +0100)]
update to Moneta 0.7 and its new API

We explicitly set a dependency on the new version instead of relying on 'upr'
depending on the moneta gem.

5 years agofix wrong removal of files which expired after the gone period
Lunar [Fri, 31 Aug 2012 11:03:22 +0000 (13:03 +0200)]
fix wrong removal of files which expired after the gone period

When expiration period is longer than the gone period, the files are kept
unmodified longer than the actual gone period. Previously, this would
get them erased, a serious bug.

Now we properly skip files that have not yet been erased (and truncated to zero
size) when looking for files that have been kept longer than the gone period.

5 years agodisplay nicer error messages in main app
Lunar [Mon, 9 Apr 2012 12:16:19 +0000 (14:16 +0200)]
display nicer error messages in main app

5 years agowarn users when they generate a download password
Lunar [Mon, 9 Apr 2012 10:51:47 +0000 (12:51 +0200)]
warn users when they generate a download password

5 years agoremove '5 minutes' option in 'available for'
Lunar [Mon, 9 Apr 2012 09:58:29 +0000 (11:58 +0200)]
remove '5 minutes' option in 'available for'

This is way too short for most downloads. For big files, it's even
worse as it is '5 minutes' since the very begining of the upload. That
means that if the upload itself is taking more than 5 minutes, the whole
transfer is useless.

5 years agovarious UI improvements
Lunar [Mon, 9 Apr 2012 09:57:40 +0000 (11:57 +0200)]
various UI improvements

5 years agoproperly i18n'ize Coquelicot::Rack::Upload
Lunar [Wed, 4 Apr 2012 17:02:52 +0000 (19:02 +0200)]
properly i18n'ize Coquelicot::Rack::Upload

5 years agoget an RSpec version with a working --backtrace
Lunar [Sat, 24 Mar 2012 15:32:30 +0000 (16:32 +0100)]
get an RSpec version with a working --backtrace

5 years agointernationalize error_for_empty
Lunar [Fri, 23 Mar 2012 18:35:42 +0000 (19:35 +0100)]
internationalize error_for_empty

5 years agointernationalize error_for_max_length
Lunar [Fri, 23 Mar 2012 18:26:30 +0000 (19:26 +0100)]
internationalize error_for_max_length

5 years agointernationalize Fixnum#as_size
Lunar [Fri, 23 Mar 2012 17:43:35 +0000 (18:43 +0100)]
internationalize Fixnum#as_size

5 years agoupdate and fix french translation
Lunar [Fri, 23 Mar 2012 17:57:21 +0000 (18:57 +0100)]
update and fix french translation

5 years agorefresh PO files
Lunar [Fri, 23 Mar 2012 17:49:16 +0000 (18:49 +0100)]
refresh PO files

5 years agoadd a page to help users understand what Coquelicot does and its limits
Lunar [Fri, 23 Mar 2012 16:01:22 +0000 (17:01 +0100)]
add a page to help users understand what Coquelicot does and its limits

5 years agorefresh PO files
Lunar [Fri, 23 Mar 2012 17:44:46 +0000 (18:44 +0100)]
refresh PO files

5 years agoallow users to select and retain a language
Lunar [Tue, 20 Mar 2012 17:47:19 +0000 (18:47 +0100)]
allow users to select and retain a language

Instead of relying purely on the `Accept-language` header and on an hidden
parameter, we now offer links for users to select one of the supported
languages.

This selection is then retained by using Sinatra cookie based sessions.

5 years agoimprove compatibility with Ruby 1.9.1 or later
Lunar [Tue, 20 Mar 2012 11:27:40 +0000 (12:27 +0100)]
improve compatibility with Ruby 1.9.1 or later

5 years agouppercase title in layout
Lunar [Mon, 12 Mar 2012 09:46:37 +0000 (10:46 +0100)]
uppercase title in layout

5 years agorewrite Jyraphe migration system
Lunar [Sun, 4 Mar 2012 10:01:08 +0000 (11:01 +0100)]
rewrite Jyraphe migration system

Instead of the old quickly hacked script, we now have a properly integated,
tested migration system to migrate from Jyraphe installations.

5 years agospec and implement coquelicot-collect-garbage
Lunar [Fri, 9 Mar 2012 14:18:07 +0000 (15:18 +0100)]
spec and implement coquelicot-collect-garbage

It is located in the bin/ directory and replaces the old ext/coquelicot_gc.rb.

5 years agoturn Coquelicot into a gem
Lunar [Fri, 9 Mar 2012 16:24:17 +0000 (17:24 +0100)]
turn Coquelicot into a gem

5 years agoissue a warning when Depot.gc! is unable to read a file
Lunar [Fri, 9 Mar 2012 16:36:22 +0000 (17:36 +0100)]
issue a warning when Depot.gc! is unable to read a file

5 years agoadd helper for specs testing std{out,err}
Lunar [Sat, 10 Mar 2012 10:06:37 +0000 (11:06 +0100)]
add helper for specs testing std{out,err}

5 years agoproperly half-close both sides of the HTTP connection
Lunar [Wed, 29 Feb 2012 21:19:03 +0000 (22:19 +0100)]
properly half-close both sides of the HTTP connection

Half-closing the write part first and draining our input makes sure the client
will properly receive an error message instead of TCP RST (a.k.a. "Connection
reset by peer") when we interrupt it in the middle of a POST request.

5 years agodisplay nicer error messages for POST /upload
Lunar [Tue, 28 Feb 2012 23:20:26 +0000 (00:20 +0100)]
display nicer error messages for POST /upload

We factor out view helpers in Coquelicot::Helpers in order to make them
available from both Coquelicot::Application and Coquelicot::Rack::Upload.

5 years agoalso protect requests other than POST /upload from too much input
Lunar [Tue, 28 Feb 2012 22:40:22 +0000 (23:40 +0100)]
also protect requests other than POST /upload from too much input

5 years agounwrap Upr::InputWrapper to detect a rewindable input
Lunar [Mon, 27 Feb 2012 22:32:50 +0000 (23:32 +0100)]
unwrap Upr::InputWrapper to detect a rewindable input

5 years agosmall cosmetic improvements for progress bar
Lunar [Mon, 27 Feb 2012 22:15:13 +0000 (23:15 +0100)]
small cosmetic improvements for progress bar

5 years agoadd support for upload progress using 'upr' gem
Lunar [Mon, 27 Feb 2012 15:53:21 +0000 (16:53 +0100)]
add support for upload progress using 'upr' gem

5 years agoallow to limit file size through the max_file_size setting
Lunar [Tue, 28 Feb 2012 18:26:47 +0000 (19:26 +0100)]
allow to limit file size through the max_file_size setting

5 years agoproperly handle large file uploads
Lunar [Sun, 26 Feb 2012 19:44:43 +0000 (20:44 +0100)]
properly handle large file uploads

Previously we were using Sinatra::Request to process file uploads. This class
derives from Rack::Request which creates a temporary file for each file
appearing in a POST request. This can be seen as a privacy breach, as it means
uploaded files were first written in clear text before being stored encrypted.
This can be mitigated by storing the tempfile on a "ramdisk", but then, memory
can pretty quick be a limit to the maximum uploaded file size.

But wait, there's more: Rack specify that `rack.input` must be a
seakable/rewindable IO-like object. In order to implement that, Rack webserver
will either buffer the input in memory (Webrick) or in a temporary file
(Thin, Passenger or Mongrel). So in most cases we had not one, but at least two
temporary files for each uploads.

In order to properly process uploaded file content as it arrives, we 1. switch
to use the "Rainbows!" webserver and 2. handle the POST request directly.

Rainbows! has a unique feature of being able to provide a non-buffered input.
While this breaks Rack specification, our own dedicated handler is written
specifically with this in mind.

Handling the POST request as its input flows requires to be careful with the
order in which fields appear in the `<form/>` tag (HTML specification specify
that they will be sent in that particular order). As we want to know all
options before writing the StoredFile, we need to have the `<input
type="file"/>` field at the end of our form. Along the same lines, we ensure
in `coquelicot.js` that hidden fields for authentication values are laid at the
verify begining of the upload `<form/>`.

Coquelicot::Rack::MultipartParser offers a generic interface to parse
`multipart/form-data` requests. It offers a simple DSL to specify which field
is expected, and to run specific block when they shows up.

Coquelicot::Rack::Upload replaces our old `post '/upload'` method. It handles
the request as a bare Rack middleware to be laid on top of the stack. Its code
borrows part of Sinatra's internals in order to get consistent coding
interface.

Huge kudos to Eric Wong for Rainbows! and Daniel Abrahamsson for
multipart-parser which both made this possible.

5 years agoenable Sinatra request logging in development config
Lunar [Sun, 18 Mar 2012 12:57:27 +0000 (13:57 +0100)]
enable Sinatra request logging in development config

5 years agoimplement file format 2.0
Lunar [Tue, 6 Mar 2012 23:30:26 +0000 (00:30 +0100)]
implement file format 2.0

We want to be able to write files for which we will not be sure of the size
before all its content has been written. Easiest way to achieve this is two
have two files instead of one: the first for the encrypted file content, and
the second with metadata (in clear and encrypted, as before).

StoredFile is still able to read files with format 1.0. New files will be
written using the 2.0 format.

5 years agodisplay the README in 'get /README'
Lunar [Tue, 28 Feb 2012 15:15:19 +0000 (16:15 +0100)]
display the README in 'get /README'

We introduce a dependency on maruku to parse Markdown and display the README.

This new (trivial) feature is spec'd in the new `spec/coquelicot/app_sec.rb`
which is the canonical file location.

We also introduce a new dependency on Capybara: its interface is so much nicer,
and ideally, most of the specs in `spec/coquelicot_spec.rb` will be rewriten
to use it instead of Rack::Test::Methods and Hpricot.

5 years agoimprove README
Lunar [Tue, 28 Feb 2012 15:14:11 +0000 (16:14 +0100)]
improve README

6 years agospec for different reference StoredFile with a new shiny helper
Lunar [Tue, 6 Mar 2012 21:37:32 +0000 (22:37 +0100)]
spec for different reference StoredFile with a new shiny helper

6 years agoalso return BadKey when OpenSSL raises a CipherError
Lunar [Sat, 17 Mar 2012 11:29:37 +0000 (12:29 +0100)]
also return BadKey when OpenSSL raises a CipherError

6 years agofactor out shared context for specs which needs a depot
Lunar [Mon, 12 Mar 2012 15:42:06 +0000 (16:42 +0100)]
factor out shared context for specs which needs a depot

6 years agoremove links in Depot#gc! when there is a link but no associated file
Lunar [Tue, 6 Mar 2012 16:03:47 +0000 (17:03 +0100)]
remove links in Depot#gc! when there is a link but no associated file

6 years agocosmetic rewrite of Depot#read_link
Lunar [Tue, 6 Mar 2012 15:27:10 +0000 (16:27 +0100)]
cosmetic rewrite of Depot#read_link

6 years agospecify and implement behaviour of Depot#get_file when there is a link with no matchi...
Lunar [Tue, 6 Mar 2012 16:03:00 +0000 (17:03 +0100)]
specify and implement behaviour of Depot#get_file when there is a link with no matching file

We modify callers in Coquelicot::Application to match the new behaviour.

6 years agospecify and implement behaviour of Depot#file_exists? when there is a link with no...
Lunar [Tue, 6 Mar 2012 15:41:51 +0000 (16:41 +0100)]
specify and implement behaviour of Depot#file_exists? when there is a link with no matching file

6 years agoproperly handle the case where we generate the same name than an already existing...
Lunar [Tue, 6 Mar 2012 15:23:11 +0000 (16:23 +0100)]
properly handle the case where we generate the same name than an already existing link

6 years agoadd some specs for Coquelicot::Depot
Lunar [Mon, 5 Mar 2012 18:25:23 +0000 (19:25 +0100)]
add some specs for Coquelicot::Depot

6 years agoproperly empty and remove files when Depot#gc! has not been called for a while
Lunar [Tue, 6 Mar 2012 16:05:34 +0000 (17:05 +0100)]
properly empty and remove files when Depot#gc! has not been called for a while