Improved template handling
This commit is contained in:
parent
31515d2c3a
commit
f4ca76d844
12
cpl.json
12
cpl.json
@ -39,16 +39,6 @@
|
|||||||
"*/logs",
|
"*/logs",
|
||||||
"*/tests"
|
"*/tests"
|
||||||
],
|
],
|
||||||
"PackageData": {
|
"PackageData": {}
|
||||||
"cpl_cli": [
|
|
||||||
"templates/*",
|
|
||||||
"templates/build/*",
|
|
||||||
"templates/new/*",
|
|
||||||
"templates/new/console/*",
|
|
||||||
"templates/new/console/src/*",
|
|
||||||
"templates/new/console/src/tests/*",
|
|
||||||
"templates/publish/*"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,6 +11,8 @@ from cpl.console.console import Console
|
|||||||
from cpl_cli.configuration.build_settings import BuildSettings
|
from cpl_cli.configuration.build_settings import BuildSettings
|
||||||
from cpl_cli.configuration.project_settings import ProjectSettings
|
from cpl_cli.configuration.project_settings import ProjectSettings
|
||||||
from cpl_cli.publish.publisher_abc import PublisherABC
|
from cpl_cli.publish.publisher_abc import PublisherABC
|
||||||
|
from cpl_cli.templates.build.init import Init
|
||||||
|
from cpl_cli.templates.publish.setup import Setup
|
||||||
|
|
||||||
|
|
||||||
class Publisher(PublisherABC):
|
class Publisher(PublisherABC):
|
||||||
@ -113,7 +115,7 @@ class Publisher(PublisherABC):
|
|||||||
|
|
||||||
def _create_packages(self):
|
def _create_packages(self):
|
||||||
for file in self._included_files:
|
for file in self._included_files:
|
||||||
if file.endswith('console_src_tests.__init__.py'):
|
if file.endswith('__init__.py'):
|
||||||
template_content = ''
|
template_content = ''
|
||||||
module_file_lines: list[str] = []
|
module_file_lines: list[str] = []
|
||||||
|
|
||||||
@ -144,23 +146,22 @@ class Publisher(PublisherABC):
|
|||||||
if len(module_py_lines) > 0:
|
if len(module_py_lines) > 0:
|
||||||
imports = '\n'.join(module_py_lines)
|
imports = '\n'.join(module_py_lines)
|
||||||
|
|
||||||
with open(os.path.join(self._runtime.runtime_directory, 'templates/build/init.txt'), 'r') as template:
|
template_content = stringTemplate(Init.get_init_py()).substitute(
|
||||||
template_content = stringTemplate(template.read()).substitute(
|
Name=self._project_settings.name,
|
||||||
Name=self._project_settings.name,
|
Description=self._project_settings.description,
|
||||||
Description=self._project_settings.description,
|
LongDescription=self._project_settings.long_description,
|
||||||
LongDescription=self._project_settings.long_description,
|
CopyrightDate=self._project_settings.copyright_date,
|
||||||
CopyrightDate=self._project_settings.copyright_date,
|
CopyrightName=self._project_settings.copyright_name,
|
||||||
CopyrightName=self._project_settings.copyright_name,
|
LicenseName=self._project_settings.license_name,
|
||||||
LicenseName=self._project_settings.license_name,
|
LicenseDescription=self._project_settings.license_description,
|
||||||
LicenseDescription=self._project_settings.license_description,
|
Title=title if title is not None and title != '' else self._project_settings.name,
|
||||||
Title=title if title is not None and title != '' else self._project_settings.name,
|
Author=self._project_settings.author,
|
||||||
Author=self._project_settings.author,
|
Version=self._project_settings.version.to_str(),
|
||||||
Version=self._project_settings.version.to_str(),
|
Major=self._project_settings.version.major,
|
||||||
Major=self._project_settings.version.major,
|
Minor=self._project_settings.version.minor,
|
||||||
Minor=self._project_settings.version.minor,
|
Micro=self._project_settings.version.micro,
|
||||||
Micro=self._project_settings.version.micro,
|
Imports=imports
|
||||||
Imports=imports
|
)
|
||||||
)
|
|
||||||
|
|
||||||
with open(file, 'w+') as py_file:
|
with open(file, 'w+') as py_file:
|
||||||
py_file.write(template_content)
|
py_file.write(template_content)
|
||||||
@ -227,16 +228,6 @@ class Publisher(PublisherABC):
|
|||||||
if os.path.isfile(setup_file):
|
if os.path.isfile(setup_file):
|
||||||
os.remove(setup_file)
|
os.remove(setup_file)
|
||||||
|
|
||||||
template_path = os.path.join(self._runtime.runtime_directory, 'templates/publish/setup.txt')
|
|
||||||
if not os.path.isfile(template_path):
|
|
||||||
Console.error(__name__, f'setup.py template not found in {template_path}')
|
|
||||||
return
|
|
||||||
|
|
||||||
template_string = ''
|
|
||||||
with open(template_path, 'r') as template_file:
|
|
||||||
template_string = template_file.read()
|
|
||||||
template_file.close()
|
|
||||||
|
|
||||||
main = None
|
main = None
|
||||||
try:
|
try:
|
||||||
main = importlib.import_module(self._build_settings.main)
|
main = importlib.import_module(self._build_settings.main)
|
||||||
@ -248,7 +239,7 @@ class Publisher(PublisherABC):
|
|||||||
return
|
return
|
||||||
|
|
||||||
with open(setup_file, 'w+') as setup_py:
|
with open(setup_file, 'w+') as setup_py:
|
||||||
setup_string = stringTemplate(template_string).substitute(
|
setup_string = stringTemplate(Setup.get_setup_py()).substitute(
|
||||||
Name=self._project_settings.name,
|
Name=self._project_settings.name,
|
||||||
Version=self._project_settings.version.to_str(),
|
Version=self._project_settings.version.to_str(),
|
||||||
Packages=setuptools.find_packages(where=self._output_path, exclude=self._build_settings.excluded),
|
Packages=setuptools.find_packages(where=self._output_path, exclude=self._build_settings.excluded),
|
||||||
|
25
src/cpl_cli/templates/__init__.py
Normal file
25
src/cpl_cli/templates/__init__.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
sh_cpl sh-edraft Common Python library
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
sh-edraft Common Python library
|
||||||
|
|
||||||
|
:copyright: (c) 2020 - 2021 sh-edraft.de
|
||||||
|
:license: MIT, see LICENSE for more details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
__title__ = 'cpl_cli.templates'
|
||||||
|
__author__ = 'Sven Heidemann'
|
||||||
|
__license__ = 'MIT'
|
||||||
|
__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de'
|
||||||
|
__version__ = '2021.4.1'
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
# imports:
|
||||||
|
|
||||||
|
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||||
|
version_info = VersionInfo(major=2021, minor=4, micro=1)
|
25
src/cpl_cli/templates/build/__init__.py
Normal file
25
src/cpl_cli/templates/build/__init__.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
sh_cpl sh-edraft Common Python library
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
sh-edraft Common Python library
|
||||||
|
|
||||||
|
:copyright: (c) 2020 - 2021 sh-edraft.de
|
||||||
|
:license: MIT, see LICENSE for more details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
__title__ = 'cpl_cli.templates.build'
|
||||||
|
__author__ = 'Sven Heidemann'
|
||||||
|
__license__ = 'MIT'
|
||||||
|
__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de'
|
||||||
|
__version__ = '2021.4.1'
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
# imports:
|
||||||
|
|
||||||
|
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||||
|
version_info = VersionInfo(major=2021, minor=4, micro=1)
|
35
src/cpl_cli/templates/build/init.py
Normal file
35
src/cpl_cli/templates/build/init.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
from cpl_cli.templates.template import Template
|
||||||
|
|
||||||
|
|
||||||
|
class Init:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_init_py() -> str:
|
||||||
|
string = """# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
\"\"\"
|
||||||
|
$Name $Description
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
$LongDescription
|
||||||
|
|
||||||
|
:copyright: (c) $CopyrightDate $CopyrightName
|
||||||
|
:license: $LicenseDescription
|
||||||
|
|
||||||
|
\"\"\"
|
||||||
|
|
||||||
|
__title__ = '$Title'
|
||||||
|
__author__ = '$Author'
|
||||||
|
__license__ = '$LicenseName'
|
||||||
|
__copyright__ = 'Copyright (c) $CopyrightDate $CopyrightName'
|
||||||
|
__version__ = '$Version'
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
$Imports
|
||||||
|
|
||||||
|
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||||
|
version_info = VersionInfo(major=$Major, minor=$Minor, micro=$Micro)
|
||||||
|
"""
|
||||||
|
|
||||||
|
return Template.build_template_string(string)
|
@ -1,25 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
"""
|
|
||||||
$Name $Description
|
|
||||||
~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
$LongDescription
|
|
||||||
|
|
||||||
:copyright: (c) $CopyrightDate $CopyrightName
|
|
||||||
:license: $LicenseDescription
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
__title__ = '$Title'
|
|
||||||
__author__ = '$Author'
|
|
||||||
__license__ = '$LicenseName'
|
|
||||||
__copyright__ = 'Copyright (c) $CopyrightDate $CopyrightName'
|
|
||||||
__version__ = '$Version'
|
|
||||||
|
|
||||||
from collections import namedtuple
|
|
||||||
|
|
||||||
$Imports
|
|
||||||
|
|
||||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
|
||||||
version_info = VersionInfo(major=$Major, minor=$Minor, micro=$Micro)
|
|
@ -0,0 +1,25 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
sh_cpl sh-edraft Common Python library
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
sh-edraft Common Python library
|
||||||
|
|
||||||
|
:copyright: (c) 2020 - 2021 sh-edraft.de
|
||||||
|
:license: MIT, see LICENSE for more details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
__title__ = 'cpl_cli.templates.new.console.src.tests'
|
||||||
|
__author__ = 'Sven Heidemann'
|
||||||
|
__license__ = 'MIT'
|
||||||
|
__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de'
|
||||||
|
__version__ = '2021.4.1'
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
# imports:
|
||||||
|
|
||||||
|
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||||
|
version_info = VersionInfo(major=2021, minor=4, micro=1)
|
25
src/cpl_cli/templates/publish/__init__.py
Normal file
25
src/cpl_cli/templates/publish/__init__.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
sh_cpl sh-edraft Common Python library
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
sh-edraft Common Python library
|
||||||
|
|
||||||
|
:copyright: (c) 2020 - 2021 sh-edraft.de
|
||||||
|
:license: MIT, see LICENSE for more details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
__title__ = 'cpl_cli.templates.publish'
|
||||||
|
__author__ = 'Sven Heidemann'
|
||||||
|
__license__ = 'MIT'
|
||||||
|
__copyright__ = 'Copyright (c) 2020 - 2021 sh-edraft.de'
|
||||||
|
__version__ = '2021.4.1'
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
# imports:
|
||||||
|
|
||||||
|
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||||
|
version_info = VersionInfo(major=2021, minor=4, micro=1)
|
31
src/cpl_cli/templates/publish/setup.py
Normal file
31
src/cpl_cli/templates/publish/setup.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
from cpl_cli.templates.template import Template
|
||||||
|
|
||||||
|
|
||||||
|
class Setup:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_setup_py() -> str:
|
||||||
|
string = """\"\"\"
|
||||||
|
This file is generated by CPL CLI
|
||||||
|
\"\"\"
|
||||||
|
|
||||||
|
import setuptools
|
||||||
|
|
||||||
|
setuptools.setup(
|
||||||
|
name='$Name',
|
||||||
|
version='$Version',
|
||||||
|
packages=$Packages,
|
||||||
|
url='$URL',
|
||||||
|
license='$LicenseName',
|
||||||
|
author='$Author',
|
||||||
|
author_email='$AuthorMail',
|
||||||
|
include_package_data=$IncludePackageData,
|
||||||
|
description='$Description',
|
||||||
|
python_requires='$PyRequires',
|
||||||
|
install_requires=$Dependencies,
|
||||||
|
entry_points=$EntryPoints,
|
||||||
|
package_data=$PackageData
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
return Template.build_template_string(string)
|
@ -1,21 +0,0 @@
|
|||||||
"""
|
|
||||||
This file is generated by CPL CLI
|
|
||||||
"""
|
|
||||||
|
|
||||||
import setuptools
|
|
||||||
|
|
||||||
setuptools.setup(
|
|
||||||
name='$Name',
|
|
||||||
version='$Version',
|
|
||||||
packages=$Packages,
|
|
||||||
url='$URL',
|
|
||||||
license='$LicenseName',
|
|
||||||
author='$Author',
|
|
||||||
author_email='$AuthorMail',
|
|
||||||
include_package_data=$IncludePackageData,
|
|
||||||
description='$Description',
|
|
||||||
python_requires='$PyRequires',
|
|
||||||
install_requires=$Dependencies,
|
|
||||||
entry_points=$EntryPoints,
|
|
||||||
package_data=$PackageData
|
|
||||||
)
|
|
14
src/cpl_cli/templates/template.py
Normal file
14
src/cpl_cli/templates/template.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
class Template:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def build_template_string(string: str) -> str:
|
||||||
|
return_value = ''
|
||||||
|
for i in range(0, len(string.splitlines())):
|
||||||
|
line = string.splitlines()[i]
|
||||||
|
if i == len(string.splitlines())-1:
|
||||||
|
return_value += f'{line.strip()}'
|
||||||
|
break
|
||||||
|
|
||||||
|
return_value += f'{line.strip()}\n'
|
||||||
|
|
||||||
|
return return_value
|
Loading…
Reference in New Issue
Block a user