Skip to content

Commit d55b4bf

Browse files
committed
Add Hackage frontend support
1 parent 9694e26 commit d55b4bf

3 files changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{% extends 'base.Portfile' %}
2+
3+
{% block portgroup %}
4+
PortGroup haskell 1.0
5+
{% endblock %}
6+
{% block nameversion %}
7+
haskell.setup {{ pkg._pkgname() }} {{ pkg.upt_pkg.version }}
8+
revision 0
9+
{% endblock %}
10+
11+
{% block dist_info %}
12+
homepage {{ pkg.upt_pkg.homepage }}
13+
{% endblock %}
14+
15+
{% block versions %}
16+
depends_lib-append \
17+
{% for i in pkg.upt_pkg.requirements.run|sort(attribute='name') %}
18+
port:hs-{{i.name|lower}}{% if not loop.last %} \
19+
{% endif %}
20+
{% endfor %}
21+
{% endblock %}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import unittest
2+
3+
import upt
4+
5+
from upt_macports.upt_macports import MacPortsHackagePackage
6+
7+
8+
class TestMacPortsHackagePackage(unittest.TestCase):
9+
def setUp(self):
10+
self.package = MacPortsHackagePackage()
11+
self.package.upt_pkg = upt.Package('test-pkg', '13.37')
12+
13+
def test_pkgname(self):
14+
expected = ['Foo', 'foo', 'Foo-bar', 'foo-bar']
15+
names = ['Foo', 'foo', 'Foo-bar', 'foo-bar']
16+
for (name, expected_name) in zip(names, expected):
17+
self.package.upt_pkg = upt.Package(name, '13.37')
18+
self.assertEqual(self.package._pkgname(), expected_name)
19+
20+
def test_folder_name(self):
21+
expected = ['hs-foo', 'hs-foo', 'hs-foo-bar', 'hs-foo-bar']
22+
names = ['Foo', 'foo', 'Foo-bar', 'foo-bar']
23+
for (name, expected_name) in zip(names, expected):
24+
self.assertEqual(
25+
self.package._normalized_macports_folder(name), expected_name)
26+
27+
28+
if __name__ == '__main__':
29+
unittest.main()

upt_macports/upt_macports.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def _create_output_directories(self, upt_pkg, output_dir):
2828
'cpan': 'perl',
2929
'pypi': 'python',
3030
'rubygems': 'ruby',
31+
'hackage': 'devel',
3132
}
3233
try:
3334
port_category = upt2macports[self.upt_pkg.frontend]
@@ -223,6 +224,24 @@ def _normalized_macports_folder(name):
223224
return f'rb-{name}'
224225

225226

227+
class MacPortsHackagePackage(MacPortsPackage):
228+
template = 'hackage.Portfile'
229+
archive_format = upt.ArchiveType.SOURCE_TARGZ
230+
231+
def _pkgname(self):
232+
macports_name = self._normalized_macports_name(self.upt_pkg.name)
233+
return macports_name
234+
235+
@staticmethod
236+
def _normalized_macports_name(name):
237+
return name
238+
239+
@staticmethod
240+
def _normalized_macports_folder(name):
241+
name = name.lower()
242+
return f'hs-{name}'
243+
244+
226245
class MacPortsBackend(upt.Backend):
227246
name = 'macports'
228247

@@ -231,6 +250,7 @@ def create_package(self, upt_pkg, output=None):
231250
'pypi': MacPortsPythonPackage,
232251
'cpan': MacPortsPerlPackage,
233252
'rubygems': MacPortsRubyPackage,
253+
'hackage': MacPortsHackagePackage,
234254
'npm': MacPortsNpmPackage
235255
}
236256

0 commit comments

Comments
 (0)