lib/depot/visibility/unix_visibility_converter.ex

defmodule Depot.Visibility.UnixVisibilityConverter do
  @moduledoc """
  Visibility converter behaviour for unix based systems.
  """
  @type t :: module
  @type permission :: non_neg_integer()
  @type config :: struct

  @callback config(keyword) :: config

  @callback for_file(config, Depot.Visibility.t()) :: {:ok, permission} | :error
  @callback for_directory(config, Depot.Visibility.t()) :: {:ok, permission} | :error

  @callback from_file(config, permission) :: Depot.Visibility.t()
  @callback from_directory(config, permission) :: Depot.Visibility.t()
end