Skip to content

preciz/tmp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tmp

test

Temporary directories that are monitored and automatically removed in Elixir.

Installation

The package can be installed by adding tmp to your list of dependencies in mix.exs:

def deps do
  [
    {:tmp, "~> 0.3.0"}
  ]
end

Usage

Define your Tmp module:

defmodule MyApp.Tmp do
  use Tmp
end

# Or with a custom base directory
defmodule MyApp.CustomTmp do
  use Tmp, base_dir: "/path/where/tmp/dirs/will/be"
end

Add it to your supervision tree:

children = [
  {MyApp.Tmp, name: MyApp.Tmp}
]

Use it in your code:

MyApp.Tmp.dir(fn tmp_dir_path ->
  file_path = Path.join(tmp_dir_path, "my_file")
  # do work with file_path...
  # then return a value
  Enum.sum([1,2,3])
end)
# => 6

Options

When calling MyApp.Tmp.dir/2, you can pass the following options:

  • :prefix (optional) - Prefix for the temporary directory name, defaults to nil
  • :base_dir (optional) - Base directory for the temporary directory, defaults to System.tmp_dir() or the value set in use Tmp
  • :timeout (optional) - Timeout in milliseconds, defaults to :infinity

More Examples

MyApp.Tmp.dir(fn tmp_dir_path ->
  File.touch(Path.join(tmp_dir_path, "file_one"))
  # ... other important work

  2 + 2
end, prefix: "my_app", base_dir: "/tmp/custom_base")
# => 4

Docs

Documentation can be found at https://hexdocs.pm/tmp.

License

Tmp is MIT licensed.