From b52b1ef51ada40d4c0c2f4f553610f270573bce2 Mon Sep 17 00:00:00 2001 From: tdro Date: Thu, 4 Mar 2021 20:22:52 -0500 Subject: .vimrc: Add more SQL tools Add skeema, sqldef, and sqlfluff --- .config/nixpkgs/config.nix | 7 +++- .config/nixpkgs/packages/skeema/default.nix | 23 +++++++++++ .config/nixpkgs/packages/sqldef/default.nix | 23 +++++++++++ .config/nixpkgs/packages/sqlfluff/default.nix | 58 +++++++++++++++++++++++++++ .vimrc | 1 + 5 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 .config/nixpkgs/packages/skeema/default.nix create mode 100644 .config/nixpkgs/packages/sqldef/default.nix create mode 100644 .config/nixpkgs/packages/sqlfluff/default.nix diff --git a/.config/nixpkgs/config.nix b/.config/nixpkgs/config.nix index ff37c35..e82e58c 100644 --- a/.config/nixpkgs/config.nix +++ b/.config/nixpkgs/config.nix @@ -183,7 +183,6 @@ in sigil skippy-xd spaceFM - sqlitebrowser sublime3-dev sxiv syncthing @@ -417,7 +416,13 @@ in SQL = pkgs.buildEnv { name = "sql"; paths = [ + (callPackage ./packages/skeema/default.nix {}) + (callPackage ./packages/sqldef/default.nix {}) + (callPackage ./packages/sqlfluff/default.nix {}) + dbeaver + pgformatter sqlint + sqlite ]; }; diff --git a/.config/nixpkgs/packages/skeema/default.nix b/.config/nixpkgs/packages/skeema/default.nix new file mode 100644 index 0000000..4017f75 --- /dev/null +++ b/.config/nixpkgs/packages/skeema/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchgit, buildGoModule }: + +buildGoModule rec { + pname = "skeema"; + version = "v1.5.0"; + url = "https://github.com/skeema/skeema"; + + src = fetchgit { + inherit url; + rev = version; + sha256 = "0mrspmgiww0jlpml24r5f4ail8153f2liva88w9760fd5aky3ix3"; + }; + + vendorSha256 = null; + + doCheck = false; + + meta = with stdenv.lib; { + homepage = url; + license = licenses.asl20; + description = "Schema management CLI for MySQL"; + }; +} diff --git a/.config/nixpkgs/packages/sqldef/default.nix b/.config/nixpkgs/packages/sqldef/default.nix new file mode 100644 index 0000000..6829f00 --- /dev/null +++ b/.config/nixpkgs/packages/sqldef/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchgit, buildGoModule }: + +buildGoModule rec { + pname = "sqldef"; + version = "v0.8.9"; + url = "https://github.com/k0kubun/sqldef"; + + src = fetchgit { + inherit url; + rev = version; + sha256 = "1hvx05qwy2g4r1zc1k2f9xv4z815p5jh1a6g41fdlxskjl3kyyf5"; + }; + + vendorSha256 = "066184zmwdhd8dbkbmwds8aimiawfcvb8px8z1q48c949gvywlx7"; + + doCheck = false; + + meta = with stdenv.lib; { + homepage = url; + license = licenses.mit; + description = "Idempotent MySQL/PostgreSQL schema management by SQL"; + }; +} diff --git a/.config/nixpkgs/packages/sqlfluff/default.nix b/.config/nixpkgs/packages/sqlfluff/default.nix new file mode 100644 index 0000000..0030d31 --- /dev/null +++ b/.config/nixpkgs/packages/sqlfluff/default.nix @@ -0,0 +1,58 @@ +{ stdenv, fetchgit, python36 }: + +with python36.pkgs; + +let + + bench-it = buildPythonPackage rec { + pname = "bench-it"; + version = "1.0.1"; + src = fetchPypi { + inherit pname version; + sha256 = "0v6kfvgdnjlfmwlafmyjadgllfr8qc1hq83kz9q287gh5nvw851f"; + }; + postPatch = '' + # Avoid building pypandoc + sed -i 's|^import pypandoc.*||' setup.py + sed -i 's|^description = pypandoc.*|description = ""|' setup.py + ''; + doCheck = false; + }; + +in buildPythonApplication rec { + + pname = "sqlfluff"; + url = "https://github.com/sqlfluff/sqlfluff"; + version = "0.4.1"; + + src = fetchgit { + inherit url; + rev = version; + sha256 = "0g53rhdg8b2p3xx9rmkc2fkqnz4fsrmkg98n5fi10s16wscn90kz"; + }; + + propagatedBuildInputs = [ + appdirs + bench-it + cached-property + click + colorama + configparser + dataclasses + diff_cover + jinja2 + oyaml + pathspec + pluggy + typing-extensions + ]; + + doCheck = false; + + meta = with stdenv.lib; { + homepage = url; + license = licenses.mit; + platforms = platforms.linux; + description = "A SQL linter and auto-formatter for Humans"; + }; +} diff --git a/.vimrc b/.vimrc index 21cbf26..cb49e31 100644 --- a/.vimrc +++ b/.vimrc @@ -303,6 +303,7 @@ augroup AutoCommands autocmd FileType nix autocmd! BufWritePost silent exe '!' . expand(g:notify) . ' ' . '"$(nix-linter % 2>&1 && echo ''Nix Lint OK: %'' && nixfmt % 2>&1)" > /dev/null 2>&1' autocmd FileType yaml autocmd! BufWritePost silent exe '!' . expand(g:notify) . ' ' . '"$(yaml round-trip --indent 2 --save % 2>&1 && yamllint -s % 2>&1 && echo ''yaml OK: %'')"' autocmd FileType bash,sh autocmd! BufWritePost silent exe '!' . expand(g:notify) . ' ' . '"$(shellcheck -x --exclude=SC1090,SC1091 % 2>&1 && echo ''Shellcheck OK: %'')" > /dev/null 2>&1 &' + autocmd FileType sql autocmd! BufWritePost silent exe '!' . expand(g:notify) . ' ' . '"$(sqlint % 2>&1 && pg_format -i % 2>&1 && sqlfluff lint --exclude-rules L003,L016 --dialect postgres % 2>&1 && echo ''SQL OK: %'')"' " File type function under cursor lookups. autocmd FileType go noremap df :exe ':term ++rows=10 go doc ' . expand('') -- cgit v1.2.3