Current section

Files

Jump to
gleam_erlang src gleam erlang application.gleam
Raw

src/gleam/erlang/application.gleam

//// An Erlang application is a collection of code that can be loaded into the
//// Erlang virtual machine and even started and stopped if they define a
//// start module and supervision tree. Each Gleam package is an Erlang
//// application.
import gleam/erlang/node.{type Node}
/// The Erlang/OTP application `start` callback takes a start-type as an
/// argument, indicating the context in which the application is being started.
pub type StartType {
/// A normal application start.
Normal
/// The application is distributed and started at the current node because of
/// a takeover from Node, either because Erlang's `application:takeover/2`
/// function has been called, or because the current node has higher priority
/// than the previous node.
Takeover(previous: Node)
/// The application is distributed and started at the current node because of
/// a failover from the previous node.
Failover(previous: Node)
}
/// Returns the path of an application's `priv` directory, where extra non-Gleam
/// or Erlang files are typically kept. Each Gleam package is an Erlang
/// application.
///
/// Returns an error if no application was found with the given name.
///
/// # Example
///
/// ```gleam
/// application.priv_directory("my_app")
/// // -> Ok("/some/location/my_app/priv")
/// ```
///
@external(erlang, "gleam_erlang_ffi", "priv_directory")
pub fn priv_directory(name: String) -> Result(String, Nil)