lib/ziputil.ex
defmodule ZipUtil do
@spec compress_folder(charlist(), charlist()) :: :ok | {:error, term()}
def compress_folder(folder_path, output_zip) do
files = get_files(to_string(folder_path))
:zip.create(output_zip, files)
end
@spec extract(charlist(), charlist()) :: :ok | {:error, term()}
def extract(zip_file, target_folder) do
:zip.extract(zip_file, [{:cwd, target_folder}])
end
defp get_files(folder_path) do
Path.wildcard("#{folder_path}/**/*")
|> Enum.map(&String.to_charlist(&1))
end
end