From cf25aa448eadfc0011937e5dec734f634748a3f7 Mon Sep 17 00:00:00 2001 From: Sean Hammond Date: Mon, 23 Feb 2015 17:07:56 +0000 Subject: [PATCH] Turn it into a proper Python package --- .gitignore | 2 + MANIFEST.in | 1 + dotfilemanager/__init__.py | 0 .../dotfilemanager.py | 7 +- setup.py | 81 +++++++++++++++++++ 5 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 MANIFEST.in create mode 100644 dotfilemanager/__init__.py rename dotfilemanager.py => dotfilemanager/dotfilemanager.py (99%) create mode 100644 setup.py diff --git a/.gitignore b/.gitignore index f3d74a9..9fca990 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.pyc *~ +dist/* +*.egg-info diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..db896dc --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include README.markdown diff --git a/dotfilemanager/__init__.py b/dotfilemanager/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/dotfilemanager.py b/dotfilemanager/dotfilemanager.py similarity index 99% rename from dotfilemanager.py rename to dotfilemanager/dotfilemanager.py index 1fd8a3d..0b6e055 100755 --- a/dotfilemanager.py +++ b/dotfilemanager/dotfilemanager.py @@ -161,7 +161,8 @@ Commands: FROM_DIR defaults to ~ and TO_DIR defaults to ~/.dotfiles. """ -if __name__ == "__main__": + +def main(): try: ACTION = sys.argv[1] except IndexError: @@ -202,3 +203,7 @@ if __name__ == "__main__": else: print usage() sys.exit(2) + + +if __name__ == "__main__": + main() diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..50b17e5 --- /dev/null +++ b/setup.py @@ -0,0 +1,81 @@ +from setuptools import setup, find_packages # Always prefer setuptools over distutils +from codecs import open # To use a consistent encoding +from os import path + +here = path.abspath(path.dirname(__file__)) + +# Get the long description from the relevant file +with open(path.join(here, 'README.markdown'), encoding='utf-8') as f: + long_description = f.read() + +setup( + name='dotfilemanager', + + # Versions should comply with PEP440. For a discussion on single-sourcing + # the version across setup.py and the project code, see + # http://packaging.python.org/en/latest/tutorial.html#version + version='1.0.0', + + description='A dotfiles manager script', + long_description=long_description, + + # The project's main homepage. + url='https://github.com/seanh/dotfilemanager', + + # Author details + author='Sean Hammond', + author_email='dotfilemanager@seanh.cc', + + # Choose your license + license='GPLv3', + + # See https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + 'Development Status :: 4 - Beta', + + # Pick your license as you wish (should match "license" above) + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + 'Programming Language :: Python :: 2.7', + ], + + # What does your project relate to? + keywords='', + + # You can just specify the packages manually here if your project is + # simple. Or you can use find_packages(). + packages=find_packages(exclude=['contrib', 'docs', 'tests*']), + + # List run-time dependencies here. These will be installed by pip when your + # project is installed. For an analysis of "install_requires" vs pip's + # requirements files see: + # https://packaging.python.org/en/latest/technical.html#install-requires-vs-requirements-files + install_requires=[], + + # If there are data files included in your packages that need to be + # installed, specify them here. If using Python 2.6 or less, then these + # have to be included in MANIFEST.in as well. + package_data={ + }, + + # Although 'package_data' is the preferred approach, in some case you may + # need to place data files outside of your packages. + # see http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files + # In this case, 'data_file' will be installed into '/my_data' + data_files=[], + + # To provide executable scripts, use entry points in preference to the + # "scripts" keyword. Entry points provide cross-platform support and allow + # pip to create the appropriate form of executable for the target platform. + entry_points={ + 'console_scripts': [ + 'dotfilemanager=dotfilemanager.dotfilemanager:main', + ], + }, +)