diff options
author | lain <lain@soykaf.club> | 2020-07-29 13:45:15 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-07-29 13:45:15 +0000 |
commit | a6d3bb5f30697cafc5dd9acf490bde7e2f33f5f8 (patch) | |
tree | bddf044b51cacba7c80f8b054bb3c0781628fd15 /lib | |
parent | 269b61a2402e3d12d09baf26ba73359776f556b0 (diff) | |
parent | 8d6f7aec2145fc012677cfd9f61cb3e2720edd68 (diff) | |
download | pleroma-a6d3bb5f30697cafc5dd9acf490bde7e2f33f5f8.tar.gz |
Merge branch 'issue/1023' into 'develop'
[#1023] added generated `pleroma.env`
See merge request pleroma/pleroma!2763
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mix/tasks/pleroma/release_env.ex | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/mix/tasks/pleroma/release_env.ex b/lib/mix/tasks/pleroma/release_env.ex new file mode 100644 index 000000000..9da74ffcf --- /dev/null +++ b/lib/mix/tasks/pleroma/release_env.ex @@ -0,0 +1,76 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.ReleaseEnv do + use Mix.Task + import Mix.Pleroma + + @shortdoc "Generate Pleroma environment file." + @moduledoc File.read!("docs/administration/CLI_tasks/release_environments.md") + + def run(["gen" | rest]) do + {options, [], []} = + OptionParser.parse( + rest, + strict: [ + force: :boolean, + path: :string + ], + aliases: [ + p: :path, + f: :force + ] + ) + + file_path = + get_option( + options, + :path, + "Environment file path", + "./config/pleroma.env" + ) + + env_path = Path.expand(file_path) + + proceed? = + if File.exists?(env_path) do + get_option( + options, + :force, + "Environment file already exists. Do you want to overwrite the #{env_path} file? (y/n)", + "n" + ) === "y" + else + true + end + + if proceed? do + case do_generate(env_path) do + {:error, reason} -> + shell_error( + File.Error.message(%{action: "write to file", reason: reason, path: env_path}) + ) + + _ -> + shell_info("\nThe file generated: #{env_path}.\n") + + shell_info(""" + WARNING: before start pleroma app please make sure to make the file read-only and non-modifiable. + Example: + chmod 0444 #{file_path} + chattr +i #{file_path} + """) + end + else + shell_info("\nThe file is exist. #{env_path}.\n") + end + end + + def do_generate(path) do + content = "RELEASE_COOKIE=#{Base.encode32(:crypto.strong_rand_bytes(32))}" + + File.mkdir_p!(Path.dirname(path)) + File.write(path, content) + end +end |