diff --git a/.github/workflows/update-packages-list.yml b/.github/workflows/update-packages-list.yml index 8dd0c4f38..94d52f75e 100644 --- a/.github/workflows/update-packages-list.yml +++ b/.github/workflows/update-packages-list.yml @@ -16,7 +16,7 @@ jobs: elixir-version: '1.17.2' - name: Update packages list env: - GH_TOKEN: ${{ secrets.BOT_TOKEN }} + GH_TOKEN: ${{ secrets.MEMBRANEFRAMEWORKADMIN_TOKEN }} run: | echo "Run script" elixir scripts/elixir/update_packages_list.exs > output.txt 2> output.txt || ERROR=$? || true @@ -29,6 +29,7 @@ jobs: git config user.email 'bot@membrane.stream' echo "Checkout" git checkout -B auto-update-packages-list + git submodule foreach git pull echo "Commit" git add README.md git commit -m "auto update packages list in readme" --allow-empty @@ -36,4 +37,4 @@ jobs: git push -f -u origin auto-update-packages-list echo "Create PR" gh pr create -B master -H auto-update-packages-list --label no-changelog --title "${STATUS} Auto update packages list" --body-file output.txt \ - || gh pr edit auto-update-packages-list --title "${STATUS} Auto update packages list" --body-file output.txt \ No newline at end of file + || gh pr edit auto-update-packages-list --title "${STATUS} Auto update packages list" --body-file output.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 246ab7f52..0f0c6cb96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ # Changelog +## 1.2.5 + * Add tutorials [#1007](https://github.com/membraneframework/membrane_core/pull/1007), plugins [#1012](https://github.com/membraneframework/membrane_core/pull/1012) and demos [#1013](https://github.com/membraneframework/membrane_core/pull/1013) to the docs. ## 1.2.4 * Add `:handle_end_of_stream` and `:handle_start_of_stream` options to debug elements. [#993](https://github.com/membraneframework/membrane_core/pull/993) diff --git a/mix.exs b/mix.exs index f74bf431c..688a6dcd0 100644 --- a/mix.exs +++ b/mix.exs @@ -59,6 +59,17 @@ defmodule Membrane.Mixfile do defp docs do [ main: "readme", + search: [ + %{ + name: "Ecosystem", + help: "Search all packages in our ecosystem - listed in the README or the docs", + packages: packages_in_ecosystem() + }, + %{ + name: "Core", + help: "Search only membrane core" + } + ], extras: extras(), formatters: ["html"], logo: "assets/logo.svg", @@ -93,6 +104,14 @@ defmodule Membrane.Mixfile do ] end + defp packages_in_ecosystem do + {packages, _bindings} = Code.eval_file("scripts/elixir/packages.exs") + + packages + |> Enum.reject(&is_tuple(&1)) + |> Enum.map(&String.to_atom/1) + end + defp extras do [ "README.md", diff --git a/scripts/elixir/packages.exs b/scripts/elixir/packages.exs new file mode 100644 index 000000000..0c1730e2d --- /dev/null +++ b/scripts/elixir/packages.exs @@ -0,0 +1,134 @@ +# Packages in the membrane ecosystem and their categories +[ + {:section, "General"}, + "membrane_sdk", + "membrane_core", + "membrane_rtc_engine", + "kino_membrane", + "docker_membrane", + "membrane_demo", + "membrane_tutorials", + "boombox", + {:section, "Plugins"}, + {:subsection, "General purpose"}, + "membrane_file_plugin", + "membrane_hackney_plugin", + "membrane_scissors_plugin", + "membrane_tee_plugin", + "membrane_funnel_plugin", + "membrane_realtimer_plugin", + "membrane_stream_plugin", + "membrane_fake_plugin", + "membrane_pcap_plugin", + "membrane_transcoder_plugin", + "membrane_generator_plugin", + "kim-company/membrane_live_framerate_converter_plugin", + "membrane_template_plugin", + {:subsection, "Streaming protocols"}, + "membrane_webrtc_plugin", + "membrane_rtmp_plugin", + "membrane_http_adaptive_stream_plugin", + "membrane_srt_plugin", + "membrane_udp_plugin", + "membrane_tcp_plugin", + "membrane_rtp_plugin", + "membrane_rtp_h264_plugin", + "membrane_rtp_aac_plugin", + "membrane_rtp_vp8_plugin", + "membrane_rtp_vp9_plugin", + "membrane_rtp_mpegaudio_plugin", + "membrane_rtp_opus_plugin", + "membrane_rtp_g711_plugin", + "gBillal/membrane_rtsp_plugin", + "kim-company/membrane_mpeg_ts_plugin", + "kim-company/membrane_hls_plugin", + {:subsection, "Containers"}, + "membrane_mp4_plugin", + "membrane_matroska_plugin", + "membrane_flv_plugin", + "membrane_ivf_plugin", + "membrane_ogg_plugin", + {:subsection, "Audio codecs"}, + "membrane_aac_plugin", + "membrane_aac_fdk_plugin", + "membrane_flac_plugin", + "membrane_mp3_lame_plugin", + "membrane_mp3_mad_plugin", + "membrane_opus_plugin", + "membrane_wav_plugin", + "membrane_g711_plugin", + "membrane_g711_ffmpeg_plugin", + {:subsection, "Video codecs"}, + "membrane_h26x_plugin", + "membrane_h264_ffmpeg_plugin", + "membrane_vpx_plugin", + "membrane_abr_transcoder_plugin", + "gBillal/membrane_h265_ffmpeg_plugin", + "binarynoggin/elixir-turbojpeg", + "kim-company/membrane_subtitle_mixer_plugin", + {:subsection, "Raw audio"}, + "membrane_raw_audio_parser_plugin", + "membrane_portaudio_plugin", + "membrane_audio_mix_plugin", + "membrane_audio_filler_plugin", + "membrane_ffmpeg_swresample_plugin", + "membrane_audiometer_plugin", + {:subsection, "Raw video"}, + "membrane_raw_video_parser_plugin", + "membrane_video_merger_plugin", + "membrane_smelter_plugin", + "membrane_camera_capture_plugin", + "membrane_rpicam_plugin", + "membrane_framerate_converter_plugin", + "membrane_sdl_plugin", + "membrane_overlay_plugin", + "membrane_ffmpeg_swscale_plugin", + "membrane_ffmpeg_video_filter_plugin", + "kim-company/membrane_video_mixer_plugin", + {:subsection, "External APIs"}, + "membrane_aws_plugin", + "membrane_agora_plugin", + "membrane_webrtc_live", + "membrane_element_gcloud_speech_to_text", + "membrane_element_ibm_speech_to_text", + "YuzuTen/membrane_s3_plugin", + "lawik/membrane_transcription", + {:section, "Formats"}, + "membrane_rtp_format", + "membrane_cmaf_format", + "membrane_matroska_format", + "membrane_mp4_format", + "membrane_raw_audio_format", + "membrane_raw_video_format", + "membrane_aac_format", + "membrane_opus_format", + "membrane_flac_format", + "membrane_mpegaudio_format", + "membrane_h264_format", + "membrane_vp8_format", + "membrane_vp9_format", + "membrane_g711_format", + "gBillal/membrane_h265_format", + {:section, "Standalone media libs"}, + "elixir-webrtc/ex_webrtc", + "ex_sdp", + "ex_libnice", + "ex_libsrtp", + "ex_m3u8", + "ex_hls", + "ex_libsrt", + "membrane_rtsp", + "membrane_ffmpeg_generator", + {:section, "Utils"}, + "unifex", + "bundlex", + "beamchmark", + "bunch", + "bunch_native", + "shmex", + "membrane_timestamp_queue", + "membrane_common_c", + "membrane_telemetry_metrics", + "membrane_opentelemetry", + "membrane_precompiled_dependency_provider" +] diff --git a/scripts/elixir/update_packages_list.exs b/scripts/elixir/update_packages_list.exs index f74a740a2..3265981af 100644 --- a/scripts/elixir/update_packages_list.exs +++ b/scripts/elixir/update_packages_list.exs @@ -2,141 +2,10 @@ Mix.install([{:req, "~> 0.4.0"}]) require Logger -# define packages structure +{packages, _bindings} = Code.eval_file("packages.exs", __DIR__) + packages = - [ - {:section, "General"}, - "membrane_sdk", - "membrane_core", - "membrane_rtc_engine", - "kino_membrane", - "docker_membrane", - "membrane_demo", - "membrane_tutorials", - "boombox", - {:section, "Plugins"}, - {:subsection, "General purpose"}, - "membrane_file_plugin", - "membrane_hackney_plugin", - "membrane_scissors_plugin", - "membrane_tee_plugin", - "membrane_funnel_plugin", - "membrane_realtimer_plugin", - "membrane_stream_plugin", - "membrane_fake_plugin", - "membrane_pcap_plugin", - "membrane_transcoder_plugin", - "membrane_generator_plugin", - "kim-company/membrane_live_framerate_converter_plugin", - "membrane_template_plugin", - {:subsection, "Streaming protocols"}, - "membrane_webrtc_plugin", - "membrane_rtmp_plugin", - "membrane_http_adaptive_stream_plugin", - "membrane_srt_plugin", - "membrane_udp_plugin", - "membrane_tcp_plugin", - "membrane_rtp_plugin", - "membrane_rtp_h264_plugin", - "membrane_rtp_aac_plugin", - "membrane_rtp_vp8_plugin", - "membrane_rtp_vp9_plugin", - "membrane_rtp_mpegaudio_plugin", - "membrane_rtp_opus_plugin", - "membrane_rtp_g711_plugin", - "gBillal/membrane_rtsp_plugin", - "kim-company/membrane_mpeg_ts_plugin", - "kim-company/membrane_hls_plugin", - {:subsection, "Containers"}, - "membrane_mp4_plugin", - "membrane_matroska_plugin", - "membrane_flv_plugin", - "membrane_ivf_plugin", - "membrane_ogg_plugin", - {:subsection, "Audio codecs"}, - "membrane_aac_plugin", - "membrane_aac_fdk_plugin", - "membrane_flac_plugin", - "membrane_mp3_lame_plugin", - "membrane_mp3_mad_plugin", - "membrane_opus_plugin", - "membrane_wav_plugin", - "membrane_g711_plugin", - "membrane_g711_ffmpeg_plugin", - {:subsection, "Video codecs"}, - "membrane_h26x_plugin", - "membrane_h264_ffmpeg_plugin", - "membrane_vpx_plugin", - "membrane_abr_transcoder_plugin", - "gBillal/membrane_h265_ffmpeg_plugin", - "binarynoggin/elixir-turbojpeg", - "kim-company/membrane_subtitle_mixer_plugin", - {:subsection, "Raw audio"}, - "membrane_raw_audio_parser_plugin", - "membrane_portaudio_plugin", - "membrane_audio_mix_plugin", - "membrane_audio_filler_plugin", - "membrane_ffmpeg_swresample_plugin", - "membrane_audiometer_plugin", - {:subsection, "Raw video"}, - "membrane_raw_video_parser_plugin", - "membrane_video_merger_plugin", - "membrane_smelter_plugin", - "membrane_camera_capture_plugin", - "membrane_rpicam_plugin", - "membrane_framerate_converter_plugin", - "membrane_sdl_plugin", - "membrane_overlay_plugin", - "membrane_ffmpeg_swscale_plugin", - "membrane_ffmpeg_video_filter_plugin", - "kim-company/membrane_video_mixer_plugin", - {:subsection, "External APIs"}, - "membrane_aws_plugin", - "membrane_agora_plugin", - "membrane_webrtc_live", - "membrane_element_gcloud_speech_to_text", - "membrane_element_ibm_speech_to_text", - "YuzuTen/membrane_s3_plugin", - "lawik/membrane_transcription", - {:section, "Formats"}, - "membrane_rtp_format", - "membrane_cmaf_format", - "membrane_matroska_format", - "membrane_mp4_format", - "membrane_raw_audio_format", - "membrane_raw_video_format", - "membrane_aac_format", - "membrane_opus_format", - "membrane_flac_format", - "membrane_mpegaudio_format", - "membrane_h264_format", - "membrane_vp8_format", - "membrane_vp9_format", - "membrane_g711_format", - "gBillal/membrane_h265_format", - {:section, "Standalone media libs"}, - "elixir-webrtc/ex_webrtc", - "ex_sdp", - "ex_libnice", - "ex_libsrtp", - "ex_m3u8", - "ex_hls", - "ex_libsrt", - "membrane_rtsp", - "membrane_ffmpeg_generator", - {:section, "Utils"}, - "unifex", - "bundlex", - "beamchmark", - "bunch", - "bunch_native", - "shmex", - "membrane_timestamp_queue", - "membrane_common_c", - "membrane_telemetry_metrics", - "membrane_opentelemetry", - "membrane_precompiled_dependency_provider" - ] + packages |> Enum.map(fn {type, markdown} -> %{type: type, name: markdown}