Packages
gleam_erlang
1.1.0
1.3.0
1.2.0
1.1.0
1.0.0
1.0.0-rc1
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.18.0-rc1
retired
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Types and functions for programs running on Erlang!
Current section
Files
Jump to
Current section
Files
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)