aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Brockus <55331536+michaelbadcrumble@users.noreply.github.com>2020-02-19 09:39:49 -0800
committerGitHub <noreply@github.com>2020-02-19 09:39:49 -0800
commit3225070f8bf50449c51b310cd5ed12669f248235 (patch)
treee86b42270b3d9d09f5c0aabf94786d2906ce966c
parent47759550e5f6a5e617ff686f2b5f275ade97c4b2 (diff)
downloadmeson-3225070f8bf50449c51b310cd5ed12669f248235.zip
meson-3225070f8bf50449c51b310cd5ed12669f248235.tar.gz
meson-3225070f8bf50449c51b310cd5ed12669f248235.tar.bz2
Update minit.py
-rw-r--r--mesonbuild/minit.py110
1 files changed, 58 insertions, 52 deletions
diff --git a/mesonbuild/minit.py b/mesonbuild/minit.py
index 5f28f58..b4b2ac3 100644
--- a/mesonbuild/minit.py
+++ b/mesonbuild/minit.py
@@ -15,118 +15,125 @@
"""Code that creates simple startup projects."""
from pathlib import Path
-import re, shutil, subprocess
+import subprocess
+import shutil
+import re
from glob import glob
from mesonbuild import mesonlib
from mesonbuild.environment import detect_ninja
-from mesonbuild.templates.ctemplates import (create_exe_c_sample, create_lib_c_sample)
-from mesonbuild.templates.cpptemplates import (create_exe_cpp_sample, create_lib_cpp_sample)
-from mesonbuild.templates.cstemplates import (create_exe_cs_sample, create_lib_cs_sample)
-from mesonbuild.templates.cudatemplates import (create_exe_cuda_sample, create_lib_cuda_sample)
-from mesonbuild.templates.objctemplates import (create_exe_objc_sample, create_lib_objc_sample)
+from mesonbuild.templates.fortrantemplates import (create_exe_fortran_sample, create_lib_fortran_sample)
from mesonbuild.templates.objcpptemplates import (create_exe_objcpp_sample, create_lib_objcpp_sample)
from mesonbuild.templates.dlangtemplates import (create_exe_d_sample, create_lib_d_sample)
-from mesonbuild.templates.javatemplates import (create_exe_java_sample, create_lib_java_sample)
-from mesonbuild.templates.fortrantemplates import (create_exe_fortran_sample, create_lib_fortran_sample)
from mesonbuild.templates.rusttemplates import (create_exe_rust_sample, create_lib_rust_sample)
+from mesonbuild.templates.javatemplates import (create_exe_java_sample, create_lib_java_sample)
+from mesonbuild.templates.cudatemplates import (create_exe_cuda_sample, create_lib_cuda_sample)
+from mesonbuild.templates.objctemplates import (create_exe_objc_sample, create_lib_objc_sample)
+from mesonbuild.templates.cpptemplates import (create_exe_cpp_sample, create_lib_cpp_sample)
+from mesonbuild.templates.cstemplates import (create_exe_cs_sample, create_lib_cs_sample)
+from mesonbuild.templates.ctemplates import (create_exe_c_sample, create_lib_c_sample)
'''
-there is currently only one meson template at this time.
+we currently have one meson template at this time.
'''
from mesonbuild.templates.mesontemplates import create_meson_build
FORTRAN_SUFFIXES = ['.f', '.for', '.F', '.f90', '.F90']
+LANG_SUFFIXES = ['.c', '.cc', '.cpp', '.cs', '.cu', '.d', '.m', '.mm', '.rs', '.java'] + FORTRAN_SUFFIXES
+LANG_SUPPORTED = ('c', 'cpp', 'cs', 'cuda', 'd', 'fortran', 'java', 'rust', 'objc', 'objcpp')
+TYPE_EXE = 'executable'
+TYPE_LIB = 'library'
-UNREACHABLE_CODE = 'Unreachable code'
+UNREACHABLE_CODE_ERROR = 'Unreachable code'
-info_message = '''Sample project created. To build it run the
+INFO_MESSAGE = '''Sample project created. To build it run the
following commands:
meson builddir
ninja -C builddir
'''
-def create_sample(options):
+
+def create_sample(options) -> None:
'''
Based on what arguments are passed we check for a match in language
then check for project type and create new Meson samples project.
'''
if options.language == 'c':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_c_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_c_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'cpp':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_cpp_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_cpp_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'cs':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_cs_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_cs_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'cuda':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_cuda_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_cuda_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'd':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_d_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_d_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'fortran':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_fortran_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_fortran_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'rust':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_rust_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_rust_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'objc':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_objc_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_objc_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'objcpp':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_objcpp_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_objcpp_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
elif options.language == 'java':
- if options.type == 'executable':
+ if options.type == TYPE_EXE:
create_exe_java_sample(options.name, options.version)
- elif options.type == 'library':
+ elif options.type == TYPE_LIB:
create_lib_java_sample(options.name, options.version)
else:
- raise RuntimeError(UNREACHABLE_CODE)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
else:
- raise RuntimeError(UNREACHABLE_CODE)
- print(info_message)
+ raise RuntimeError(UNREACHABLE_CODE_ERROR)
+ print(INFO_MESSAGE)
-def autodetect_options(options, sample: bool = False):
+def autodetect_options(options, sample: bool = False) -> None:
'''
Here we autodetect options for args not passed in so don't have to
think about it.
@@ -148,7 +155,7 @@ def autodetect_options(options, sample: bool = False):
if not options.srcfiles:
srcfiles = []
for f in (f for f in Path().iterdir() if f.is_file()):
- if f.suffix in (['.c', '.cc', '.cpp', '.cs', '.cu', '.d', '.m', '.mm', '.rs', '.java'] + FORTRAN_SUFFIXES):
+ if f.suffix in (LANG_SUFFIXES):
srcfiles.append(f)
if not srcfiles:
raise SystemExit('No recognizable source files found.\n'
@@ -201,13 +208,12 @@ def add_arguments(parser):
parser.add_argument("-n", "--name", help="project name. default: name of current directory")
parser.add_argument("-e", "--executable", help="executable name. default: project name")
parser.add_argument("-d", "--deps", help="dependencies, comma-separated")
- parser.add_argument("-l", "--language", choices=['c', 'cpp', 'cs', 'cuda', 'd', 'fortran', 'java', 'rust', 'objc', 'objcpp'],
- help="project language. default: autodetected based on source files")
- parser.add_argument("-b", "--build", help="build after generation", action='store_true')
- parser.add_argument("--builddir", help="directory for build", default='build')
+ parser.add_argument("-l", "--language", choices=LANG_SUPPORTED, help="project language. default: autodetected based on source files")
+ parser.add_argument("-b", "--build", action='store_true', help="build after generation")
+ parser.add_argument("--builddir", default='build', help="directory for build")
parser.add_argument("-f", "--force", action="store_true", help="force overwrite of existing files and directories.")
- parser.add_argument('--type', default='executable', choices=['executable', 'library'])
- parser.add_argument('--version', default='0.1')
+ parser.add_argument('--type', default='executable', choices=['executable', 'library'], help="project type. default: executable based project")
+ parser.add_argument('--version', default='0.1', help="project version. default: 0.1")
def run(options) -> int:
'''