homebrew-core/Formula/duplicity.rb
2019-09-12 11:37:14 +02:00

123 lines
4.9 KiB
Ruby

class Duplicity < Formula
include Language::Python::Virtualenv
desc "Bandwidth-efficient encrypted backup"
homepage "https://launchpad.net/duplicity"
url "https://launchpad.net/duplicity/0.8-series/0.8.03/+download/duplicity-0.8.03.tar.gz"
sha256 "4ae3abb8b6bdd6b90dc42a4a0e6d867677b96c43c6e3c0cd20883b4813ad4966"
bottle do
cellar :any
sha256 "652a2842bc4bce4e34996a9c9e0d055f3c6feef9cc9cf4232b7a50c288618a10" => :mojave
sha256 "b492b3a0c4b667a8f3a502817905d0a42cc00797551c5cb7689a86da978bd98b" => :high_sierra
sha256 "42f4e7ff49845d13aa54249d0027da1955a3bf3717c7587a01043c032c156af8" => :sierra
end
depends_on "gnupg"
depends_on "librsync"
depends_on "openssl@1.1"
depends_on "python"
# Generated with homebrew-pypi-poet from
# for i in fasteners future mock requests urllib3; do poet -r $i >> resources; done
resource "fasteners" do
url "https://files.pythonhosted.org/packages/15/d7/1e8b3270f21dffcaaf5a2889675e8b2fa35f8a43a5817a31d3820e8e9495/fasteners-0.15.tar.gz"
sha256 "3a176da6b70df9bb88498e1a18a9e4a8579ed5b9141207762368a1017bf8f5ef"
end
resource "monotonic" do
url "https://files.pythonhosted.org/packages/19/c1/27f722aaaaf98786a1b338b78cf60960d9fe4849825b071f4e300da29589/monotonic-1.5.tar.gz"
sha256 "23953d55076df038541e648a53676fb24980f7a1be290cdda21300b3bc21dfb0"
end
resource "future" do
url "https://files.pythonhosted.org/packages/90/52/e20466b85000a181e1e144fd8305caf2cf475e2f9674e797b222f8105f5f/future-0.17.1.tar.gz"
sha256 "67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8"
end
resource "mock" do
url "https://files.pythonhosted.org/packages/2e/ab/4fe657d78b270aa6a32f027849513b829b41b0f28d9d8d7f8c3d29ea559a/mock-3.0.5.tar.gz"
sha256 "83657d894c90d5681d62155c82bda9c1187827525880eda8ff5df4ec813437c3"
end
resource "six" do
url "https://files.pythonhosted.org/packages/dd/bf/4138e7bfb757de47d1f4b6994648ec67a51efe58fa907c1e11e350cddfca/six-1.12.0.tar.gz"
sha256 "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
end
resource "certifi" do
url "https://files.pythonhosted.org/packages/c5/67/5d0548226bcc34468e23a0333978f0e23d28d0b3f0c71a151aef9c3f7680/certifi-2019.6.16.tar.gz"
sha256 "945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695"
end
resource "chardet" do
url "https://files.pythonhosted.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz"
sha256 "84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
end
resource "idna" do
url "https://files.pythonhosted.org/packages/ad/13/eb56951b6f7950cadb579ca166e448ba77f9d24efc03edd7e55fa57d04b7/idna-2.8.tar.gz"
sha256 "c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407"
end
resource "requests" do
url "https://files.pythonhosted.org/packages/01/62/ddcf76d1d19885e8579acb1b1df26a852b03472c0e46d2b959a714c90608/requests-2.22.0.tar.gz"
sha256 "11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4"
end
resource "urllib3" do
url "https://files.pythonhosted.org/packages/fd/fa/b21f4f03176463a6cccdb612a5ff71b927e5224e83483012747c12fc5d62/urllib3-1.24.2.tar.gz"
sha256 "9a247273df709c4fedb38c711e44292304f73f39ab01beda9f6b9fc375669ac3"
end
def install
virtualenv_install_with_resources
inreplace Dir[bin/"*"], %r{^#!/usr/bin/env python.*$},
"#!#{libexec}/bin/python"
man1.install Dir[libexec/"share/man/man1/*"]
end
test do
(testpath/"batch.gpg").write <<~EOS
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Testing
Name-Email: testing@foo.bar
Expire-Date: 1d
%no-protection
%commit
EOS
system Formula["gnupg"].opt_bin/"gpg", "--batch", "--gen-key", "batch.gpg"
begin
(testpath/"test/hello.txt").write "Hello!"
(testpath/"command.sh").write <<~EOS
#!/usr/bin/expect -f
set timeout -1
spawn #{bin}/duplicity #{testpath} "file://test"
expect -exact "Local and Remote metadata are synchronized, no sync needed."
expect -exact "Last full backup date: none"
expect -exact "GnuPG passphrase:"
send -- "brew\n"
expect -exact "Retype passphrase to confirm:"
send -- "brew\n"
expect -exact "No signatures found, switching to full backup."
expect eof
EOS
chmod 0555, testpath/"command.sh"
system "./command.sh"
assert_match "duplicity-full-signatures", Dir["test/*"].to_s
# Ensure requests[security] is activated
script = "import requests as r; r.get('https://mozilla-modern.badssl.com')"
system libexec/"bin/python", "-c", script
ensure
system Formula["gnupg"].opt_bin/"gpgconf", "--kill", "gpg-agent"
system Formula["gnupg"].opt_bin/"gpgconf", "--homedir", "keyrings/live",
"--kill", "gpg-agent"
end
end
end