Add mix alias to easily add copyright headers to files
authorMark Felder <feld@feld.me>
Fri, 15 Jan 2021 22:53:55 +0000 (16:53 -0600)
committerMark Felder <feld@feld.me>
Fri, 15 Jan 2021 22:53:55 +0000 (16:53 -0600)
mix.exs

diff --git a/mix.exs b/mix.exs
index 14448f12f9511361e1894587965340025cace090..166cbdca51480719c5439397f7c7f03f63c06028 100644 (file)
--- a/mix.exs
+++ b/mix.exs
@@ -229,7 +229,8 @@ defmodule Pleroma.Mixfile do
       "ecto.reset": ["ecto.drop", "ecto.setup"],
       test: ["ecto.create --quiet", "ecto.migrate", "test"],
       docs: ["pleroma.docs", "docs"],
-      analyze: ["credo --strict --only=warnings,todo,fixme,consistency,readability"]
+      analyze: ["credo --strict --only=warnings,todo,fixme,consistency,readability"],
+      copyright: &add_copyright/1
     ]
   end
 
@@ -332,4 +333,20 @@ defmodule Pleroma.Mixfile do
     |> Enum.filter(fn string -> string && string != "" end)
     |> Enum.join()
   end
+
+  defp add_copyright(_) do
+    line1 = "# Pleroma: A lightweight social networking server\\n"
+
+    line2 =
+      "# Copyright © 2017-#{NaiveDateTime.utc_now().year} Pleroma Authors <https://pleroma.social/>\\n"
+
+    line3 = "# SPDX-License-Identifier: AGPL-3.0-only\\n\\n"
+    template = line1 <> line2 <> line3
+
+    find = "find lib test priv -type f \\( -name '*.ex' -or -name '*.exs' \\) -exec "
+    grep = "grep -L '# Copyright' {} \\; |"
+    xargs = "xargs -n1 sed -i '' '1s;^;#{template};'"
+
+    :os.cmd(String.to_charlist("#{find}#{grep}#{xargs}"))
+  end
 end