2017-11-23 15:22:20 +00:00
defmodule Mix.Tasks.GenerateConfig do
use Mix.Task
@shortdoc " Generates a new config "
def run ( _ ) do
IO . puts ( " Answer a few questions to generate a new config \n " )
2017-12-03 23:01:45 +00:00
IO . puts ( " --- THIS WILL OVERWRITE YOUR config/generated_config.exs! --- \n " )
2017-11-23 15:22:20 +00:00
domain = IO . gets ( " What is your domain name? (e.g. pleroma.soykaf.com): " ) |> String . trim
name = IO . gets ( " What is the name of your instance? (e.g. Pleroma/Soykaf): " ) |> String . trim
email = IO . gets ( " What's your admin email address: " ) |> String . trim
2018-01-12 20:38:14 +00:00
mediaproxy = IO . gets ( " Do you want to activate the mediaproxy? (y/N): " )
|> String . trim ( )
|> String . downcase ( )
|> String . starts_with? ( " y " )
proxy_url = if mediaproxy do
IO . gets ( " What is the mediaproxy's URL? (e.g. https://cache.example.com): " ) |> String . trim
else
" https://cache.example.com "
end
2017-11-23 15:22:20 +00:00
secret = :crypto . strong_rand_bytes ( 64 ) |> Base . encode64 |> binary_part ( 0 , 64 )
2017-11-26 17:57:49 +00:00
dbpass = :crypto . strong_rand_bytes ( 64 ) |> Base . encode64 |> binary_part ( 0 , 64 )
2017-11-23 15:22:20 +00:00
2017-11-26 17:57:49 +00:00
resultSql = EEx . eval_file ( " lib/mix/tasks/sample_psql.eex " , [ dbpass : dbpass ] )
2018-01-12 20:38:14 +00:00
result = EEx . eval_file ( " lib/mix/tasks/sample_config.eex " , [ domain : domain , email : email , name : name , secret : secret , mediaproxy : mediaproxy , proxy_url : proxy_url , dbpass : dbpass ] )
2017-12-03 23:01:45 +00:00
IO . puts ( " \n Writing config to config/generated_config.exs. \n \n Check it and configure your database, then copy it to either config/dev.secret.exs or config/prod.secret.exs " )
File . write ( " config/generated_config.exs " , result )
2017-11-27 21:44:14 +00:00
IO . puts ( " \n Writing setup_db.psql, please run it as postgre superuser, i.e.: sudo su postgres -c 'psql -f config/setup_db.psql' " )
2017-11-26 17:57:49 +00:00
File . write ( " config/setup_db.psql " , resultSql )
2017-11-23 15:22:20 +00:00
end
end