Create license file when initializing project
This commit is contained in:
parent
6d92979dff
commit
ee04cc59a2
6 changed files with 49 additions and 397 deletions
|
@ -14,8 +14,6 @@
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
import pkg_resources
|
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from packaging.version import Version, InvalidVersion
|
from packaging.version import Version, InvalidVersion
|
||||||
|
@ -23,6 +21,8 @@ from prompt_toolkit.validation import Validator, ValidationError
|
||||||
from prompt_toolkit.document import Document
|
from prompt_toolkit.document import Document
|
||||||
import click
|
import click
|
||||||
|
|
||||||
|
from ..util import spdx as spdxlib
|
||||||
|
|
||||||
|
|
||||||
class Required(Validator):
|
class Required(Validator):
|
||||||
proxy: Validator
|
proxy: Validator
|
||||||
|
@ -75,19 +75,8 @@ class VersionValidator(ClickValidator):
|
||||||
click_type = version
|
click_type = version
|
||||||
|
|
||||||
|
|
||||||
spdx_list = None
|
|
||||||
|
|
||||||
|
|
||||||
def load_spdx():
|
|
||||||
global spdx_list
|
|
||||||
spdx_data = pkg_resources.resource_stream("maubot.cli", "res/spdx-simple.json")
|
|
||||||
spdx_list = json.load(spdx_data)
|
|
||||||
|
|
||||||
|
|
||||||
def spdx(val: str) -> str:
|
def spdx(val: str) -> str:
|
||||||
if not spdx_list:
|
if spdxlib.valid(val):
|
||||||
load_spdx()
|
|
||||||
if val not in spdx_list:
|
|
||||||
raise click.BadParameter(f"{val} is not a valid SPDX license identifier")
|
raise click.BadParameter(f"{val} is not a valid SPDX license identifier")
|
||||||
return val
|
return val
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ from jinja2 import Template
|
||||||
|
|
||||||
from .. import cliq
|
from .. import cliq
|
||||||
from ..cliq import SPDXValidator, VersionValidator
|
from ..cliq import SPDXValidator, VersionValidator
|
||||||
|
from ..util import spdx
|
||||||
|
|
||||||
loaded: bool = False
|
loaded: bool = False
|
||||||
meta_template: Template
|
meta_template: Template
|
||||||
|
@ -56,6 +57,8 @@ def init(name: str, id: str, version: Version, license: str, config: bool) -> No
|
||||||
main_class=main_class)
|
main_class=main_class)
|
||||||
with open("maubot.yaml", "w") as file:
|
with open("maubot.yaml", "w") as file:
|
||||||
file.write(meta)
|
file.write(meta)
|
||||||
|
with open("LICENSE", "w") as file:
|
||||||
|
file.write(spdx.get(license)["text"])
|
||||||
if not os.path.isdir(name):
|
if not os.path.isdir(name):
|
||||||
os.mkdir(name)
|
os.mkdir(name)
|
||||||
mod = mod_template.render(config=config, name=main_class)
|
mod = mod_template.render(config=config, name=main_class)
|
||||||
|
|
|
@ -1,383 +0,0 @@
|
||||||
[
|
|
||||||
"0BSD",
|
|
||||||
"AAL",
|
|
||||||
"Abstyles",
|
|
||||||
"Adobe-2006",
|
|
||||||
"Adobe-Glyph",
|
|
||||||
"ADSL",
|
|
||||||
"AFL-1.1",
|
|
||||||
"AFL-1.2",
|
|
||||||
"AFL-2.0",
|
|
||||||
"AFL-2.1",
|
|
||||||
"AFL-3.0",
|
|
||||||
"Afmparse",
|
|
||||||
"AGPL-1.0-only",
|
|
||||||
"AGPL-1.0-or-later",
|
|
||||||
"AGPL-3.0-only",
|
|
||||||
"AGPL-3.0-or-later",
|
|
||||||
"Aladdin",
|
|
||||||
"AMDPLPA",
|
|
||||||
"AML",
|
|
||||||
"AMPAS",
|
|
||||||
"ANTLR-PD",
|
|
||||||
"Apache-1.0",
|
|
||||||
"Apache-1.1",
|
|
||||||
"Apache-2.0",
|
|
||||||
"APAFML",
|
|
||||||
"APL-1.0",
|
|
||||||
"APSL-1.0",
|
|
||||||
"APSL-1.1",
|
|
||||||
"APSL-1.2",
|
|
||||||
"APSL-2.0",
|
|
||||||
"Artistic-1.0-cl8",
|
|
||||||
"Artistic-1.0-Perl",
|
|
||||||
"Artistic-1.0",
|
|
||||||
"Artistic-2.0",
|
|
||||||
"Bahyph",
|
|
||||||
"Barr",
|
|
||||||
"Beerware",
|
|
||||||
"BitTorrent-1.0",
|
|
||||||
"BitTorrent-1.1",
|
|
||||||
"Borceux",
|
|
||||||
"BSD-1-Clause",
|
|
||||||
"BSD-2-Clause-FreeBSD",
|
|
||||||
"BSD-2-Clause-NetBSD",
|
|
||||||
"BSD-2-Clause-Patent",
|
|
||||||
"BSD-2-Clause",
|
|
||||||
"BSD-3-Clause-Attribution",
|
|
||||||
"BSD-3-Clause-Clear",
|
|
||||||
"BSD-3-Clause-LBNL",
|
|
||||||
"BSD-3-Clause-No-Nuclear-License-2014",
|
|
||||||
"BSD-3-Clause-No-Nuclear-License",
|
|
||||||
"BSD-3-Clause-No-Nuclear-Warranty",
|
|
||||||
"BSD-3-Clause",
|
|
||||||
"BSD-4-Clause-UC",
|
|
||||||
"BSD-4-Clause",
|
|
||||||
"BSD-Protection",
|
|
||||||
"BSD-Source-Code",
|
|
||||||
"BSL-1.0",
|
|
||||||
"bzip2-1.0.5",
|
|
||||||
"bzip2-1.0.6",
|
|
||||||
"Caldera",
|
|
||||||
"CATOSL-1.1",
|
|
||||||
"CC-BY-1.0",
|
|
||||||
"CC-BY-2.0",
|
|
||||||
"CC-BY-2.5",
|
|
||||||
"CC-BY-3.0",
|
|
||||||
"CC-BY-4.0",
|
|
||||||
"CC-BY-NC-1.0",
|
|
||||||
"CC-BY-NC-2.0",
|
|
||||||
"CC-BY-NC-2.5",
|
|
||||||
"CC-BY-NC-3.0",
|
|
||||||
"CC-BY-NC-4.0",
|
|
||||||
"CC-BY-NC-ND-1.0",
|
|
||||||
"CC-BY-NC-ND-2.0",
|
|
||||||
"CC-BY-NC-ND-2.5",
|
|
||||||
"CC-BY-NC-ND-3.0",
|
|
||||||
"CC-BY-NC-ND-4.0",
|
|
||||||
"CC-BY-NC-SA-1.0",
|
|
||||||
"CC-BY-NC-SA-2.0",
|
|
||||||
"CC-BY-NC-SA-2.5",
|
|
||||||
"CC-BY-NC-SA-3.0",
|
|
||||||
"CC-BY-NC-SA-4.0",
|
|
||||||
"CC-BY-ND-1.0",
|
|
||||||
"CC-BY-ND-2.0",
|
|
||||||
"CC-BY-ND-2.5",
|
|
||||||
"CC-BY-ND-3.0",
|
|
||||||
"CC-BY-ND-4.0",
|
|
||||||
"CC-BY-SA-1.0",
|
|
||||||
"CC-BY-SA-2.0",
|
|
||||||
"CC-BY-SA-2.5",
|
|
||||||
"CC-BY-SA-3.0",
|
|
||||||
"CC-BY-SA-4.0",
|
|
||||||
"CC0-1.0",
|
|
||||||
"CDDL-1.0",
|
|
||||||
"CDDL-1.1",
|
|
||||||
"CDLA-Permissive-1.0",
|
|
||||||
"CDLA-Sharing-1.0",
|
|
||||||
"CECILL-1.0",
|
|
||||||
"CECILL-1.1",
|
|
||||||
"CECILL-2.0",
|
|
||||||
"CECILL-2.1",
|
|
||||||
"CECILL-B",
|
|
||||||
"CECILL-C",
|
|
||||||
"ClArtistic",
|
|
||||||
"CNRI-Jython",
|
|
||||||
"CNRI-Python-GPL-Compatible",
|
|
||||||
"CNRI-Python",
|
|
||||||
"Condor-1.1",
|
|
||||||
"copyleft-next-0.3.1",
|
|
||||||
"CPAL-1.0",
|
|
||||||
"CPL-1.0",
|
|
||||||
"CPOL-1.02",
|
|
||||||
"Crossword",
|
|
||||||
"CrystalStacker",
|
|
||||||
"CUA-OPL-1.0",
|
|
||||||
"Cube",
|
|
||||||
"curl",
|
|
||||||
"D-FSL-1.0",
|
|
||||||
"diffmark",
|
|
||||||
"DOC",
|
|
||||||
"Dotseqn",
|
|
||||||
"DSDP",
|
|
||||||
"dvipdfm",
|
|
||||||
"ECL-1.0",
|
|
||||||
"ECL-2.0",
|
|
||||||
"EFL-1.0",
|
|
||||||
"EFL-2.0",
|
|
||||||
"eGenix",
|
|
||||||
"Entessa",
|
|
||||||
"EPL-1.0",
|
|
||||||
"EPL-2.0",
|
|
||||||
"ErlPL-1.1",
|
|
||||||
"EUDatagrid",
|
|
||||||
"EUPL-1.0",
|
|
||||||
"EUPL-1.1",
|
|
||||||
"EUPL-1.2",
|
|
||||||
"Eurosym",
|
|
||||||
"Fair",
|
|
||||||
"Frameworx-1.0",
|
|
||||||
"FreeImage",
|
|
||||||
"FSFAP",
|
|
||||||
"FSFUL",
|
|
||||||
"FSFULLR",
|
|
||||||
"FTL",
|
|
||||||
"GFDL-1.1-only",
|
|
||||||
"GFDL-1.1-or-later",
|
|
||||||
"GFDL-1.2-only",
|
|
||||||
"GFDL-1.2-or-later",
|
|
||||||
"GFDL-1.3-only",
|
|
||||||
"GFDL-1.3-or-later",
|
|
||||||
"Giftware",
|
|
||||||
"GL2PS",
|
|
||||||
"Glide",
|
|
||||||
"Glulxe",
|
|
||||||
"gnuplot",
|
|
||||||
"GPL-1.0-only",
|
|
||||||
"GPL-1.0-or-later",
|
|
||||||
"GPL-2.0-only",
|
|
||||||
"GPL-2.0-or-later",
|
|
||||||
"GPL-3.0-only",
|
|
||||||
"GPL-3.0-or-later",
|
|
||||||
"gSOAP-1.3b",
|
|
||||||
"HaskellReport",
|
|
||||||
"HPND",
|
|
||||||
"IBM-pibs",
|
|
||||||
"ICU",
|
|
||||||
"IJG",
|
|
||||||
"ImageMagick",
|
|
||||||
"iMatix",
|
|
||||||
"Imlib2",
|
|
||||||
"Info-ZIP",
|
|
||||||
"Intel-ACPI",
|
|
||||||
"Intel",
|
|
||||||
"Interbase-1.0",
|
|
||||||
"IPA",
|
|
||||||
"IPL-1.0",
|
|
||||||
"ISC",
|
|
||||||
"JasPer-2.0",
|
|
||||||
"JSON",
|
|
||||||
"LAL-1.2",
|
|
||||||
"LAL-1.3",
|
|
||||||
"Latex2e",
|
|
||||||
"Leptonica",
|
|
||||||
"LGPL-2.0-only",
|
|
||||||
"LGPL-2.0-or-later",
|
|
||||||
"LGPL-2.1-only",
|
|
||||||
"LGPL-2.1-or-later",
|
|
||||||
"LGPL-3.0-only",
|
|
||||||
"LGPL-3.0-or-later",
|
|
||||||
"LGPLLR",
|
|
||||||
"Libpng",
|
|
||||||
"libtiff",
|
|
||||||
"LiLiQ-P-1.1",
|
|
||||||
"LiLiQ-R-1.1",
|
|
||||||
"LiLiQ-Rplus-1.1",
|
|
||||||
"Linux-OpenIB",
|
|
||||||
"LPL-1.0",
|
|
||||||
"LPL-1.02",
|
|
||||||
"LPPL-1.0",
|
|
||||||
"LPPL-1.1",
|
|
||||||
"LPPL-1.2",
|
|
||||||
"LPPL-1.3a",
|
|
||||||
"LPPL-1.3c",
|
|
||||||
"MakeIndex",
|
|
||||||
"MirOS",
|
|
||||||
"MIT-0",
|
|
||||||
"MIT-advertising",
|
|
||||||
"MIT-CMU",
|
|
||||||
"MIT-enna",
|
|
||||||
"MIT-feh",
|
|
||||||
"MIT",
|
|
||||||
"MITNFA",
|
|
||||||
"Motosoto",
|
|
||||||
"mpich2",
|
|
||||||
"MPL-1.0",
|
|
||||||
"MPL-1.1",
|
|
||||||
"MPL-2.0-no-copyleft-exception",
|
|
||||||
"MPL-2.0",
|
|
||||||
"MS-PL",
|
|
||||||
"MS-RL",
|
|
||||||
"MTLL",
|
|
||||||
"Multics",
|
|
||||||
"Mup",
|
|
||||||
"NASA-1.3",
|
|
||||||
"Naumen",
|
|
||||||
"NBPL-1.0",
|
|
||||||
"NCSA",
|
|
||||||
"Net-SNMP",
|
|
||||||
"NetCDF",
|
|
||||||
"Newsletr",
|
|
||||||
"NGPL",
|
|
||||||
"NLOD-1.0",
|
|
||||||
"NLPL",
|
|
||||||
"Nokia",
|
|
||||||
"NOSL",
|
|
||||||
"Noweb",
|
|
||||||
"NPL-1.0",
|
|
||||||
"NPL-1.1",
|
|
||||||
"NPOSL-3.0",
|
|
||||||
"NRL",
|
|
||||||
"NTP",
|
|
||||||
"OCCT-PL",
|
|
||||||
"OCLC-2.0",
|
|
||||||
"ODbL-1.0",
|
|
||||||
"ODC-By-1.0",
|
|
||||||
"OFL-1.0",
|
|
||||||
"OFL-1.1",
|
|
||||||
"OGL-UK-1.0",
|
|
||||||
"OGL-UK-2.0",
|
|
||||||
"OGL-UK-3.0",
|
|
||||||
"OGTSL",
|
|
||||||
"OLDAP-1.1",
|
|
||||||
"OLDAP-1.2",
|
|
||||||
"OLDAP-1.3",
|
|
||||||
"OLDAP-1.4",
|
|
||||||
"OLDAP-2.0.1",
|
|
||||||
"OLDAP-2.0",
|
|
||||||
"OLDAP-2.1",
|
|
||||||
"OLDAP-2.2.1",
|
|
||||||
"OLDAP-2.2.2",
|
|
||||||
"OLDAP-2.2",
|
|
||||||
"OLDAP-2.3",
|
|
||||||
"OLDAP-2.4",
|
|
||||||
"OLDAP-2.5",
|
|
||||||
"OLDAP-2.6",
|
|
||||||
"OLDAP-2.7",
|
|
||||||
"OLDAP-2.8",
|
|
||||||
"OML",
|
|
||||||
"OpenSSL",
|
|
||||||
"OPL-1.0",
|
|
||||||
"OSET-PL-2.1",
|
|
||||||
"OSL-1.0",
|
|
||||||
"OSL-1.1",
|
|
||||||
"OSL-2.0",
|
|
||||||
"OSL-2.1",
|
|
||||||
"OSL-3.0",
|
|
||||||
"PDDL-1.0",
|
|
||||||
"PHP-3.0",
|
|
||||||
"PHP-3.01",
|
|
||||||
"Plexus",
|
|
||||||
"PostgreSQL",
|
|
||||||
"psfrag",
|
|
||||||
"psutils",
|
|
||||||
"Python-2.0",
|
|
||||||
"Qhull",
|
|
||||||
"QPL-1.0",
|
|
||||||
"Rdisc",
|
|
||||||
"RHeCos-1.1",
|
|
||||||
"RPL-1.1",
|
|
||||||
"RPL-1.5",
|
|
||||||
"RPSL-1.0",
|
|
||||||
"RSA-MD",
|
|
||||||
"RSCPL",
|
|
||||||
"Ruby",
|
|
||||||
"SAX-PD",
|
|
||||||
"Saxpath",
|
|
||||||
"SCEA",
|
|
||||||
"Sendmail-8.23",
|
|
||||||
"Sendmail",
|
|
||||||
"SGI-B-1.0",
|
|
||||||
"SGI-B-1.1",
|
|
||||||
"SGI-B-2.0",
|
|
||||||
"SimPL-2.0",
|
|
||||||
"SISSL-1.2",
|
|
||||||
"SISSL",
|
|
||||||
"Sleepycat",
|
|
||||||
"SMLNJ",
|
|
||||||
"SMPPL",
|
|
||||||
"SNIA",
|
|
||||||
"Spencer-86",
|
|
||||||
"Spencer-94",
|
|
||||||
"Spencer-99",
|
|
||||||
"SPL-1.0",
|
|
||||||
"SugarCRM-1.1.3",
|
|
||||||
"SWL",
|
|
||||||
"TCL",
|
|
||||||
"TCP-wrappers",
|
|
||||||
"TMate",
|
|
||||||
"TORQUE-1.1",
|
|
||||||
"TOSL",
|
|
||||||
"TU-Berlin-1.0",
|
|
||||||
"TU-Berlin-2.0",
|
|
||||||
"Unicode-DFS-2015",
|
|
||||||
"Unicode-DFS-2016",
|
|
||||||
"Unicode-TOU",
|
|
||||||
"Unlicense",
|
|
||||||
"UPL-1.0",
|
|
||||||
"Vim",
|
|
||||||
"VOSTROM",
|
|
||||||
"VSL-1.0",
|
|
||||||
"W3C-19980720",
|
|
||||||
"W3C-20150513",
|
|
||||||
"W3C",
|
|
||||||
"Watcom-1.0",
|
|
||||||
"Wsuipa",
|
|
||||||
"WTFPL",
|
|
||||||
"X11",
|
|
||||||
"Xerox",
|
|
||||||
"XFree86-1.1",
|
|
||||||
"xinetd",
|
|
||||||
"Xnet",
|
|
||||||
"xpp",
|
|
||||||
"XSkat",
|
|
||||||
"YPL-1.0",
|
|
||||||
"YPL-1.1",
|
|
||||||
"Zed",
|
|
||||||
"Zend-2.0",
|
|
||||||
"Zimbra-1.3",
|
|
||||||
"Zimbra-1.4",
|
|
||||||
"zlib-acknowledgement",
|
|
||||||
"Zlib",
|
|
||||||
"ZPL-1.1",
|
|
||||||
"ZPL-2.0",
|
|
||||||
"ZPL-2.1",
|
|
||||||
"AGPL-1.0",
|
|
||||||
"AGPL-3.0",
|
|
||||||
"eCos-2.0",
|
|
||||||
"GFDL-1.1",
|
|
||||||
"GFDL-1.2",
|
|
||||||
"GFDL-1.3",
|
|
||||||
"GPL-1.0+",
|
|
||||||
"GPL-1.0",
|
|
||||||
"GPL-2.0+",
|
|
||||||
"GPL-2.0-with-autoconf-exception",
|
|
||||||
"GPL-2.0-with-bison-exception",
|
|
||||||
"GPL-2.0-with-classpath-exception",
|
|
||||||
"GPL-2.0-with-font-exception",
|
|
||||||
"GPL-2.0-with-GCC-exception",
|
|
||||||
"GPL-2.0",
|
|
||||||
"GPL-3.0+",
|
|
||||||
"GPL-3.0-with-autoconf-exception",
|
|
||||||
"GPL-3.0-with-GCC-exception",
|
|
||||||
"GPL-3.0",
|
|
||||||
"LGPL-2.0+",
|
|
||||||
"LGPL-2.0",
|
|
||||||
"LGPL-2.1+",
|
|
||||||
"LGPL-2.1",
|
|
||||||
"LGPL-3.0+",
|
|
||||||
"LGPL-3.0",
|
|
||||||
"Nunit",
|
|
||||||
"StandardML-NJ",
|
|
||||||
"wxWindows"
|
|
||||||
]
|
|
BIN
maubot/cli/res/spdx.json.zip
Normal file
BIN
maubot/cli/res/spdx.json.zip
Normal file
Binary file not shown.
0
maubot/cli/util/__init__.py
Normal file
0
maubot/cli/util/__init__.py
Normal file
43
maubot/cli/util/spdx.py
Normal file
43
maubot/cli/util/spdx.py
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# maubot - A plugin-based Matrix bot system.
|
||||||
|
# Copyright (C) 2018 Tulir Asokan
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
from typing import Dict
|
||||||
|
import zipfile
|
||||||
|
import pkg_resources
|
||||||
|
import json
|
||||||
|
|
||||||
|
spdx_list = None
|
||||||
|
|
||||||
|
|
||||||
|
def load() -> None:
|
||||||
|
global spdx_list
|
||||||
|
if spdx_list is not None:
|
||||||
|
return
|
||||||
|
with pkg_resources.resource_stream("maubot.cli", "res/spdx.json.zip") as disk_file:
|
||||||
|
with zipfile.ZipFile(disk_file) as zip_file:
|
||||||
|
with zip_file.open("spdx.json") as file:
|
||||||
|
spdx_list = json.load(file)
|
||||||
|
|
||||||
|
|
||||||
|
def get(id: str) -> Dict[str, str]:
|
||||||
|
if not spdx_list:
|
||||||
|
load()
|
||||||
|
return spdx_list[id.lower()]
|
||||||
|
|
||||||
|
|
||||||
|
def valid(id: str) -> bool:
|
||||||
|
if not spdx_list:
|
||||||
|
load()
|
||||||
|
return id.lower() in spdx_list
|
Loading…
Reference in a new issue