Adding setup.py to charm-generator

Change-Id: I1ba69e255727703ed2f25b4f3dbabd53685573f4
Signed-off-by: Eduardo Sousa <esousa@whitestack.com>
diff --git a/descriptor-packages/tools/charm-generator/generator-runner.py b/descriptor-packages/tools/charm-generator/generator-runner.py
new file mode 100644
index 0000000..275156b
--- /dev/null
+++ b/descriptor-packages/tools/charm-generator/generator-runner.py
@@ -0,0 +1,22 @@
+# Copyright 2019 Whitestack, LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: esousa@whitestack.com or glavado@whitestack.com
+##
+
+from generator.generator import main
+
+if __name__ == '__main__':
+    main()
diff --git a/descriptor-packages/tools/charm-generator/generators/__init__.py b/descriptor-packages/tools/charm-generator/generator/__init__.py
similarity index 100%
copy from descriptor-packages/tools/charm-generator/generators/__init__.py
copy to descriptor-packages/tools/charm-generator/generator/__init__.py
diff --git a/descriptor-packages/tools/charm-generator/generator/__main__.py b/descriptor-packages/tools/charm-generator/generator/__main__.py
new file mode 100644
index 0000000..01143fb
--- /dev/null
+++ b/descriptor-packages/tools/charm-generator/generator/__main__.py
@@ -0,0 +1,21 @@
+# Copyright 2019 Whitestack, LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: esousa@whitestack.com or glavado@whitestack.com
+##
+
+from .generator import main
+
+main()
diff --git a/descriptor-packages/tools/charm-generator/actions/__init__.py b/descriptor-packages/tools/charm-generator/generator/actions/__init__.py
similarity index 100%
rename from descriptor-packages/tools/charm-generator/actions/__init__.py
rename to descriptor-packages/tools/charm-generator/generator/actions/__init__.py
diff --git a/descriptor-packages/tools/charm-generator/actions/templates/action.j2 b/descriptor-packages/tools/charm-generator/generator/actions/templates/action.j2
similarity index 100%
rename from descriptor-packages/tools/charm-generator/actions/templates/action.j2
rename to descriptor-packages/tools/charm-generator/generator/actions/templates/action.j2
diff --git a/descriptor-packages/tools/charm-generator/actions/templates/actions.yaml.j2 b/descriptor-packages/tools/charm-generator/generator/actions/templates/actions.yaml.j2
similarity index 100%
rename from descriptor-packages/tools/charm-generator/actions/templates/actions.yaml.j2
rename to descriptor-packages/tools/charm-generator/generator/actions/templates/actions.yaml.j2
diff --git a/descriptor-packages/tools/charm-generator/ansible-charm/__init__.py b/descriptor-packages/tools/charm-generator/generator/ansible-charm/__init__.py
similarity index 100%
rename from descriptor-packages/tools/charm-generator/ansible-charm/__init__.py
rename to descriptor-packages/tools/charm-generator/generator/ansible-charm/__init__.py
diff --git a/descriptor-packages/tools/charm-generator/ansible-charm/templates/ansible_charm.py.j2 b/descriptor-packages/tools/charm-generator/generator/ansible-charm/templates/ansible_charm.py.j2
similarity index 100%
rename from descriptor-packages/tools/charm-generator/ansible-charm/templates/ansible_charm.py.j2
rename to descriptor-packages/tools/charm-generator/generator/ansible-charm/templates/ansible_charm.py.j2
diff --git a/descriptor-packages/tools/charm-generator/ansible-charm/templates/ansible_lib.py.j2 b/descriptor-packages/tools/charm-generator/generator/ansible-charm/templates/ansible_lib.py.j2
similarity index 100%
rename from descriptor-packages/tools/charm-generator/ansible-charm/templates/ansible_lib.py.j2
rename to descriptor-packages/tools/charm-generator/generator/ansible-charm/templates/ansible_lib.py.j2
diff --git a/descriptor-packages/tools/charm-generator/ansible-charm/templates/layer.yaml.j2 b/descriptor-packages/tools/charm-generator/generator/ansible-charm/templates/layer.yaml.j2
similarity index 100%
rename from descriptor-packages/tools/charm-generator/ansible-charm/templates/layer.yaml.j2
rename to descriptor-packages/tools/charm-generator/generator/ansible-charm/templates/layer.yaml.j2
diff --git a/descriptor-packages/tools/charm-generator/generator.py b/descriptor-packages/tools/charm-generator/generator/generator.py
similarity index 98%
rename from descriptor-packages/tools/charm-generator/generator.py
rename to descriptor-packages/tools/charm-generator/generator/generator.py
index 22ce1cb..0ef9d1d 100644
--- a/descriptor-packages/tools/charm-generator/generator.py
+++ b/descriptor-packages/tools/charm-generator/generator/generator.py
@@ -16,13 +16,15 @@
 # contact: esousa@whitestack.com or glavado@whitestack.com
 ##
 
+__version__ = '1.0.0'
+
 import argparse
 import logging
 import sys
 
 from datetime import datetime
 
-from generators.ansible_generator import AnsibleGenerator
+from .generators.ansible_generator import AnsibleGenerator
 
 
 def configure_logger(args):
@@ -165,7 +167,3 @@
     generator.generate()
 
     logger.info('Generation process complete.')
-
-
-if __name__ == "__main__":
-    main()
diff --git a/descriptor-packages/tools/charm-generator/generators/__init__.py b/descriptor-packages/tools/charm-generator/generator/generators/__init__.py
similarity index 100%
rename from descriptor-packages/tools/charm-generator/generators/__init__.py
rename to descriptor-packages/tools/charm-generator/generator/generators/__init__.py
diff --git a/descriptor-packages/tools/charm-generator/generators/actions_generator.py b/descriptor-packages/tools/charm-generator/generator/generators/actions_generator.py
similarity index 98%
rename from descriptor-packages/tools/charm-generator/generators/actions_generator.py
rename to descriptor-packages/tools/charm-generator/generator/generators/actions_generator.py
index 832fd09..b3da7c3 100644
--- a/descriptor-packages/tools/charm-generator/generators/actions_generator.py
+++ b/descriptor-packages/tools/charm-generator/generator/generators/actions_generator.py
@@ -26,7 +26,7 @@
 
 class ActionsGenerator:
     LOGGER = logging.getLogger()
-    ENV = Environment(loader=PackageLoader('actions', 'templates'))
+    ENV = Environment(loader=PackageLoader('generator.actions', 'templates'))
 
     def __init__(self, metadata, actions, license=None, options=None):
         """
diff --git a/descriptor-packages/tools/charm-generator/generators/ansible_generator.py b/descriptor-packages/tools/charm-generator/generator/generators/ansible_generator.py
similarity index 96%
rename from descriptor-packages/tools/charm-generator/generators/ansible_generator.py
rename to descriptor-packages/tools/charm-generator/generator/generators/ansible_generator.py
index 18f5a5a..cefe422 100644
--- a/descriptor-packages/tools/charm-generator/generators/ansible_generator.py
+++ b/descriptor-packages/tools/charm-generator/generator/generators/ansible_generator.py
@@ -23,13 +23,13 @@
 
 from jinja2 import Environment, PackageLoader
 
-from generators.actions_generator import ActionsGenerator
-from generators.metadata_generator import MetadataGenerator
+from generator.generators.actions_generator import ActionsGenerator
+from generator.generators.metadata_generator import MetadataGenerator
 
 
 class AnsibleGenerator:
     LOGGER = logging.getLogger()
-    ENV = Environment(loader=PackageLoader('ansible-charm', 'templates'))
+    ENV = Environment(loader=PackageLoader('generator.ansible-charm', 'templates'))
 
     def __init__(self, metadata, license=None, options=None):
         """
diff --git a/descriptor-packages/tools/charm-generator/generators/metadata_generator.py b/descriptor-packages/tools/charm-generator/generator/generators/metadata_generator.py
similarity index 98%
rename from descriptor-packages/tools/charm-generator/generators/metadata_generator.py
rename to descriptor-packages/tools/charm-generator/generator/generators/metadata_generator.py
index 8b0d9b8..6c9b000 100644
--- a/descriptor-packages/tools/charm-generator/generators/metadata_generator.py
+++ b/descriptor-packages/tools/charm-generator/generator/generators/metadata_generator.py
@@ -28,7 +28,7 @@
 
 class MetadataGenerator:
     LOGGER = logging.getLogger()
-    ENV = Environment(loader=PackageLoader('metadata', 'templates'))
+    ENV = Environment(loader=PackageLoader('generator.metadata', 'templates'))
 
     def __init__(self, metadata, license=None, options=None):
         """
diff --git a/descriptor-packages/tools/charm-generator/metadata/__init__.py b/descriptor-packages/tools/charm-generator/generator/metadata/__init__.py
similarity index 100%
rename from descriptor-packages/tools/charm-generator/metadata/__init__.py
rename to descriptor-packages/tools/charm-generator/generator/metadata/__init__.py
diff --git a/descriptor-packages/tools/charm-generator/metadata/templates/metadata.yaml.j2 b/descriptor-packages/tools/charm-generator/generator/metadata/templates/metadata.yaml.j2
similarity index 100%
rename from descriptor-packages/tools/charm-generator/metadata/templates/metadata.yaml.j2
rename to descriptor-packages/tools/charm-generator/generator/metadata/templates/metadata.yaml.j2
diff --git a/descriptor-packages/tools/charm-generator/requirements.txt b/descriptor-packages/tools/charm-generator/requirements.txt
index 89ee2b0..f0aaeda 100644
--- a/descriptor-packages/tools/charm-generator/requirements.txt
+++ b/descriptor-packages/tools/charm-generator/requirements.txt
@@ -1 +1 @@
-Jinja2==2.10
+Jinja2>=2.10
diff --git a/descriptor-packages/tools/charm-generator/setup.py b/descriptor-packages/tools/charm-generator/setup.py
new file mode 100644
index 0000000..5015efa
--- /dev/null
+++ b/descriptor-packages/tools/charm-generator/setup.py
@@ -0,0 +1,55 @@
+# Copyright 2019 Whitestack, LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: esousa@whitestack.com or glavado@whitestack.com
+##
+
+import re
+import setuptools
+
+version = re.search(
+    r'^__version__\s*=\s*["\'](.*)["\']',
+    open('generator/generator.py').read(),
+    re.MULTILINE).group(1)
+
+with open('README.md', 'r') as f:
+    long_description = f.read()
+
+setuptools.setup(
+    name='osm-charm-generator',
+    packages=setuptools.find_packages(),
+    entry_points={
+        "console_scripts": ['osm-charm-generator = generator.generator:main']
+    },
+    version=version,
+    author='Eduardo Sousa',
+    author_email='esousa@whitestack.com',
+    description='OSM Charm Generator using Ansible',
+    long_description=long_description,
+    long_description_content_type='text/markdown',
+    url='https://osm.etsi.org',
+    install_requires=[
+        'Jinja2>=2.10'
+    ],
+    classifiers=[
+        'Programming Language :: Python :: 3 :: Only',
+        'License :: OSI Approved :: Apache Software License',
+        'Operating System :: POSIX :: Linux',
+        'Environment :: Console',
+        'Intended Audience :: Telecommunications Industry',
+        'Natural Language :: English',
+        'Topic :: Software Development :: Code Generators'
+    ]
+)