Skip to content

Commit e74830f

Browse files
committed
feat(config): use FluffConfig object, default require final semicolon to false
1 parent 2b7ba50 commit e74830f

5 files changed

Lines changed: 24 additions & 56 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "sqlxfluff"
3-
version = "0.1.1"
3+
version = "0.2.0"
44
description = ""
55
authors = ["Coby Simmons <cobysimmons01@gmail.com>"]
66
readme = "README.md"

sqlxfluff/config_utils.py

Lines changed: 0 additions & 32 deletions
This file was deleted.

sqlxfluff/formatters/sqlx.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import sqlfluff
2+
from sqlfluff.core import FluffConfig
23

34
from .base import format_config, format_template
45
from .indent import replace_with_indentation
56

67

7-
def format_sqlx(deconstructed_file: dict, dialect, config):
8+
def format_sqlx(deconstructed_file: dict, config: FluffConfig):
89
"""Formats Dataform SQLX files using SQLFluff"""
910
# run fix on modified text
10-
bq_fix_result = sqlfluff.fix(
11-
deconstructed_file["main"], dialect=dialect, config_path=config
11+
bq_fix_result = sqlfluff.fix(deconstructed_file["main"], config=config).rstrip(
12+
";\n"
1213
)
1314
# place the templates back into the SQLX
1415
for mask, template in deconstructed_file["templates"].items():
@@ -19,4 +20,4 @@ def format_sqlx(deconstructed_file: dict, dialect, config):
1920

2021
# recombine the config block and the fixed SQL
2122
formatted_config_block = format_config(deconstructed_file["config"])
22-
return formatted_config_block + "\n\n" + bq_fix_result
23+
return formatted_config_block + "\n\n" + bq_fix_result + "\n"

sqlxfluff/linting.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from termcolor import colored
44

55

6-
def parse_sql(sql_string: str, dialect):
6+
def parse_sql(sql_string: str, config):
77
"""Returns whether or not the provided SQL is parseable by SQLFluff."""
88
try:
9-
sqlfluff.parse(sql_string, dialect=dialect)
9+
sqlfluff.parse(sql_string, config=config)
1010
except APIParsingError as error:
1111
return error.msg
1212
return None

sqlxfluff/main.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
from sys import exit # pylint: disable=redefined-builtin
33

44
import sqlfluff
5+
from sqlfluff.core import FluffConfig
56
from termcolor import cprint
67

7-
from .config_utils import find_config_file, load_config
88
from .constants import EXIT_FAIL
99
from .formatters.javascript import validate_prettier_installation
1010
from .formatters.sqlx import format_sqlx
@@ -21,7 +21,7 @@ def main():
2121
description="A script that formats and lints Dataform SQLX files."
2222
)
2323
parser.add_argument(
24-
"-c", "--config", help="Path to the configuration file", default=None
24+
"-c", "--config-path", help="Path to the configuration file", default=None
2525
)
2626
dialects = [d.name for d in sqlfluff.core.dialect_readout()]
2727
parser.add_argument(
@@ -33,38 +33,37 @@ def main():
3333
opts = parser.parse_args()
3434

3535
for filename in opts.files:
36-
if opts.config is None:
37-
opts.config = find_config_file(filename)
38-
if opts.dialect is None:
39-
opts.dialect = load_config(opts.config).get("sqlfluff", {}).get("dialect")
36+
config = FluffConfig.from_path(
37+
filename if opts.config_path is None else opts.config_path
38+
)
39+
config.set_value(
40+
["rules", "convention.terminator", "require_final_semicolon"], False
41+
)
42+
if opts.dialect is not None:
43+
config.set_value(["dialect"], opts.dialect)
4044

4145
with open(filename, "r", encoding="utf-8") as f:
4246
raw_file_contents = f.read()
4347
parsed_file_contents = parse_sqlx(raw_file_contents)
4448

45-
parsing_violations = parse_sql(parsed_file_contents["main"], opts.dialect)
49+
cprint(filename, attrs=["bold"], end=" ")
50+
51+
parsing_violations = parse_sql(parsed_file_contents["main"], config)
4652
if parsing_violations is not None:
4753
cprint(parsing_violations, "red")
4854
exit(EXIT_FAIL)
4955

50-
lint_result = sqlfluff.lint(
51-
parsed_file_contents["main"],
52-
dialect=opts.dialect,
53-
config_path=opts.config,
54-
)
55-
cprint(filename, attrs=["bold"], end=" ")
56+
lint_result = sqlfluff.lint(parsed_file_contents["main"], config=config)
5657
if not lint_result:
5758
cprint("PASS", color="green")
5859
else:
5960
cprint("FAIL", color="red")
6061
for result in lint_result:
6162
print_lint_result(result)
6263

63-
formatted_file_contents = format_sqlx(
64-
parsed_file_contents, opts.dialect, opts.config
65-
)
64+
formatted_file_contents = format_sqlx(parsed_file_contents, config)
6665
formatted_file_contents_again = format_sqlx(
67-
parse_sqlx(formatted_file_contents), opts.dialect, opts.config
66+
parse_sqlx(formatted_file_contents), config
6867
)
6968
if formatted_file_contents != formatted_file_contents_again:
7069
cprint("Formatter unable to determine final formatted form.", "red")

0 commit comments

Comments
 (0)