<pre style='margin:0'>
Mojca Miklavec (mojca) pushed a commit to branch master
in repository upt-macports.

</pre>
<p><a href="https://github.com/macports/upt-macports/commit/215cb173770e38251174144434913fa0189fd28b">https://github.com/macports/upt-macports/commit/215cb173770e38251174144434913fa0189fd28b</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 215cb173770e38251174144434913fa0189fd28b
</span>Author: Mojca Miklavec <mojca@macports.org>
AuthorDate: Wed Mar 27 07:50:11 2019 +0100

<span style='display:block; white-space:pre;color:#404040;'>    Add preliminary support for pypi for MacPorts
</span>---
 upt_macports/templates/base.Portfile   | 28 ++++++++++++
 upt_macports/templates/base.tmpl       |  0
 upt_macports/templates/python.Portfile |  9 ++++
 upt_macports/upt_macports.py           | 84 +++++++++++++++++++++++++++++++++-
 4 files changed, 120 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/templates/base.Portfile b/upt_macports/templates/base.Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9928be5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/templates/base.Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,28 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block portgroup %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block nameversion %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                {{ pkg._pkgname() }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             {{ pkg.upt_pkg.version }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         {{ pkg.upt_pkg.summary }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block versions %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block build_deps %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{{ depends_build-append pkg.build_depends }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block run_deps %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{{ depends_run-append pkg.run_depends }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block test_deps %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{{ depends('TEST', pkg.test_depends) }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/templates/base.tmpl b/upt_macports/templates/base.tmpl
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e69de29..0000000
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/templates/python.Portfile b/upt_macports/templates/python.Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..685b0dd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/templates/python.Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% extends 'base.Portfile' %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block portgroup %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block versions %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions     27 36 37
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/upt_macports.py b/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;color:#808080;'>index 9165f62..f10cfdc 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,8 +1,90 @@
</span> import upt
<span style='display:block; white-space:pre;background:#e0ffe0;'>+import logging
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import jinja2
</span> 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsPackage(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def __init__(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        self.logger = logging.getLogger('upt')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def create_package(self, upt_pkg, output):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        self.upt_pkg = upt_pkg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #self._create_output_directories(upt_pkg, output)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #self._create_makefile()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #self._create_pkg_descr()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        self.logger.info(f'Hello, creating the package')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        print(self._render_makefile_template())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        print(self._depends)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # self.name, self.specifier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def _render_makefile_template(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        env = jinja2.Environment(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            loader=jinja2.PackageLoader('upt_macports', 'templates'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            trim_blocks=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            lstrip_blocks=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            keep_trailing_newline=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #env.filters['reqformat'] = self.jinja2_reqformat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        template = env.get_template(self.template)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return template.render(pkg=self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def _depends(self, phase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return self.upt_pkg.requirements.get(phase, [])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @property
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def build_depends(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return self._depends('build')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @property
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def run_depends(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return self._depends('run')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @property
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def test_depends(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return self._depends('test')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsPythonPackage(MacPortsPackage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    template = 'python.Portfile'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def _pkgname(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        macports_name = self._normalized_macports_name(self.upt_pkg.name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return f'{macports_name}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    @staticmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def _normalized_macports_name(name):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        name = name.lower()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return f'py-{name}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#        if name == 'py':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#            return 'py-py'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#        if name.startswith('python-'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#            name = name[7:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#        elif name.startswith('py-'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#            name = name[3:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#        elif name.startswith('py'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#            name = name[2:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#        return f'py-{name}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsPerlPackage(MacPortsPackage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    template = 'perl.Portfile'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsRubyPackage(MacPortsPackage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    template = 'ruby.Portfile'
</span> 
 class MacportsBackend(upt.Backend):
     name = 'macports'
 
     def create_package(self, upt_pkg, output=None):
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        pkg_classes = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            'pypi': MacPortsPythonPackage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            'cpan': MacPortsPerlPackage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            'rubygems': MacPortsRubyPackage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            pkg_cls = pkg_classes[upt_pkg.frontend]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        except KeyError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            raise upt.UnhandledFrontendError(self.name, upt_pkg.frontend)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        packager = pkg_cls()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        packager.create_package(upt_pkg, output)
</span></pre><pre style='margin:0'>

</pre>