• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

camatcode / basenji / 1c8cfbce0d0b9400324380e1ba82321290fe534d

27 Jul 2025 02:43PM UTC coverage: 81.516% (-0.2%) from 81.695%
1c8cfbce0d0b9400324380e1ba82321290fe534d

Pull #72

github

camatcode
perf: introduce reader telemetry
Pull Request #72: perf: introduce telemetry

53 of 65 new or added lines in 12 files covered. (81.54%)

18 existing lines in 2 files now uncovered.

1151 of 1412 relevant lines covered (81.52%)

490.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.75
/lib/basenji/reader/cb7_reader.ex
1
defmodule Basenji.Reader.CB7Reader do
2
  @moduledoc false
3

4
  use Basenji.TelemetryHelpers
5

6
  import Basenji.Reader
7

8
  def format, do: :cb7
4✔
9

10
  def file_extensions, do: ["cb7"]
2,394✔
11

12
  def close(_any), do: :ok
4✔
13

14
  def get_magic_numbers, do: [%{offset: 0, magic: [0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C]}]
782✔
15

16
  def get_entries(cbz_file_path, _opts \\ []) do
17
    with {:ok, output} <- exec("7z", ["l", "-ba", cbz_file_path]) do
786✔
18
      file_names =
786✔
19
        output
20
        |> String.split("\n")
21
        |> Enum.map(&String.slice(&1, 53..-1//1))
3,144✔
22

23
      file_entries =
786✔
24
        file_names
25
        |> Enum.map(&%{file_name: &1})
3,144✔
26
        |> sort_file_names()
27
        |> reject_macos_preview()
28
        |> reject_directories()
29
        |> reject_non_image()
30

31
      {:ok, %{entries: file_entries}}
32
    end
33
  end
34

35
  def get_entry_stream!(cbz_file_path, entry) do
36
    create_resource(fn ->
76✔
37
      escaped_filename = entry[:file_name]
76✔
38

39
      with {:ok, output} <- exec("7z", ["x", "-so", cbz_file_path, escaped_filename]) do
76✔
40
        [output |> :binary.bin_to_list()]
41
      end
42
    end)
43
  end
44

45
  def read(cbz_file_path, _opts \\ []) do
46
    telemetry_wrap [:basenji, :process], %{action: "read_cb7"} do
784✔
NEW
47
      with {:ok, %{entries: file_entries}} <- get_entries(cbz_file_path) do
×
48
        file_entries =
784✔
49
          file_entries
50
          |> Enum.map(&Map.put(&1, :stream_fun, fn -> get_entry_stream!(cbz_file_path, &1) end))
3,136✔
51

52
        {:ok, %{entries: file_entries}}
53
      end
54
    end
55
  end
56
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc