diff options
| author | lain <lain@soykaf.club> | 2020-07-29 16:24:22 +0200 | 
|---|---|---|
| committer | lain <lain@soykaf.club> | 2020-07-29 16:24:22 +0200 | 
| commit | dc36d6e9d21dc47fa9b6332c6444a055f789fabd (patch) | |
| tree | d24ffb684053b9042339396eeb8bc02368ed6602 /lib/mix | |
| parent | f715bf1915b75cb3c5b24d4661a94885aaa1a0ac (diff) | |
| parent | a6d3bb5f30697cafc5dd9acf490bde7e2f33f5f8 (diff) | |
| download | pleroma-dc36d6e9d21dc47fa9b6332c6444a055f789fabd.tar.gz pleroma-dc36d6e9d21dc47fa9b6332c6444a055f789fabd.zip | |
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into frontend-bundles-admin
Diffstat (limited to 'lib/mix')
| -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 | 
