Bandaid fix for yt-dlp write issue

This commit is contained in:
Kieran Eglin 2024-05-15 17:09:56 -07:00
parent a7b0af65e2
commit f479bc88e1
No known key found for this signature in database
GPG key ID: 193984967FCF432D
2 changed files with 15 additions and 1 deletions

View file

@ -24,11 +24,12 @@ defmodule Pinchflat.Utils.CliUtils do
def wrap_cmd(command, args, passthrough_opts \\ [], opts \\ []) do def wrap_cmd(command, args, passthrough_opts \\ [], opts \\ []) do
wrapper_command = Path.join(:code.priv_dir(:pinchflat), "cmd_wrapper.sh") wrapper_command = Path.join(:code.priv_dir(:pinchflat), "cmd_wrapper.sh")
actual_command = [command] ++ args actual_command = [command] ++ args
command_opts = set_command_opts() ++ passthrough_opts
logging_arg_override = Keyword.get(opts, :logging_arg_override, Enum.join(args, " ")) logging_arg_override = Keyword.get(opts, :logging_arg_override, Enum.join(args, " "))
Logger.info("[command_wrapper]: #{command} called with: #{logging_arg_override}") Logger.info("[command_wrapper]: #{command} called with: #{logging_arg_override}")
{output, status} = System.cmd(wrapper_command, actual_command, passthrough_opts) {output, status} = System.cmd(wrapper_command, actual_command, command_opts)
log_cmd_result(command, logging_arg_override, status, output) log_cmd_result(command, logging_arg_override, status, output)
{output, status} {output, status}
@ -81,4 +82,13 @@ defmodule Pinchflat.Utils.CliUtils do
Logger.log(log_level, log_message) Logger.log(log_level, log_message)
end end
defp set_command_opts do
# This resolves an issue where yt-dlp would attempt to write to a read-only directory
# if you scanned a new video with `--windows-filenames` enabled. Hopefully can be removed
# in the future.
[
cd: Application.get_env(:pinchflat, :tmpfile_directory)
]
end
end end

View file

@ -7,6 +7,10 @@ defmodule Pinchflat.Utils.CliUtilsTest do
test "delegates to System.cmd/3" do test "delegates to System.cmd/3" do
assert {"output\n", 0} = CliUtils.wrap_cmd("echo", ["output"]) assert {"output\n", 0} = CliUtils.wrap_cmd("echo", ["output"])
end end
test "sets the current directory to the tmp dir" do
assert {"/tmp/test/tmpfiles\n", 0} = CliUtils.wrap_cmd("pwd", [])
end
end end
describe "parse_options/1" do describe "parse_options/1" do