aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/mitmproxy.rb
blob: cb40e700b19ff30bbcf29a847f271cbd7e171d86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require 'formula'

class PyOpenSsl < Formula
  url 'https://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.13.1.tar.gz'
  sha1 '60633ebb821d48d7132a436c897288ec0121b892'
end

class Pil < Formula
  url 'http://effbot.org/media/downloads/PIL-1.1.7.tar.gz'
  sha1 'a1450d0f4f5bd1ca050b75fb363f73bddd5f1c23'
end

class Flask < Formula
  url 'https://pypi.python.org/packages/source/F/Flask/Flask-0.10.1.tar.gz'
  sha1 'd3d078262b053f4438e2ed3fd6f9b923c2c92172'
end

class Lxml < Formula
  url 'https://pypi.python.org/packages/source/l/lxml/lxml-3.2.3.tar.gz'
  sha1 '33a3017090903f13b329ef3d81b5082e8d6463f7'
end

class Netlib < Formula
  url 'https://pypi.python.org/packages/source/n/netlib/netlib-0.9.2.tar.gz'
  sha1 '7c62c96829295d8e55f8644f242959f6a150720e'
end

class PyAsn1 < Formula
  url 'https://pypi.python.org/packages/source/p/pyasn1/pyasn1-0.1.7.tar.gz'
  sha1 'e32b91c5a5d9609fb1d07d8685a884bab22ca6d0'
end

class Urwid < Formula
  url 'https://pypi.python.org/packages/source/u/urwid/urwid-1.1.1.tar.gz'
  sha1 '0d6aa34975bb516565cfbf951487d26161e400b7'
end

class PyAmf < Formula
  url 'https://pypi.python.org/packages/source/P/PyAMF/PyAMF-0.6.1.tar.gz'
  sha1 '825a5ee167c89d3a026347b409ae26cbf6c68530'
end

class Mitmproxy < Formula
  homepage 'http://mitmproxy.org'
  url 'http://mitmproxy.org/download/mitmproxy-0.9.2.tar.gz'
  sha1 '7fa95ef27a4ac5ec85010f4ddb85cf6b7f17ef27'

  option 'with-pyamf', 'Enable action message format (AMF) support for python'

  depends_on :python
  depends_on 'protobuf' => :optional

  # TODO: Move this into Library/Homebrew somewhere (see also ansible.rb).
  def wrap bin_file, pythonpath
    bin_file = Pathname.new bin_file
    libexec_bin = Pathname.new libexec/'bin'
    libexec_bin.mkpath
    mv bin_file, libexec_bin
    bin_file.write <<-EOS.undent
      #!/bin/sh
      PYTHONPATH="#{pythonpath}:$PYTHONPATH" "#{libexec_bin}/#{bin_file.basename}" "$@"
    EOS
  end

  def install
    install_args = [ "setup.py", "install", "--prefix=#{libexec}" ]

    python do
      PyOpenSsl.new.brew { system python, *install_args }
      Pil.new.brew { system python, *install_args }
      Flask.new.brew { system python, *install_args }
      Lxml.new.brew { system python, *install_args }
      Netlib.new.brew { system python, *install_args }
      PyAsn1.new.brew { system python, *install_args }
      Urwid.new.brew { system python, *install_args }
      PyAmf.new.brew { system python, *install_args } if build.with? 'pyamf'

      inreplace 'libmproxy/__init__.py',
                /^$/,
                "import site; site.addsitedir('#{python.private_site_packages}')"

      system python, "setup.py", "install", "--prefix=#{prefix}"
    end

    Dir["#{bin}/*"].each do |bin_file|
      wrap bin_file, python.site_packages
    end
  end
end