Packages
version_tasks
0.10.20
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.29
0.10.28
0.10.27
0.10.26
0.10.25
0.10.24
0.10.23
0.10.22
0.10.21
0.10.20
0.10.19
0.10.18
0.10.17
0.10.16
0.10.15
0.10.14
0.10.13
0.10.12
0.10.11
0.10.10
0.10.9
0.10.8
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.3
0.3.1
0.2.6
A suite of mix tasks for managing your libs version numbers with git and hex
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/bin/db.ex
defmodule Mix.Tasks.Version.Bin.Db do
use Mix.Task
@shortdoc "Create 'bin/db' helper scripts for managing database backups"
def run([]), do: run([nil])
def run([backup_root]) do
[
"./bin/db",
]
|> Enum.each(fn dirname ->
:ok = dirname |> Path.expand |> File.mkdir_p!
end)
appname = Mix.Project.config[:app]
default_root = "/src/#{appname}backup"
backup_root = backup_root || default_root
"""
#!/bin/bash
NOW=${NOW:=$(date +"%Y%m%d%H%M%S")}
VERSION=${VERSION:=$(mix version.current)}
DBNAME=#{appname}
BACKUP_ROOT=#{backup_root}
FNAME=${DBNAME}_${VERSION}_${NOW}
(cd ${BACKUP_ROOT} && \
pg_dump --clean ${DBNAME} > ${FNAME}.sql && \
tar zcf ${FNAME}.tar.gz ${FNAME}.sql && \
ln -sf ${FNAME}.tar.gz ${DBNAME}_${VERSION}.tar.gz && \
ln -sf ${FNAME}.tar.gz ${DBNAME}.tar.gz && \
git add .
git commit -m "Backup ${DBNAME} v${VERSION} (${NOW})" && \
git push)
"""
|> write!("./bin/db/backup")
"""
#!/bin/bash
DBNAME=#{appname}
BACKUP_ROOT=#{backup_root}
(cd ${BACKUP_ROOT} && \
psql -d ${DBNAME} -f $(tar zxfv ${DBNAME}.tar.gz))
"""
|> write!("./bin/db/restore")
[
"./bin/db/backup",
"./bin/db/restore",
]
|> Enum.each(fn filename ->
:ok = filename
|> Path.expand
|> File.chmod(0o755)
end)
IO.puts "Installed the following scripts into ./bin/db"
IO.puts " + backup \# Backup your database (named #{appname})"
IO.puts " + restore \# Restore your database (named #{appname})"
IO.puts ""
end
defp write!(content, relative_name) do
File.write!(relative_name |> Path.expand, content)
end
end