1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Type checking for lib/. Signatures live in the code as RBS comments
# (`#:` before a method, `# @rbs` for everything else), so the type and
# the implementation are read and changed together.
#
# sig/ holds only what inline comments cannot express, each file saying
# why (docs/plans/2026-08-20-type-checking.md).
target :lib do
  check "lib", inline: true
  # Phlex ships no RBS of its own, and the admin views are built on it —
  # unlike Sequel, Roda, Nokogiri, and friends, which have hand written
  # stand-ins under sig/gems. Ignored rather than stubbed for now; add
  # sig/gems/phlex.rbs and drop this once the admin surface is worth
  # typing. Named file by file so that what lives beside the views
  # without being one — card_form.rb, the forms read back into cards —
  # stays checked; a new file there is checked until it is listed.
  #
  # inline: true is load-bearing: `ignore` keeps separate lists for
  # plain and inline sources, and these files were enrolled by
  # `check ... inline: true`. A bare `ignore` feeds the other list and
  # the files stay checked.
  ignore(*%w[
    avatar contact_card contact_dialog contacts_edit contacts_index contacts_show dashboard device_setup format
    group_dialog group_filter group_label group_tag groups_edit groups_index groups_members groups_new groups_show icons import_groups import_original import_saved import_sidebar
    import_target import_upload layout list_item member_picker phlex recent_row record_card search_dialog search_field search_page search_results upcoming_birthdays
  ].map { "lib/pro_tacts/admin/#{it}.rb" }, inline: true)
  signature "sig"

  library "date", "digest", "fileutils", "json", "logger", "net-http", "open3", "pathname", "securerandom", "strscan", "time", "uri", "yaml"
end