README.md

# Tempfile

[![Build Status](https://travis-ci.org/sorentwo/tempfile.svg?branch=master)](https://travis-ci.org/sorentwo/tempfile)

`Tempfile` is a server specifically for managing temporary files. New random
file are created in a temporary location and are automatically cleaned up when
the requesting process exits.

Because tempfile creation is stateful, the `:tempfile` application must be
started in order to use the `Tempfile` module.

## Acknowledgements & Alternatives

This is almost entirely a port of [plug's][plug] `Plug.Upload` module. There are
some slight modifications around file naming, but the `GenServer` itself is
derived wholesale from `Plug`.

If you want a more robust alternative look at [briefly][briefly], which also
provides temporary file handling (but has a less discoverable name).

## Installation

The package can be installed from hex as `tempfile`:

1. Add tempfile to your list of dependencies in `mix.exs`:

      def deps do
        [{:tempfile, "~> 0.1.0"}]
      end

2. Ensure tempfile is started before your application:

      def application do
        [applications: [:tempfile]]
      end

## Usage

Create a new temporary file with a basename and extension:

```elixir
{:ok, path} = Tempfile.random("tempfile.txt")
File.write!(path, "I am a text file")
```

When the calling process exits the file will be removed automatically.

## License

MIT License, see [LICENSE.txt](LICENSE.txt) for details.

[plug]: https://hex.pm/packages/plug
[briefly]: https://hex.pm/packages/briefly