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

camatcode / basenji / ab50d6f56050b932de65618c18e8ebcab2472c56

27 Jul 2025 02:55PM UTC coverage: 81.44% (-0.3%) from 81.695%
ab50d6f56050b932de65618c18e8ebcab2472c56

Pull #72

github

camatcode
perf: introduce command/query telemetry
Pull Request #72: perf: introduce telemetry

83 of 96 new or added lines in 13 files covered. (86.46%)

2 existing lines in 1 file now uncovered.

1154 of 1417 relevant lines covered (81.44%)

492.93 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,363✔
11

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

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

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

23
      file_entries =
778✔
24
        file_names
25
        |> Enum.map(&%{file_name: &1})
3,112✔
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 ->
92✔
37
      escaped_filename = entry[:file_name]
92✔
38

39
      with {:ok, output} <- exec("7z", ["x", "-so", cbz_file_path, escaped_filename]) do
92✔
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
776✔
NEW
47
      with {:ok, %{entries: file_entries}} <- get_entries(cbz_file_path) do
×
48
        file_entries =
776✔
49
          file_entries
50
          |> Enum.map(&Map.put(&1, :stream_fun, fn -> get_entry_stream!(cbz_file_path, &1) end))
3,104✔
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