feat: Run tailwind from escript
This commit is contained in:
parent
78b00b30a5
commit
bc1526316f
7 changed files with 110 additions and 75 deletions
|
@ -25,6 +25,11 @@ config :esbuild,
|
|||
env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
|
||||
]
|
||||
|
||||
config :tree_sitter, version: "0.20.8", config_directory: "tree-sitter"
|
||||
config :tree_sitter,
|
||||
version: "0.20.8",
|
||||
config_directory: "tree-sitter",
|
||||
cacerts_path: Path.join([File.cwd!(), "_build", "castore.pem"])
|
||||
|
||||
config :lain, host: "pre.hn", base: "https://pre.hn/"
|
||||
config :lain,
|
||||
host: "pre.hn",
|
||||
base: "https://pre.hn/"
|
||||
|
|
76
lib/lain.ex
76
lib/lain.ex
|
@ -12,6 +12,8 @@ defmodule Lain do
|
|||
alias Lain.Frontmatter
|
||||
alias Lain.Markdown
|
||||
|
||||
@base_caller __ENV__
|
||||
|
||||
def read(path) do
|
||||
path
|
||||
|> File.read!()
|
||||
|
@ -52,6 +54,8 @@ defmodule Lain do
|
|||
end
|
||||
|
||||
def run(path) do
|
||||
TreeSitter.install_and_run(["-V"])
|
||||
|
||||
posts =
|
||||
path
|
||||
|> Path.join("**/*.md")
|
||||
|
@ -71,14 +75,14 @@ defmodule Lain do
|
|||
|> Enum.sort_by(&Map.get(&1, "date"), :desc)
|
||||
|> Enum.map(&atomize_keys/1)
|
||||
|
||||
make_feed(posts)
|
||||
make_sitemap(posts)
|
||||
make_feed(posts, path)
|
||||
make_sitemap(posts, path)
|
||||
index = make_index(posts)
|
||||
|
||||
Lain.LinkLog.run(path)
|
||||
Lain.Static.run(path)
|
||||
|
||||
Enum.map([index | posts], &write_page/1)
|
||||
Enum.map([index | posts], &write_page(&1, path))
|
||||
end
|
||||
|
||||
def atomize_keys(page) do
|
||||
|
@ -109,7 +113,7 @@ defmodule Lain do
|
|||
}
|
||||
end
|
||||
|
||||
def make_feed(posts) do
|
||||
def make_feed(posts, path) do
|
||||
posts = posts |> Enum.reject(& &1.hidden) |> Enum.take(10)
|
||||
base = Application.get_env(:lain, :base, "/")
|
||||
|
||||
|
@ -144,7 +148,8 @@ defmodule Lain do
|
|||
rss_date_format: &rss_date_format/1
|
||||
)
|
||||
|
||||
path = Path.join(["priv", "static", "feed.rss"])
|
||||
File.mkdir_p!(Path.join([path, "build"]))
|
||||
path = Path.join([path, "build", "feed.rss"])
|
||||
|
||||
File.write!(path, body)
|
||||
end
|
||||
|
@ -181,7 +186,7 @@ defmodule Lain do
|
|||
"#{day}, #{date.day} #{month} #{date.year} 00:00:00 -0600"
|
||||
end
|
||||
|
||||
def make_sitemap(posts) do
|
||||
def make_sitemap(posts, path) do
|
||||
posts
|
||||
|> Stream.reject(fn %{hidden: hidden} ->
|
||||
hidden
|
||||
|
@ -190,50 +195,35 @@ defmodule Lain do
|
|||
&%Sitemapper.URL{lastmod: &1[:updated_at] || &1.date, loc: "https://pre.hn/#{&1.slug}/"}
|
||||
)
|
||||
|> Sitemapper.generate(sitemap_url: "https://pre.hn/")
|
||||
|> Sitemapper.persist(store: Sitemapper.FileStore, store_config: [path: "priv/static/"])
|
||||
|> Sitemapper.persist(
|
||||
store: Sitemapper.FileStore,
|
||||
store_config: [path: Path.join(path, "build")]
|
||||
)
|
||||
|> Stream.run()
|
||||
end
|
||||
|
||||
attr(:path, :string, required: true)
|
||||
attr(:title, :string, required: true)
|
||||
attr(:slug, :string, required: true)
|
||||
attr(:description, :string)
|
||||
slot(:inner_block, required: true)
|
||||
|
||||
def layout(assigns) do
|
||||
~H"""
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
%{path: path} = assigns
|
||||
path = Path.join(path, "templates/layout.html.heex")
|
||||
|
||||
<title><%= @title %> | Robert Prehn</title>
|
||||
<%= if assigns[:description] do %>
|
||||
<meta name="description" content={@description} />
|
||||
<% end %>
|
||||
<meta name="author" content="Robert Prehn">
|
||||
<link rel="alternate" type="application/rss+xml" title="Robert Prehn" href="https://pre.hn/feed.rss">
|
||||
<link rel="alternate" type="application/rss+xml" title="Robert Prehn: Link Log" href="https://pre.hn/link-log/feed.rss">
|
||||
|
||||
<link
|
||||
rel="icon"
|
||||
href={"data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%221.1em%22 font-size=%2272%22>⌨️</text></svg>"}
|
||||
/>
|
||||
<meta property="og:title" content={@title} />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content={"https://pre.hn/#{@slug}/"} />
|
||||
<meta property="og:image" content="https://pre.hn/images/lain.png"} />
|
||||
|
||||
<link rel="stylesheet" href="/assets/app.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="bg-dark font-mono text-light">
|
||||
<.menu slug={@slug} />
|
||||
inner_block = ~H"""
|
||||
<%= render_slot(@inner_block) %>
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
|
||||
assigns = %{assigns | inner_block: inner_block}
|
||||
|
||||
EEx.eval_file(path, [assigns: assigns],
|
||||
engine: Phoenix.LiveView.TagEngine,
|
||||
tag_handler: Phoenix.LiveView.HTMLEngine,
|
||||
caller: __ENV__,
|
||||
source: File.read!(path)
|
||||
)
|
||||
end
|
||||
|
||||
def menu(assigns) do
|
||||
|
@ -248,18 +238,18 @@ defmodule Lain do
|
|||
"""
|
||||
end
|
||||
|
||||
def write_page(%{slug: slug} = assigns) do
|
||||
def write_page(%{slug: slug} = assigns, root_path) do
|
||||
path =
|
||||
if slug == "index" do
|
||||
Path.join(["priv", "static", "index.html"])
|
||||
Path.join([root_path, "build", "index.html"])
|
||||
else
|
||||
directory = Path.join(["priv", "static", slug])
|
||||
directory = Path.join([root_path, "build", slug])
|
||||
File.mkdir_p!(directory)
|
||||
Path.join(["priv", "static", slug, "index.html"])
|
||||
Path.join([root_path, "build", slug, "index.html"])
|
||||
end
|
||||
|
||||
~H"""
|
||||
<.layout title={@title} slug={@slug} description={assigns[:description]}>
|
||||
<.layout path={root_path} title={@title} slug={@slug} description={assigns[:description]}>
|
||||
<main class="container mx-auto z-10 relative">
|
||||
<section class="box border border-light">
|
||||
<h1><%= @title %></h1>
|
||||
|
|
46
lib/lain/cli.ex
Normal file
46
lib/lain/cli.ex
Normal file
|
@ -0,0 +1,46 @@
|
|||
defmodule Lain.CLI do
|
||||
@certpath Path.join([
|
||||
Mix.Project.build_path(),
|
||||
"lib",
|
||||
"castore",
|
||||
"priv",
|
||||
"cacerts.pem"
|
||||
])
|
||||
@external_resource @certpath
|
||||
@cacerts File.read!(@certpath)
|
||||
|
||||
def main([command, path]) do
|
||||
Application.put_env(
|
||||
:tree_sitter,
|
||||
:cacerts_path,
|
||||
Path.join([File.cwd!(), "_build", "castore.pem"])
|
||||
)
|
||||
|
||||
Application.put_env(
|
||||
:tailwind,
|
||||
:cacerts_path,
|
||||
Path.join([File.cwd!(), "_build", "castore.pem"])
|
||||
)
|
||||
|
||||
Application.ensure_all_started([:castore, :inets, :ssl, :tailwind])
|
||||
|
||||
args = [
|
||||
"--config=#{Path.join(Path.expand(path), "tailwind.config.js")}",
|
||||
"--input=#{Path.join(Path.expand(path), "assets/app.css")}",
|
||||
"--output=#{Path.join(Path.expand(path), "build/assets/app.css")}",
|
||||
"--minify"
|
||||
]
|
||||
|
||||
File.write!(Path.join("_build", "castore.pem"), @cacerts)
|
||||
|
||||
Tailwind.install_and_run(:default, args)
|
||||
|
||||
case command do
|
||||
"build" ->
|
||||
Lain.run(path)
|
||||
|
||||
"clean" ->
|
||||
Lain.clean(path)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -6,11 +6,11 @@ defmodule Lain.LinkLog do
|
|||
def run(path) do
|
||||
links = links(path)
|
||||
|
||||
make_feed(links)
|
||||
make_feed(links, path)
|
||||
|
||||
links
|
||||
|> make_index()
|
||||
|> Lain.write_page()
|
||||
|> Lain.write_page(path)
|
||||
end
|
||||
|
||||
def links(path) do
|
||||
|
@ -19,7 +19,7 @@ defmodule Lain.LinkLog do
|
|||
YamlElixir.read_from_file!(link_path)
|
||||
end
|
||||
|
||||
def make_feed(links) do
|
||||
def make_feed(links, path) do
|
||||
links = Enum.take(links, 10)
|
||||
|
||||
assigns = %{links: links}
|
||||
|
@ -51,7 +51,7 @@ defmodule Lain.LinkLog do
|
|||
assigns: assigns
|
||||
)
|
||||
|
||||
path = Path.join(["priv", "static", "link-log", "feed.rss"])
|
||||
path = Path.join([path, "build", "link-log", "feed.rss"])
|
||||
|
||||
File.write!(path, body)
|
||||
end
|
||||
|
|
14
mix.exs
14
mix.exs
|
@ -8,7 +8,8 @@ defmodule Lain.MixProject do
|
|||
elixir: "~> 1.14",
|
||||
start_permanent: Mix.env() == :prod,
|
||||
aliases: aliases(),
|
||||
deps: deps()
|
||||
deps: deps(),
|
||||
escript: [main_module: Lain.CLI, include_priv_for: [:castore]]
|
||||
]
|
||||
end
|
||||
|
||||
|
@ -16,7 +17,7 @@ defmodule Lain.MixProject do
|
|||
def application do
|
||||
[
|
||||
mod: {Lain.Application, []},
|
||||
extra_applications: [:logger]
|
||||
extra_applications: [:castore, :logger]
|
||||
]
|
||||
end
|
||||
|
||||
|
@ -26,17 +27,18 @@ defmodule Lain.MixProject do
|
|||
{:yaml_elixir, "~> 2.9.0"},
|
||||
{:esbuild, "~> 0.7.1"},
|
||||
{:tailwind, "~> 0.2.1"},
|
||||
{:phoenix_live_view, "~> 0.19.5"},
|
||||
{:phoenix_live_view, "~> 1.0.0"},
|
||||
{:rustler, "~> 0.29.1"},
|
||||
{:tree_sitter, "~> 0.0.2"},
|
||||
{:tree_sitter, "~> 0.0.3"},
|
||||
{:earmark_parser, "~> 1.4"},
|
||||
{:earmark, "~> 1.4"},
|
||||
{:floki, "~> 0.34.3"},
|
||||
{:floki, "~> 0.36"},
|
||||
{:html_sanitize_ex, "~> 1.4"},
|
||||
{:phoenix_html, "~> 3.3.2"},
|
||||
{:sitemapper, "~> 0.7.0"},
|
||||
{:bandit, "~> 1.0"},
|
||||
{:plug, "~> 1.16.1"}
|
||||
{:plug, "~> 1.16.1"},
|
||||
{:castore, "~> 1.0"}
|
||||
# {:dep_from_hexpm, "~> 0.3.0"},
|
||||
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
|
||||
]
|
||||
|
|
24
mix.lock
24
mix.lock
|
@ -1,31 +1,31 @@
|
|||
%{
|
||||
"bandit": {:hex, :bandit, "1.6.0", "9cb6c67c27cecab2d0c93968cb957fa8decccb7275193c8bf33f97397b3ac25d", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "fd2491e564a7c5e11ff8496ebf530c342c742452c59de17ac0fb1f814a0ab01a"},
|
||||
"castore": {:hex, :castore, "1.0.5", "9eeebb394cc9a0f3ae56b813459f990abb0a3dedee1be6b27fdb50301930502f", [:mix], [], "hexpm", "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578"},
|
||||
"bandit": {:hex, :bandit, "1.6.4", "59cbc8e02f84fcad967bfed6b8a8261821c93a7ec4f835b46d1846b1120a91ec", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "8e156c009a77bb100fd78d5408684d01df1526f549c42614f8f9f27f44f1f7a7"},
|
||||
"castore": {:hex, :castore, "1.0.11", "4bbd584741601eb658007339ea730b082cc61f3554cf2e8f39bf693a11b49073", [:mix], [], "hexpm", "e03990b4db988df56262852f20de0f659871c35154691427a5047f4967a16a62"},
|
||||
"earmark": {:hex, :earmark, "1.4.43", "2024a0e9fe9bd5ef78fb9c87517de6c6d7deaf1cffdf6572fac3dd49cb34c433", [:mix], [], "hexpm", "958011ea938bc4018797bda3f8d0c871ab04621785bedc1e7188fb079dea2f5b"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.35", "437773ca9384edf69830e26e9e7b2e0d22d2596c4a6b17094a3b29f01ea65bb8", [:mix], [], "hexpm", "8652ba3cb85608d0d7aa2d21b45c6fad4ddc9a1f9a1f1b30ca3a246f0acc33f6"},
|
||||
"esbuild": {:hex, :esbuild, "0.7.1", "fa0947e8c3c3c2f86c9bf7e791a0a385007ccd42b86885e8e893bdb6631f5169", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "66661cdf70b1378ee4dc16573fcee67750b59761b2605a0207c267ab9d19f13c"},
|
||||
"floki": {:hex, :floki, "0.34.3", "5e2dcaec5d7c228ce5b1d3501502e308b2d79eb655e4191751a1fe491c37feac", [:mix], [], "hexpm", "9577440eea5b97924b4bf3c7ea55f7b8b6dce589f9b28b096cc294a8dc342341"},
|
||||
"hpax": {:hex, :hpax, "1.0.0", "28dcf54509fe2152a3d040e4e3df5b265dcb6cb532029ecbacf4ce52caea3fd2", [:mix], [], "hexpm", "7f1314731d711e2ca5fdc7fd361296593fc2542570b3105595bb0bc6d0fad601"},
|
||||
"floki": {:hex, :floki, "0.37.0", "b83e0280bbc6372f2a403b2848013650b16640cd2470aea6701f0632223d719e", [:mix], [], "hexpm", "516a0c15a69f78c47dc8e0b9b3724b29608aa6619379f91b1ffa47109b5d0dd3"},
|
||||
"hpax": {:hex, :hpax, "1.0.2", "762df951b0c399ff67cc57c3995ec3cf46d696e41f0bba17da0518d94acd4aac", [:mix], [], "hexpm", "2f09b4c1074e0abd846747329eaa26d535be0eb3d189fa69d812bfb8bfefd32f"},
|
||||
"html_sanitize_ex": {:hex, :html_sanitize_ex, "1.4.3", "67b3d9fa8691b727317e0cc96b9b3093be00ee45419ffb221cdeee88e75d1360", [:mix], [{:mochiweb, "~> 2.15 or ~> 3.1", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm", "87748d3c4afe949c7c6eb7150c958c2bcba43fc5b2a02686af30e636b74bccb7"},
|
||||
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
|
||||
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
|
||||
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
|
||||
"mochiweb": {:hex, :mochiweb, "3.2.1", "ff287e1ec653a0828f226cd5a009d52be74537dc3fc274b765525a77ce01f8ec", [:rebar3], [], "hexpm", "975466d335403a78cd58186636b8e960e3c84c4d9c1a85eb7fe53b6a5dd54de7"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.7", "4cc501d4d823015007ba3cdd9c41ecaaf2ffb619d6fb283199fa8ddba89191e0", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "8966e15c395e5e37591b6ed0bd2ae7f48e961f0f60ac4c733f9566b519453085"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "3.3.2", "d6ce982c6d8247d2fc0defe625255c721fb8d5f1942c5ac051f6177bffa5973f", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "44adaf8e667c1c20fb9d284b6b0fa8dc7946ce29e81ce621860aa7e96de9a11d"},
|
||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.19.5", "6e730595e8e9b8c5da230a814e557768828fd8dfeeb90377d2d8dbb52d4ec00a", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b2eaa0dd3cfb9bd7fb949b88217df9f25aed915e986a28ad5c8a0d054e7ca9d3"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.18", "5310c21443514be44ed93c422e15870aef254cf1b3619e4f91538e7529d2b2e4", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "1797fcc82108442a66f2c77a643a62980f342bfeb63d6c9a515ab8294870004e"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "3.3.4", "42a09fc443bbc1da37e372a5c8e6755d046f22b9b11343bf885067357da21cb3", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0249d3abec3714aff3415e7ee3d9786cb325be3151e6c4b3021502c585bf53fb"},
|
||||
"phoenix_live_view": {:hex, :phoenix_live_view, "1.0.2", "e7b1dd68c86326e2c45cc81da41e332cc8aa7228a7161e2c811dcd7f1dd14db1", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8a40265b0cd7d3a35f136dfa3cc048e3b198fc3718763411a78c323a44ebebee"},
|
||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
|
||||
"plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"},
|
||||
"rustler": {:hex, :rustler, "0.29.1", "880f20ae3027bd7945def6cea767f5257bc926f33ff50c0d5d5a5315883c084d", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "109497d701861bfcd26eb8f5801fe327a8eef304f56a5b63ef61151ff44ac9b6"},
|
||||
"sitemapper": {:hex, :sitemapper, "0.7.0", "4aee7930327a9a01b1c9b81d1d42f60c1a295e9f420108eb2d130c317415abd7", [:mix], [{:ex_aws_s3, "~> 2.0", [hex: :ex_aws_s3, repo: "hexpm", optional: true]}, {:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}], "hexpm", "60f7a684e5e9fe7f10ac5b69f48b0be2bcbba995afafcb3c143fc0c8ef1f223f"},
|
||||
"tailwind": {:hex, :tailwind, "0.2.1", "83d8eadbe71a8e8f67861fe7f8d51658ecfb258387123afe4d9dc194eddc36b0", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "e8a13f6107c95f73e58ed1b4221744e1eb5a093cd1da244432067e19c8c9a277"},
|
||||
"telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},
|
||||
"thousand_island": {:hex, :thousand_island, "1.3.7", "1da7598c0f4f5f50562c097a3f8af308ded48cd35139f0e6f17d9443e4d0c9c5", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0139335079953de41d381a6134d8b618d53d084f558c734f2662d1a72818dd12"},
|
||||
"thousand_island": {:hex, :thousand_island, "1.3.9", "095db3e2650819443e33237891271943fad3b7f9ba341073947581362582ab5a", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "25ab4c07badadf7f87adb4ab414e0ed374e5f19e72503aa85132caa25776e54f"},
|
||||
"toml": {:hex, :toml, "0.7.0", "fbcd773caa937d0c7a02c301a1feea25612720ac3fa1ccb8bfd9d30d822911de", [:mix], [], "hexpm", "0690246a2478c1defd100b0c9b89b4ea280a22be9a7b313a8a058a2408a2fa70"},
|
||||
"tree_sitter": {:hex, :tree_sitter, "0.0.2", "33218eeb40bf897f84d163a07b2373742db7dfee2e6601a60b5733fc6f33656f", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:yaml_elixir, "~> 2.9", [hex: :yaml_elixir, repo: "hexpm", optional: false]}], "hexpm", "8bf71f50a7b1d0ac4b8936fc55d50a21386b8b319f3ceb6f59f1377314e8bb5d"},
|
||||
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
|
||||
"websock_adapter": {:hex, :websock_adapter, "0.5.4", "7af8408e7ed9d56578539594d1ee7d8461e2dd5c3f57b0f2a5352d610ddde757", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "d2c238c79c52cbe223fcdae22ca0bb5007a735b9e933870e241fce66afb4f4ab"},
|
||||
"websock_adapter": {:hex, :websock_adapter, "0.5.8", "3b97dc94e407e2d1fc666b2fb9acf6be81a1798a2602294aac000260a7c4a47d", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "315b9a1865552212b5f35140ad194e67ce31af45bcee443d4ecb96b5fd3f3782"},
|
||||
"xml_builder": {:hex, :xml_builder, "2.2.0", "cc5f1eeefcfcde6e90a9b77fb6c490a20bc1b856a7010ce6396f6da9719cbbab", [:mix], [], "hexpm", "9d66d52fb917565d358166a4314078d39ef04d552904de96f8e73f68f64a62c9"},
|
||||
"yamerl": {:hex, :yamerl, "0.10.0", "4ff81fee2f1f6a46f1700c0d880b24d193ddb74bd14ef42cb0bcf46e81ef2f8e", [:rebar3], [], "hexpm", "346adb2963f1051dc837a2364e4acf6eb7d80097c0f53cbdc3046ec8ec4b4e6e"},
|
||||
"yaml_elixir": {:hex, :yaml_elixir, "2.9.0", "9a256da867b37b8d2c1ffd5d9de373a4fda77a32a45b452f1708508ba7bbcb53", [:mix], [{:yamerl, "~> 0.10", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm", "0cb0e7d4c56f5e99a6253ed1a670ed0e39c13fc45a6da054033928607ac08dfc"},
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
mix lain.build
|
||||
s3cmd sync -MP priv/static/ s3://pre.hn --exclude "*.css"
|
||||
s3cmd put -P -m "text/css" priv/static/assets/app.css s3://pre.hn/assets/app.css
|
Loading…
Reference in a new issue