#!/usr/bin/env python3 import glob import os import sys from subprocess import check_output, CalledProcessError from setuptools import setup, find_packages from setuptools.command.build_py import build_py class CustomBuildExtCommand(build_py): """Customized setuptools install command - prints a friendly greeting.""" def buildInkscapeExt(self): os.system("%s %s %s" % (sys.executable, os.path.join("scripts", "boxes2inkscape"), "inkex")) def run(self): self.execute(self.buildInkscapeExt, ()) try: path = check_output(["inkscape", "-x"]).decode().strip() if not os.access(path, os.W_OK): # Can we install globaly # Not tested on Windows and Mac path = os.path.expanduser("~/.config/inkscape/extensions") if self.distribution.data_files is None: self.distribution.data_files = [] self.distribution.data_files.append( (path, [i for i in glob.glob(os.path.join("inkex", "*.inx"))])) self.distribution.data_files.append((path, ['scripts/boxes'])) except CalledProcessError: pass # Inkscape is not installed build_py.run(self) setup( name='boxes', version='0.1', description='Boxes generator for laser cutters', author='Florian Festi', author_email='florian@festi.info', url='https://github.com/florianfesti/boxes', packages=find_packages(), install_requires=['cairocffi==0.8.0', 'markdown', 'lxml'], scripts=['scripts/boxes', 'scripts/boxesserver'], cmdclass={ 'build_py': CustomBuildExtCommand, }, classifiers=[ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: Web Environment", "Intended Audience :: Manufacturing", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Graphics :: Editors :: Vector-Based", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Computer Aided Design", ], keywords=["boxes", "box", "generator", "svg", "laser cutter"], )