added generated `pleroma.env`
[akkoma] / lib / mix / tasks / pleroma / release_env.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Mix.Tasks.Pleroma.ReleaseEnv do
6 use Mix.Task
7 import Mix.Pleroma
8
9 @shortdoc "Generate Pleroma environment file."
10 @moduledoc File.read!("docs/administration/CLI_tasks/release_environments.md")
11
12 def run(["gen" | rest]) do
13 {options, [], []} =
14 OptionParser.parse(
15 rest,
16 strict: [
17 force: :boolean,
18 path: :string
19 ],
20 aliases: [
21 p: :path,
22 f: :force
23 ]
24 )
25
26 env_path =
27 get_option(
28 options,
29 :path,
30 "Environment file path",
31 "config/pleroma.env"
32 )
33 |> Path.expand()
34
35 proceed? =
36 if File.exists?(env_path) do
37 get_option(
38 options,
39 :force,
40 "Environment file is exist. Do you want overwritten the #{env_path} file? (y/n)",
41 "n"
42 ) === "y"
43 else
44 true
45 end
46
47 if proceed? do
48 do_generate(env_path)
49
50 shell_info(
51 "The file generated: #{env_path}.\nTo use the enviroment file need to add the line ';EnvironmentFile=#{
52 env_path
53 }' in service file (/installation/pleroma.service)."
54 )
55 end
56 end
57
58 def do_generate(path) do
59 content = "RELEASE_COOKIE=#{Base.encode32(:crypto.strong_rand_bytes(32))}"
60
61 File.mkdir_p!(Path.dirname(path))
62 File.write!(path, content)
63 end
64 end