Skip to content

Commit

Permalink
add Membrane.SDK.update_deps_versions/1 (#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
mat-hek authored May 15, 2024
1 parent 68deaff commit 600666b
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 7 deletions.
73 changes: 68 additions & 5 deletions lib/membrane_sdk.ex
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
defmodule Membrane.SDK do
deps =
sdk_deps =
Mix.Project.config()[:deps]
|> Enum.reject(fn
{_name, _version, opts} -> opts[:runtime] == false
_other -> false
|> Enum.filter(fn
{_name, _version, opts} -> opts[:runtime] != false
{_name, opts} when is_list(opts) -> false
_other -> true
end)
|> Enum.map(fn
{name, version, _opts} -> {name, version}
{name, version} -> {name, version}
end)

sdk_deps_str =
sdk_deps
|> Enum.sort()
|> Enum.map_join("\n", fn {name, version} ->
"| [`#{name}`](https://hexdocs.pm/#{name}) | #{version} |"
Expand All @@ -17,6 +25,61 @@ defmodule Membrane.SDK do
| name | version |
| --- | --- |
#{deps}
#{sdk_deps_str}
"""

@doc """
Prints deps with versions updated to the ones in the SDK.
"""
@spec update_deps_versions([name | {name, version} | {name, version, opts} | {name, opts}]) ::
:ok
when name: atom,
version: String.t(),
opts: Keyword.t()

def update_deps_versions(deps) do
sdk_deps = unquote(sdk_deps)

deps
|> Enum.map(fn dep ->
{name, version, opts} =
case dep do
name when is_atom(name) -> {name, nil, []}
{name, version, opts} -> {name, version, opts}
{name, opts} when is_list(opts) -> {name, nil, opts}
{name, version} -> {name, version, []}
end

case sdk_deps[name] do
nil -> {name, version, opts}
sdk_version -> {name, sdk_version, Keyword.drop(opts, [:git, :github, :path])}
end
end)
|> Enum.map_join(",\n ", &inspect_dep/1)
|> then(
&"""
[
#{&1}
]
"""
)
|> IO.puts()
end

defp inspect_dep({name, version, opts}) do
name = color_inspect(name)
version = if version, do: color_inspect(version)

opts =
case opts do
[] -> nil
opts -> Enum.map_join(opts, ", ", fn {k, v} -> "#{k}: #{color_inspect(v)}" end)
end

[name, version, opts] |> Enum.filter(& &1) |> Enum.join(", ") |> then(&"{#{&1}}")
end

defp color_inspect(term) do
inspect(term, syntax_colors: IO.ANSI.syntax_colors())
end
end
3 changes: 1 addition & 2 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ defmodule Membrane.SDK.Mixfile do
{:membrane_raw_video_parser_plugin, "~> 0.12.1"},
{:membrane_mp4_plugin, "~> 0.34.2"},
{:membrane_rtsp, "~> 0.6.2"},
{:membrane_core, "~> 1.0.1"},
{:membrane_core, "~> 1.0"},
{:membrane_h26x_plugin, "~> 0.10.1"},
{:membrane_h264_ffmpeg_plugin, "~> 0.31.6"},
{:membrane_h265_ffmpeg_plugin, "~> 0.4.1"},
Expand All @@ -71,7 +71,6 @@ defmodule Membrane.SDK.Mixfile do
{:membrane_sdl_plugin, "~> 0.18.2"},
{:membrane_ffmpeg_swresample_plugin, "~> 0.20.2"},
{:membrane_udp_plugin, "~> 0.13.0"},
{:bunch, "~> 1.6.1"},
{:membrane_mp3_mad_plugin, "~> 0.18.3"},
{:membrane_mp3_lame_plugin, "~> 0.18.2"},
{:membrane_fake_plugin, "~> 0.11.0"},
Expand Down

0 comments on commit 600666b

Please sign in to comment.