]> git.0d.be Git - panikweb-esperanzah.git/blobdiff - setup.py
Revert "enable stream"
[panikweb-esperanzah.git] / setup.py
index 0db41f004a396efd0192b9e208aaca5c770d02cd..6a341217bc7f2449b327feafca2abcbb0ba0ce99 100644 (file)
--- a/setup.py
+++ b/setup.py
-#!/usr/bin/env python
-
-from setuptools import setup
-
-setup(name='panikweb',
-      version='0.1',
-      description='Radio Panik Website',
-      author='Frederic Peters',
-      author_email='fpeters@0d.be',
-      url='http://www.radiopanik.org',
-      packages=[
-          'emissions',
-          'newsletter',
-          ],
-      install_requires=[
-          'django',
-          'django-jquery',
-          'django-registration',
-          'django-datetime-widget',
-          'sorl-thumbnail',
-           ],
-      license='GPL',
-      classifiers=['Development Status :: 3 - Alpha',
-                   'Environment :: Web Environment',
-                   'Framework :: Django',
-                   'Intended Audience :: Developers',
-                   'License :: OSI Approved :: GNU General Public License (GPL) License',
-                   'Operating System :: OS Independent',
-                   'Programming Language :: Python',
-                   'Topic :: Internet :: WWW/HTTP',
-                   'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
-                   ],
-      )
+#! /usr/bin/env python3
+
+import os
+import subprocess
+import sys
+from distutils.cmd import Command
+from distutils.command.build import build as _build
+from distutils.command.sdist import sdist as _sdist
+from distutils.errors import CompileError
+from distutils.spawn import find_executable
+
+from setuptools import find_packages, setup
+from setuptools.command.install_lib import install_lib as _install_lib
+
+
+class sdist(_sdist):
+    def run(self):
+        if os.path.exists('VERSION'):
+            os.remove('VERSION')
+        version = get_version()
+        with open('VERSION', 'w') as fd:
+            fd.write(version)
+        _sdist.run(self)
+        if os.path.exists('VERSION'):
+            os.remove('VERSION')
+
+
+def get_version():
+    if os.path.exists('VERSION'):
+        with open('VERSION', 'r') as v:
+            return v.read()
+    if os.path.exists('.git'):
+        p = subprocess.Popen(
+            ['git', 'describe', '--dirty=.dirty', '--match=v*'],
+            stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE,
+        )
+        result = p.communicate()[0]
+        if p.returncode == 0:
+            result = result.decode('ascii').strip()[1:]  # strip spaces/newlines and initial v
+            if '-' in result:  # not a tagged version
+                real_number, commit_count, commit_hash = result.split('-', 2)
+                version = '%s.post%s+%s' % (real_number, commit_count, commit_hash)
+            else:
+                version = result
+            return version
+        else:
+            return '0.0.post%s' % len(subprocess.check_output(['git', 'rev-list', 'HEAD']).splitlines())
+    return '0.0'
+
+
+class compile_translations(Command):
+    description = 'compile message catalogs to MO files via django compilemessages'
+    user_options = []
+
+    def initialize_options(self):
+        pass
+
+    def finalize_options(self):
+        pass
+
+    def run(self):
+        try:
+            from django.core.management import call_command
+
+            for path, dirs, files in os.walk('panikweb_esperanzah'):
+                if 'locale' not in dirs:
+                    continue
+                curdir = os.getcwd()
+                os.chdir(os.path.realpath(path))
+                call_command('compilemessages')
+                os.chdir(curdir)
+        except ImportError:
+            sys.stderr.write('!!! Please install Django to build translations\n')
+
+
+class compile_scss(Command):
+    description = 'compile scss files into css files'
+    user_options = []
+
+    def initialize_options(self):
+        pass
+
+    def finalize_options(self):
+        pass
+
+    def run(self):
+        sass_bin = None
+        for program in ('sassc', 'sass'):
+            sass_bin = find_executable(program)
+            if sass_bin:
+                break
+        if not sass_bin:
+            raise CompileError(
+                'A sass compiler is required but none was found.  See sass-lang.com for choices.'
+            )
+
+        for path, dirnames, filenames in os.walk('panikweb_esperanzah'):
+            for filename in filenames:
+                if not filename.endswith('.scss'):
+                    continue
+                if filename.startswith('_'):
+                    continue
+                subprocess.check_call(
+                    [
+                        sass_bin,
+                        '%s/%s' % (path, filename),
+                        '%s/%s' % (path, filename.replace('.scss', '.css')),
+                    ]
+                )
+
+
+class build(_build):
+    sub_commands = [('compile_translations', None), ('compile_scss', None)] + _build.sub_commands
+
+
+class install_lib(_install_lib):
+    def run(self):
+        self.run_command('compile_translations')
+        _install_lib.run(self)
+
+
+setup(
+    name='panikweb_esperanzah',
+    version=get_version(),
+    description='Panikweb extension/theme for Radio Esperanzah',
+    author='Frederic Peters',
+    author_email='fpeters@0d.be',
+    url='https://radio.esperanzah.be',
+    packages=find_packages(),
+    include_package_data=True,
+    classifiers=[
+        'Development Status :: 3 - Alpha',
+        'Environment :: Web Environment',
+        'Framework :: Django',
+        'Intended Audience :: Developers',
+        'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python',
+        'Programming Language :: Python :: 3',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
+    ],
+    zip_safe=False,
+    cmdclass={
+        'build': build,
+        'compile_scss': compile_scss,
+        'compile_translations': compile_translations,
+        'install_lib': install_lib,
+        'sdist': sdist,
+    },
+)