From f21e39d445d4c783b679cef3374eedc232653db8 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Wed, 30 Jul 2025 22:35:36 +0300 Subject: [PATCH] feat: add sqruff config --- .dotter/global.toml | 5 +- config/btop/btop.conf | 2 +- config/sqruff/config.cfg | 431 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 436 insertions(+), 2 deletions(-) create mode 100644 config/sqruff/config.cfg diff --git a/.dotter/global.toml b/.dotter/global.toml index cdbb2027..66a748fc 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -13,7 +13,7 @@ LICENSE = "" default_target_type = "symbolic" [base] -depends = [ "default", "zsh", "spotify", "terminal", "local", "misc" ] +depends = [ "default", "zsh", "spotify", "terminal", "local", "misc", "dev" ] [x11] depends = [ "base", "awesome", "picom", "dunst", "rofi" ] @@ -172,3 +172,6 @@ depends = [ "zsh", "tmux", "fish" ] [typst.files] "config/typstfmt.tom" = "~/.config/typstfmt/typstfmt.toml" + +[dev.files] +"config/sqruff/" = "~/.config/sqruff/" diff --git a/config/btop/btop.conf b/config/btop/btop.conf index adc795b7..dc579229 100644 --- a/config/btop/btop.conf +++ b/config/btop/btop.conf @@ -57,7 +57,7 @@ update_ms = 500 #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. -proc_sorting = "memory" +proc_sorting = "cpu direct" #* Reverse sorting order, True or False. proc_reversed = False diff --git a/config/sqruff/config.cfg b/config/sqruff/config.cfg new file mode 100644 index 00000000..2a4030e9 --- /dev/null +++ b/config/sqruff/config.cfg @@ -0,0 +1,431 @@ +[sqlfluff] +# verbose is an integer (0-2) indicating the level of log output +verbose = 0 +# Turn off color formatting of output +nocolor = False +# Supported dialects https://docs.sqlfluff.com/en/stable/dialects.html +# Or run 'sqlfluff dialects' +dialect = None +# See templater docs for options +templater = raw +# Comma separated list of rules to check, default to core +rules = core +# Comma separated list of rules to exclude, or None +exclude_rules = None +# Below controls SQLFluff output, see max_line_length for SQL output +output_line_length = 80 +# Number of passes to run before admitting defeat +runaway_limit = 10 +# Ignore errors by category (one or more of the following, separated by commas: lexing,linting,parsing,templating) +ignore = None +# Warn only for rule codes (one of more rule codes, seperated by commas: e.g. LT01,LT02) +# Also works for templating and parsing errors by using TMP or PRS +warnings = None +# Whether to warn about unneeded '-- noqa:' comments. +warn_unused_ignores = False +# Ignore linting errors found within sections of code coming directly from +# templated code (e.g. from within Jinja curly braces. Note that it does not +# ignore errors from literal code found within template loops. +ignore_templated_areas = True +# can either be autodetect or a valid encoding e.g. utf-8, utf-8-sig +encoding = autodetect +# Ignore inline overrides (e.g. to test if still required) +disable_noqa = False +# Comma separated list of file extensions to lint +# NB: This config will only apply in the root folder +sql_file_exts = .sql,.sql.j2,.dml,.ddl +# Allow fix to run on files, even if they contain parsing errors +# Note altering this is NOT RECOMMENDED as can corrupt SQL +fix_even_unparsable = False +# Very large files can make the parser effectively hang. +# The more efficient check is the _byte_ limit check which +# is enabled by default. The previous _character_ limit check +# is still present for backward compatibility. This will be +# removed in a future version. +# Set either to 0 to disable. +large_file_skip_char_limit = 0 +large_file_skip_byte_limit = 20000 +# CPU processes to use while linting. +# If positive, just implies number of processes. +# If negative or zero, implies number_of_cpus - specified_number. +# e.g. -1 means use all processors but one. 0 means all cpus. +processes = 1 +# Max line length is set by default to be in line with the dbt style guide. +# https://github.com/dbt-labs/corp/blob/main/dbt_style_guide.md +# Set to zero or negative to disable checks. +max_line_length = 80 + +[sqlfluff:indentation] +# See https://docs.sqlfluff.com/en/stable/layout.html#configuring-indent-locations +indent_unit = space +tab_space_size = 4 +indented_joins = False +indented_ctes = False +indented_using_on = True +indented_on_contents = True +indented_then = True +indented_then_contents = True +allow_implicit_indents = False +template_blocks_indent = True +# This is a comma seperated list of elements to skip +# indentation edits to. +skip_indentation_in = script_content +# If comments are found at the end of long lines, we default to moving +# them to the line _before_ their current location as the convention is +# that a comment precedes the line it describes. However if you prefer +# comments moved _after_, this configuration setting can be set to "after". +trailing_comments = before + +# Layout configuration +# See https://docs.sqlfluff.com/en/stable/layout.html#configuring-layout-and-spacing +[sqlfluff:layout:type:comma] +spacing_before = touch +line_position = trailing + +[sqlfluff:layout:type:binary_operator] +spacing_within = touch +line_position = leading + +[sqlfluff:layout:type:statement_terminator] +spacing_before = touch +line_position = trailing + +[sqlfluff:layout:type:end_of_file] +spacing_before = touch + +[sqlfluff:layout:type:set_operator] +line_position = alone:strict + +[sqlfluff:layout:type:start_bracket] +spacing_after = touch + +[sqlfluff:layout:type:end_bracket] +spacing_before = touch + +[sqlfluff:layout:type:start_square_bracket] +spacing_after = touch + +[sqlfluff:layout:type:end_square_bracket] +spacing_before = touch + +[sqlfluff:layout:type:start_angle_bracket] +spacing_after = touch + +[sqlfluff:layout:type:end_angle_bracket] +spacing_before = touch + +[sqlfluff:layout:type:casting_operator] +spacing_before = touch +spacing_after = touch:inline + +[sqlfluff:layout:type:slice] +spacing_before = touch +spacing_after = touch + +[sqlfluff:layout:type:dot] +spacing_before = touch +spacing_after = touch + +[sqlfluff:layout:type:comparison_operator] +spacing_within = touch +line_position = leading + +[sqlfluff:layout:type:assignment_operator] +spacing_within = touch +line_position = leading + +[sqlfluff:layout:type:object_reference] +spacing_within = touch:inline + +[sqlfluff:layout:type:numeric_literal] +spacing_within = touch:inline + +[sqlfluff:layout:type:sign_indicator] +spacing_after = touch:inline + +[sqlfluff:layout:type:tilde] +spacing_after = touch:inline + +[sqlfluff:layout:type:function_name] +spacing_within = touch:inline + +[sqlfluff:layout:type:function_contents] +spacing_before = touch:inline + +[sqlfluff:layout:type:function_parameter_list] +spacing_before = touch:inline + +[sqlfluff:layout:type:array_type] +spacing_within = touch:inline + +[sqlfluff:layout:type:typed_array_literal] +spacing_within = touch + +[sqlfluff:layout:type:sized_array_type] +spacing_within = touch + +[sqlfluff:layout:type:struct_type] +spacing_within = touch:inline + +[sqlfluff:layout:type:bracketed_arguments] +spacing_before = touch:inline + +[sqlfluff:layout:type:typed_struct_literal] +spacing_within = touch + +[sqlfluff:layout:type:semi_structured_expression] +spacing_within = touch:inline +spacing_before = touch:inline + +[sqlfluff:layout:type:array_accessor] +spacing_before = touch:inline + +[sqlfluff:layout:type:colon] +spacing_before = touch + +[sqlfluff:layout:type:colon_delimiter] +spacing_before = touch +spacing_after = touch + +[sqlfluff:layout:type:path_segment] +spacing_within = touch + +[sqlfluff:layout:type:sql_conf_option] +spacing_within = touch + +[sqlfluff:layout:type:sqlcmd_operator] +# NOTE: This is the spacing between the operator and the colon +spacing_before = touch + +[sqlfluff:layout:type:comment] +spacing_before = any +spacing_after = any + +[sqlfluff:layout:type:inline_comment] +spacing_before = any +spacing_after = any + +[sqlfluff:layout:type:block_comment] +spacing_before = any +spacing_after = any + +[sqlfluff:layout:type:pattern_expression] +# Snowflake pattern expressions shouldn't have their spacing changed. +spacing_within = any + +[sqlfluff:layout:type:placeholder] +# Placeholders exist "outside" the rendered SQL syntax +# so we shouldn't enforce any particular spacing around +# them. +spacing_before = any +spacing_after = any + +[sqlfluff:layout:type:common_table_expression] +# The definition part of a CTE should fit on one line where possible. +# For users which regularly define column names in their CTEs they +# may which to relax this config to just `single`. +spacing_within = single:inline + +# By setting a selection of clauses to "alone", we hint to the reflow +# algorithm that in the case of a long single line statement, the +# first place to add newlines would be around these clauses. +# Setting this to "alone:strict" would always _force_ line breaks +# around them even if the line isn't too long. +[sqlfluff:layout:type:select_clause] +line_position = alone + +[sqlfluff:layout:type:where_clause] +line_position = alone + +[sqlfluff:layout:type:from_clause] +line_position = alone + +[sqlfluff:layout:type:join_clause] +line_position = alone + +[sqlfluff:layout:type:groupby_clause] +line_position = alone + +[sqlfluff:layout:type:orderby_clause] +# NOTE: Order by clauses appear in many places other than in a select +# clause. To avoid unexpected behaviour we use `leading` in this +# case rather than `alone`. +line_position = leading + +[sqlfluff:layout:type:having_clause] +line_position = alone + +[sqlfluff:layout:type:limit_clause] +line_position = alone + +# Template loop tokens shouldn't dictate spacing around them. +[sqlfluff:layout:type:template_loop] +spacing_before = any +spacing_after = any + +[sqlfluff:templater] +unwrap_wrapped_queries = True + +[sqlfluff:templater:jinja] +apply_dbt_builtins = True + +# Some rules can be configured directly from the config common to other rules +[sqlfluff:rules] +allow_scalar = True +single_table_references = consistent +unquoted_identifiers_policy = all + +[sqlfluff:rules:capitalisation.keywords] +# Keywords +capitalisation_policy = consistent +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:capitalisation.identifiers] +# Unquoted identifiers +extended_capitalisation_policy = consistent +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:capitalisation.functions] +# Function names +extended_capitalisation_policy = consistent +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:capitalisation.literals] +# Null & Boolean Literals +capitalisation_policy = consistent +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:capitalisation.types] +# Data Types +extended_capitalisation_policy = consistent +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:ambiguous.join] +# Fully qualify JOIN clause +fully_qualify_join_types = inner + +[sqlfluff:rules:ambiguous.column_references] +# GROUP BY/ORDER BY column references +group_by_and_order_by_style = consistent + +[sqlfluff:rules:aliasing.table] +# Aliasing preference for tables +aliasing = explicit + +[sqlfluff:rules:aliasing.column] +# Aliasing preference for columns +aliasing = explicit + +[sqlfluff:rules:aliasing.length] +min_alias_length = None +max_alias_length = None + +[sqlfluff:rules:aliasing.forbid] +# Avoid table aliases in from clauses and join conditions. +# Disabled by default for all dialects unless explicitly enabled. +# We suggest instead using aliasing.length (AL06) in most cases. +force_enable = False + +[sqlfluff:rules:convention.select_trailing_comma] +# Trailing commas +select_clause_trailing_comma = forbid + +[sqlfluff:rules:convention.count_rows] +# Consistent syntax to count all rows +prefer_count_1 = False +prefer_count_0 = False + +[sqlfluff:rules:convention.terminator] +# Semi-colon formatting approach +multiline_newline = False +require_final_semicolon = False + +[sqlfluff:rules:convention.blocked_words] +# Comma separated list of blocked words that should not be used +blocked_words = None +blocked_regex = None +match_source = False + +[sqlfluff:rules:convention.quoted_literals] +# Consistent usage of preferred quotes for quoted literals +preferred_quoted_literal_style = consistent +# Disabled for dialects that do not support single and double quotes for quoted literals (e.g. Postgres) +force_enable = False + +[sqlfluff:rules:convention.casting_style] +# SQL type casting +preferred_type_casting_style = consistent + +[sqlfluff:rules:convention.not_equal] +# Consistent usage of preferred "not equal to" comparison +preferred_not_equal_style = consistent + +[sqlfluff:rules:references.from] +# References must be in FROM clause +# Disabled for some dialects (e.g. bigquery) +force_enable = False + +[sqlfluff:rules:references.qualification] +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:references.consistent] +# References must be consistently used +# Disabled for some dialects (e.g. bigquery) +force_enable = False + +[sqlfluff:rules:references.keywords] +# Keywords should not be used as identifiers. +unquoted_identifiers_policy = aliases +quoted_identifiers_policy = none +# Comma separated list of words to ignore for this rule +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:references.special_chars] +# Special characters in identifiers +unquoted_identifiers_policy = all +quoted_identifiers_policy = all +allow_space_in_identifier = False +additional_allowed_characters = None +ignore_words = None +ignore_words_regex = None + +[sqlfluff:rules:references.quoting] +# Policy on quoted and unquoted identifiers +prefer_quoted_identifiers = False +prefer_quoted_keywords = False +ignore_words = None +ignore_words_regex = None +force_enable = False + +[sqlfluff:rules:layout.long_lines] +# Line length +ignore_comment_lines = False +ignore_comment_clauses = False + +[sqlfluff:rules:layout.select_targets] +wildcard_policy = single + +[sqlfluff:rules:layout.newlines] +# Consecutive blank lines +maximum_empty_lines_between_statements = 2 +maximum_empty_lines_inside_statements = 1 + +[sqlfluff:rules:structure.subquery] +# By default, allow subqueries in from clauses, but not join clauses +forbid_subquery_in = join + +[sqlfluff:rules:structure.join_condition_order] +preferred_first_table_in_join_clause = earlier