Packages
moar
1.35.0
5.0.0
4.3.0
4.2.0
4.1.0
4.0.0
3.2.0
3.1.0
3.0.0
2.7.0
2.6.0
2.5.0
2.4.2
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.1
2.0.0
1.64.0
1.63.1
1.63.0
1.62.0
1.61.2
1.61.1
1.61.0
1.60.0
1.59.2
1.59.1
1.59.0
1.58.0
1.57.0
1.56.2
1.56.1
1.56.0
1.55.0
1.54.0
1.53.0
1.52.1
1.52.0
1.51.0
1.50.0
1.49.0
1.48.0
1.47.0
1.46.0
1.45.1
1.45.0
1.44.0
1.43.0
1.42.0
1.41.0
1.40.0
1.39.0
1.38.0
1.37.0
1.36.0
1.35.0
1.34.0
1.33.0
1.32.0
1.31.0
1.30.0
1.29.0
1.28.0
1.27.0
1.26.0
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.3
1.19.2
1.19.1
1.19.0
1.18.1
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.1
1.13.0
1.12.0
1.11.0
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.1.0
A dependency-free utility library containing 100+ useful functions.
Current section
Files
Jump to
Current section
Files
lib/file.ex
defmodule Moar.File do
# @related [test](/test/file_test.exs)
@moduledoc "File-related functions."
@doc """
Returns a randomly-named path in the system temp directory. Does not actually create the file at the path.
For example, `Moar.File.new_tempfile_path(".txt")` would return something like
`"/var/folders/3r/n09zyyy16yddj9m2d1ppzvt40000gn/T/XY7V5E26DV.txt"`.
```elixir
iex> Moar.File.new_tempfile_path(".txt") |> File.exists?()
false
```
"""
@spec new_tempfile_path(file_extension :: binary()) :: binary()
def new_tempfile_path(file_extension),
do: System.tmp_dir!() |> Path.join(Moar.Random.string(10, :base32) <> file_extension)
@doc """
Writes `contents` to a new temp file with extension `file_extension`, and returns the path to the file.
For example, `Moar.File.write_tempfile("hello", ".txt")` would create a file in a path something like
`/var/folders/3r/n09zyyy16yddj9m2d1ppzvt40000gn/T/RHUEJCCH22.txt` with the contents `hello`.
```elixir
iex> Moar.File.write_tempfile("hello", ".txt") |> File.read!()
"hello"
```
"""
@spec write_tempfile(contents :: iodata(), file_extension :: binary()) :: binary()
def write_tempfile(contents, file_extension),
do: file_extension |> new_tempfile_path() |> tap(&File.write!(&1, contents, [:append]))
end