homebrew-core/Formula/litecli.rb

119 lines
4.4 KiB
Ruby

class Litecli < Formula
include Language::Python::Virtualenv
desc "CLI for SQLite Databases with auto-completion and syntax highlighting"
homepage "https://github.com/dbcli/litecli"
url "https://files.pythonhosted.org/packages/06/86/d893d0ffe537e43720f51415163b47f07b92fdae00a20af595006ff70703/litecli-1.5.0.tar.gz"
sha256 "b09f0804d26b018360b240778612390810e8e00ea0f79d5412fd0d4775c0e3cd"
license "BSD-3-Clause"
bottle do
sha256 cellar: :any_skip_relocation, arm64_big_sur: "39ffe359f5228519abc663377291de0984f89e2c44c1745ca199c292c821ea1e"
sha256 cellar: :any_skip_relocation, big_sur: "c3eca4cb7815933a095fd3fd873d4f389d38940cf7cdad95c4e12e980208db39"
sha256 cellar: :any_skip_relocation, catalina: "787c7ab063f0ea5219d7fb1ff22d0a96898dce05442df1fe7bc08f4318e41eb9"
sha256 cellar: :any_skip_relocation, mojave: "1e979870e8020280d4c6fd401e172e81b63f574a46ec67f7179067c09d59fb37"
end
depends_on "python@3.9"
uses_from_macos "sqlite" => :test
resource "cli-helpers" do
url "https://files.pythonhosted.org/packages/3f/3f/6ecd0ddf2394b698dd82ff3ddbcda235f8d6dadf124af6222eff49b32e87/cli_helpers-2.1.0.tar.gz"
sha256 "dd6f164310f7d86fa3da1f82043a9c784e44a02ad49be932a80624261e56979b"
end
resource "click" do
url "https://files.pythonhosted.org/packages/27/6f/be940c8b1f1d69daceeb0032fee6c34d7bd70e3e649ccac0951500b4720e/click-7.1.2.tar.gz"
sha256 "d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"
end
resource "configobj" do
url "https://files.pythonhosted.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab/configobj-5.0.6.tar.gz"
sha256 "a2f5650770e1c87fb335af19a9b7eb73fc05ccf22144eb68db7d00cd2bcb0902"
end
resource "prompt-toolkit" do
url "https://files.pythonhosted.org/packages/d4/12/7fe77b49d67845a378cfadb484b64218ed09d0e8bf420c663b4fe28f0631/prompt_toolkit-3.0.8.tar.gz"
sha256 "25c95d2ac813909f813c93fde734b6e44406d1477a9faef7c915ff37d39c0a8c"
end
resource "Pygments" do
url "https://files.pythonhosted.org/packages/29/60/8ff9dcb5eac7f4da327ba9ecb74e1ad783b2d32423c06ef599e48c79b1e1/Pygments-2.7.3.tar.gz"
sha256 "ccf3acacf3782cbed4a989426012f1c535c9a90d3a7fc3f16d231b9372d2b716"
end
resource "six" do
url "https://files.pythonhosted.org/packages/6b/34/415834bfdafca3c5f451532e8a8d9ba89a21c9743a0c59fbd0205c7f9426/six-1.15.0.tar.gz"
sha256 "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"
end
resource "sqlparse" do
url "https://files.pythonhosted.org/packages/a2/54/da10f9a0235681179144a5ca02147428f955745e9393f859dec8d0d05b41/sqlparse-0.4.1.tar.gz"
sha256 "0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8"
end
resource "tabulate" do
url "https://files.pythonhosted.org/packages/57/6f/213d075ad03c84991d44e63b6516dd7d185091df5e1d02a660874f8f7e1e/tabulate-0.8.7.tar.gz"
sha256 "db2723a20d04bcda8522165c73eea7c300eda74e0ce852d9022e0159d7895007"
end
resource "terminaltables" do
url "https://files.pythonhosted.org/packages/9b/c4/4a21174f32f8a7e1104798c445dacdc1d4df86f2f26722767034e4de4bff/terminaltables-3.1.0.tar.gz"
sha256 "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81"
end
resource "wcwidth" do
url "https://files.pythonhosted.org/packages/89/38/459b727c381504f361832b9e5ace19966de1a235d73cdbdea91c771a1155/wcwidth-0.2.5.tar.gz"
sha256 "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
end
def install
virtualenv_install_with_resources
end
test do
(testpath/".config/litecli/config").write <<~EOS
[main]
table_format = tsv
less_chatty = True
EOS
(testpath/"test.sql").write <<~EOS
CREATE TABLE IF NOT EXISTS package_manager (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(256)
);
INSERT INTO
package_manager (name)
VALUES
('Homebrew');
EOS
system "/usr/bin/sqlite3 test.db < test.sql"
require "pty"
r, w, pid = PTY.spawn("#{bin}/litecli test.db")
sleep 2
w.puts "SELECT name FROM package_manager"
w.puts "quit"
output = r.read
# remove ANSI colors
output.gsub!(/\e\[([;\d]+)?m/, "")
# normalize line endings
output.gsub!(/\r\n/, "\n")
expected = <<~EOS
name
Homebrew
1 row in set
EOS
assert_match expected, output
Process.wait(pid)
assert_equal 0, $CHILD_STATUS.exitstatus
end
end