diff options
author | lain <lain@soykaf.club> | 2020-01-29 16:37:40 +0100 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-01-29 16:37:40 +0100 |
commit | 88f890ef82fa70900d0b62832bbb6bb159cd778d (patch) | |
tree | 4e2fc2eab67f725ba5ce855c8bffa390f9427394 /lib | |
parent | 9e0c2413b4c2382d3a17eb7fc33ab6ed2ba26b2a (diff) | |
download | pleroma-88f890ef82fa70900d0b62832bbb6bb159cd778d.tar.gz |
Frontend Mix Task: Add basic functionality + docs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mix/tasks/pleroma/frontend.ex | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex new file mode 100644 index 000000000..450121204 --- /dev/null +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.Frontend do + use Mix.Task + alias __MODULE__.Fetcher + + @shortdoc "Manages the Pleroma frontends" + @moduledoc File.read!("docs/administration/CLI_tasks/frontend.md") + + def run(["download" | rest]) do + {options, [], []} = + OptionParser.parse( + rest, + strict: [ + reference: :string + ] + ) + + reference = options[:reference] || "master" + + IO.puts("Downloading reference #{reference}") + + url = + "https://git.pleroma.social/pleroma/pleroma-fe/-/jobs/artifacts/#{reference}/download?job=build" + + sd = Pleroma.Config.get([:instance, :static_dir]) |> Path.expand() + + with {_, {:ok, %{status: 200, body: body}}} <- {:fetch, Fetcher.get(url)}, + {_, {:ok, results}} <- {:unzip, :zip.unzip(body, [:memory])} do + IO.puts("Writing to #{sd}") + + results + |> Enum.each(fn {path, contents} -> + path = String.replace(to_string(path), ~r/^dist/, "") + path = Path.join(sd, path) + File.mkdir_p!(Path.dirname(path)) + File.write!(path, contents) + end) + + IO.puts("Succesfully downloaded and unpacked the frontend") + else + {error, _} -> IO.puts("Step failed: #{error}") + end + end +end + +defmodule Mix.Tasks.Pleroma.Frontend.Fetcher do + use Tesla + plug(Tesla.Middleware.FollowRedirects) + + adapter(Tesla.Adapter.Httpc) +end |