# `ElixirKit.Release`

Functions for working with Elixir releases.

# `codesign`

Signs the release for distribution.

Currently, this function is only executed on **macOS**.

## Environment Variables

  * `APPLE_SIGNING_IDENTITY` - identity to use for code signing. Defaults to `-`, that is,
    Ad-hoc signing. See `$ man codesign` for more information.

## Release Options

  * `:entitlements` - path to entitlements file.

## Examples

In `mix.exs`:

```elixir
def project do
  [
    app: :example,
    version: "0.1.0",
    deps: deps(),
    releases: releases()
  ]
end

defp releases do
  [
    app: [
      steps: [:assemble, &ElixirKit.Release.codesign/1],
      entitlements: "#{__DIR__}/src-tauri/App.entitlements"
    ]
  ]
end
```

In `App.entitlements`:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
  <key>com.apple.security.cs.allow-jit</key>
  <true/>
  <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
  <true/>
  <key>com.apple.security.cs.allow-dyld-environment-variables</key>
  <true/>
  <key>com.apple.security.cs.disable-library-validation</key>
  <true/>
</dict>
</plist>
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
