defmodule Logsrv do @moduledoc """ Documentation for `Logsrv`. """ def dir do Application.get_env(:logsrv, :dir) <> "/" end def dir(subdir) do "#{dir()}/#{subdir}/" end def journals do dir(:journals) |> File.ls! end def pages do dir(:pages) |> File.ls! end def compare(fd) do sync_conflict_fd = fd orig_fd = fd |> String.replace(~r/\.sync.*/,"\.md") sync_conflict = sync_conflict_fd |> File.read! orig = orig_fd |> File.read! # FOR NOW, just return the diff diff = orig |> String.myers_difference(sync_conflict) diff |> Kernel.inspect() |> Jason.encode! end def conflicts do {conflicts(journals()), conflicts(pages())} end def conflicts(list) do list |> Enum.filter( fn (fd) -> fd |> String.match?(~r/.*sync.*/) end) end def resolve_conflicts do {journal_conflicts, pages_conflicts} = conflicts() [ journal_conflicts |> Enum.map( fn(fd) -> %{ :type => :journal, :date => fd |> Logsrv.Helpers.to_date, :file => fd, :diff => compare(dir(:journals) <> fd), } end), pages_conflicts |> Enum.map( fn(fd) -> %{ :type => :page, :file => fd, :diff => compare(dir(:pages) <> fd), } end) ] |> List.flatten() end end