1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/usr/bin/env python3
# ========================================================================== #
# #
# KVMD - The main Pi-KVM daemon. #
# #
# Copyright (C) 2018 Maxim Devaev <[email protected]> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
# #
# ========================================================================== #
import os
import textwrap
import setuptools.command.easy_install
from setuptools import setup
# =====
class _ScriptWriter(setuptools.command.easy_install.ScriptWriter):
template = textwrap.dedent("""
# EASY-INSTALL-ENTRY-SCRIPT: {spec},{group},{name}
__requires__ = "{spec}"
from {module} import main
if __name__ == "__main__":
main()
""").strip()
@classmethod
def get_args(cls, dist, header=None): # type: ignore
if header is None:
header = cls.get_header()
spec = str(dist.as_requirement())
for group_type in ["console", "gui"]:
group = group_type + "_scripts"
for (name, ep) in dist.get_entry_map(group).items():
cls._ensure_safe_name(name)
script_text = cls.template.format(
spec=spec,
group=group,
name=name,
module=ep.module_name,
)
yield from cls._get_script_args(group_type, name, header, script_text)
# =====
def main() -> None:
setuptools.command.easy_install.ScriptWriter = _ScriptWriter
setuptools.command.easy_install.get_script_args = _ScriptWriter.get_script_args
setuptools.command.easy_install.get_script_header = _ScriptWriter.get_script_header
setup(
name="kvmd",
version="1.20",
url="https://github.com/pikvm/kvmd",
license="GPLv3",
author="Maxim Devaev",
author_email="[email protected]",
description="The main Pi-KVM daemon",
platforms="any",
packages=[
"kvmd",
"kvmd.validators",
"kvmd.yamlconf",
"kvmd.plugins",
"kvmd.plugins.auth",
"kvmd.plugins.hid",
"kvmd.plugins.hid.otg",
"kvmd.plugins.atx",
"kvmd.plugins.msd",
"kvmd.apps",
"kvmd.apps.kvmd",
"kvmd.apps.otg",
"kvmd.apps.otg.hid",
"kvmd.apps.otgmsd",
"kvmd.apps.htpasswd",
"kvmd.apps.cleanup",
"kvmd.apps.ipmi",
],
scripts=[
os.path.join("scripts", name)
for name in os.listdir("scripts")
if not name.startswith(".")
],
entry_points={
"console_scripts": [
"kvmd = kvmd.apps.kvmd:main",
"kvmd-otg = kvmd.apps.otg:main",
"kvmd-otg-msd = kvmd.apps.otgmsd:main",
"kvmd-htpasswd = kvmd.apps.htpasswd:main",
"kvmd-cleanup = kvmd.apps.cleanup:main",
"kvmd-ipmi = kvmd.apps.ipmi:main",
],
},
classifiers=[
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3.7",
"Topic :: System :: Systems Administration",
"Operating System :: POSIX :: Linux",
"Intended Audience :: System Administrators",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: Telecommunications Industry",
],
)
if __name__ == "__main__":
main()
|