2017-11-23 16:22:20 +01: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-04 00:01:45 +01:00
IO . puts ( " --- THIS WILL OVERWRITE YOUR config/generated_config.exs! --- \n " )
2018-03-30 15:01:53 +02: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 ( )
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
secret = :crypto . strong_rand_bytes ( 64 ) |> Base . encode64 ( ) |> binary_part ( 0 , 64 )
dbpass = :crypto . strong_rand_bytes ( 64 ) |> Base . encode64 ( ) |> binary_part ( 0 , 64 )
resultSql = EEx . eval_file ( " lib/mix/tasks/sample_psql.eex " , dbpass : dbpass )
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
)
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 "
)
2017-12-04 00:01:45 +01:00
File . write ( " config/generated_config.exs " , result )
2018-03-30 15:01:53 +02: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 18:57:49 +01:00
File . write ( " config/setup_db.psql " , resultSql )
2017-11-23 16:22:20 +01:00
end
end