#
# Lint
#

# Exclude assigns for ECR files
Lint/UselessAssign:
  Excluded:
  - src/invidious.cr
  - src/invidious/helpers/errors.cr
  - src/invidious/routes/**/*.cr

# Ignore false negative (if !db.query_one?...)
Lint/UnreachableCode:
  Excluded:
  - src/invidious/database/base.cr

# Ignore shadowed variable `key` (it works for now, and that's
# a sensitive part of the code)
Lint/ShadowingOuterLocalVar:
  Excluded:
  - src/invidious/helpers/tokens.cr


#
# Style
#

Style/RedundantBegin:
  Enabled: false

Style/RedundantReturn:
  Enabled: false


#
# Metrics
#

# Ignore function complexity (number of if/else & case/when branches)
# For some functions that can hardly be simplified for now
Metrics/CyclomaticComplexity:
  Excluded:
  # get_about_info(ucid, locale) => [17/10]
  - src/invidious/channels/about.cr

  # fetch_channel_community(ucid, continuation, ...) => [34/10]
  - src/invidious/channels/community.cr

  # create_notification_stream(env, topics, connection_channel) => [14/10]
  - src/invidious/helpers/helpers.cr:84:5

  # get_index(plural_form, count) => [25/10]
  - src/invidious/helpers/i18next.cr

  # call(context) => [18/10]
  - src/invidious/helpers/static_file_handler.cr

  # show(env) => [38/10]
  - src/invidious/routes/embed.cr

  # get_video_playback(env) => [45/10]
  - src/invidious/routes/video_playback.cr

  # handle(env) => [40/10]
  - src/invidious/routes/watch.cr

  # playlist_ajax(env) => [24/10]
  - src/invidious/routes/playlists.cr

  # fetch_youtube_comments(id, cursor, ....) => [40/10]
  # template_youtube_comments(comments, locale, ...) => [16/10]
  # content_to_comment_html(content) => [14/10]
  - src/invidious/comments.cr

  # to_json(locale, json) => [21/10]
  # extract_video_info(video_id, ...) => [44/10]
  # process_video_params(query, preferences) => [20/10]
  - src/invidious/videos.cr

  # produce_search_params(page, sort, ...) => [29/10]
  # process_search_query(query, page, ...) => [14/10]
  - src/invidious/search.cr



#src/invidious/playlists.cr:327:5
#[C] Metrics/CyclomaticComplexity: Cyclomatic complexity too high [19/10]
# fetch_playlist(plid : String)

#src/invidious/playlists.cr:436:5
#[C] Metrics/CyclomaticComplexity: Cyclomatic complexity too high [11/10]
# extract_playlist_videos(initial_data : Hash(String, JSON::Any))