|
- # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
- # MIT License. See license.txt
-
- from __future__ import unicode_literals
-
- import webnotes, os
- from webnotes.utils import touch_file
-
- def make_boilerplate():
- if not os.path.exists("sites"):
- print "Run from bench! (sites folder must exist)"
- return
-
- hooks = webnotes._dict()
- for key in ("App Name", "App Title", "App Description", "App Publisher",
- "App Icon", "App Color", "App Email", "App URL", "App License"):
- hook_key = key.lower().replace(" ", "_")
- hook_val = None
- while not hook_val:
- hook_val = raw_input(key + ": ")
- if hook_key=="app_name" and hook_val.lower().replace(" ", "_") != hook_val:
- print "App Name must be all lowercase and without spaces"
- hook_val = ""
-
- hooks[hook_key] = hook_val
-
- webnotes.create_folder(os.path.join(hooks.app_name, hooks.app_name, hooks.app_name))
- webnotes.create_folder(os.path.join(hooks.app_name, hooks.app_name, "templates"))
- webnotes.create_folder(os.path.join(hooks.app_name, hooks.app_name, "config"))
- touch_file(os.path.join(hooks.app_name, hooks.app_name, "__init__.py"))
- touch_file(os.path.join(hooks.app_name, hooks.app_name, hooks.app_name, "__init__.py"))
- touch_file(os.path.join(hooks.app_name, hooks.app_name, "templates", "__init__.py"))
- touch_file(os.path.join(hooks.app_name, hooks.app_name, "config", "__init__.py"))
-
- with open(os.path.join(hooks.app_name, "MANIFEST.in"), "w") as f:
- f.write(manifest_template.format(**hooks))
-
- with open(os.path.join(hooks.app_name, ".gitignore"), "w") as f:
- f.write(gitignore_template)
-
- with open(os.path.join(hooks.app_name, "setup.py"), "w") as f:
- f.write(setup_template.format(**hooks))
-
- with open(os.path.join(hooks.app_name, "requirements.txt"), "w") as f:
- f.write("webnotes")
-
- touch_file(os.path.join(hooks.app_name, "README.md"))
-
- with open(os.path.join(hooks.app_name, "license.txt"), "w") as f:
- f.write("License: " + hooks.app_license)
-
- with open(os.path.join(hooks.app_name, hooks.app_name, "modules.txt"), "w") as f:
- f.write(hooks.app_name)
-
- with open(os.path.join(hooks.app_name, hooks.app_name, "hooks.txt"), "w") as f:
- f.write(hooks_template.format(**hooks))
-
- touch_file(os.path.join(hooks.app_name, hooks.app_name, "patches.txt"))
-
- with open(os.path.join(hooks.app_name, hooks.app_name, "config", "desktop.py"), "w") as f:
- f.write(desktop_template.format(**hooks))
-
-
-
-
- manifest_template = """include MANIFEST.in
- include requirements.txt
- include *.json
- include *.md
- include *.py
- include *.txt
- recursive-include {app_name} *.css
- recursive-include {app_name} *.csv
- recursive-include {app_name} *.html
- recursive-include {app_name} *.ico
- recursive-include {app_name} *.js
- recursive-include {app_name} *.json
- recursive-include {app_name} *.md
- recursive-include {app_name} *.png
- recursive-include {app_name} *.py
- recursive-include {app_name} *.svg
- recursive-include {app_name} *.txt
- recursive-exclude {app_name} *.pyc"""
-
- hooks_template = """app_name = {app_name}
- app_title = {app_title}
- app_publisher = {app_publisher}
- app_description = {app_description}
- app_icon = {app_icon}
- app_color = {app_color}
- app_email = {app_email}
- app_url = {app_url}
- app_version = 0.0.1
- """
-
- desktop_template = """from webnotes import _
-
- data = {{
- "{app_title}": {{
- "color": "{app_color}",
- "icon": "{app_icon}",
- "label": _("{app_title}")
- }}
- }}
- """
-
- setup_template = """from setuptools import setup, find_packages
- import os
-
- version = '0.0.1'
-
- setup(
- name='{app_name}',
- version=version,
- description='{app_description}',
- author='{app_publisher}',
- author_email='{app_email}',
- packages=find_packages(),
- zip_safe=False,
- include_package_data=True,
- install_requires=("webnotes",),
- )
- """
-
- gitignore_template = """.DS_Store
- *.pyc
- *.egg-info
- *.swp
- tags"""
|