Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
Start a new project in the current directory
"""
if exists('src'):
raise FbsError('The src/ directory already exists. Aborting.')
app = prompt_for_value('App name', default='MyApp')
user = getuser().title()
author = prompt_for_value('Author', default=user)
has_pyqt = _has_module('PyQt5')
has_pyside = _has_module('PySide2')
if has_pyqt and not has_pyside:
python_bindings = 'PyQt5'
elif not has_pyqt and has_pyside:
python_bindings = 'PySide2'
else:
python_bindings = prompt_for_value(
'Qt bindings', choices=('PyQt5', 'PySide2'), default='PyQt5'
)
eg_bundle_id = 'com.%s.%s' % (
author.lower().split()[0], ''.join(app.lower().split())
)
mac_bundle_identifier = prompt_for_value(
'Mac bundle identifier (eg. %s, optional)' % eg_bundle_id,
optional=True
)
mkdir('src')
template_dir = join(dirname(__file__), 'project_template')
template_path = lambda relpath: join(template_dir, *relpath.split('/'))
copy_with_filtering(
template_dir, '.', {
'app_name': app,
'author': author,
user = getuser().title()
author = prompt_for_value('Author', default=user)
has_pyqt = _has_module('PyQt5')
has_pyside = _has_module('PySide2')
if has_pyqt and not has_pyside:
python_bindings = 'PyQt5'
elif not has_pyqt and has_pyside:
python_bindings = 'PySide2'
else:
python_bindings = prompt_for_value(
'Qt bindings', choices=('PyQt5', 'PySide2'), default='PyQt5'
)
eg_bundle_id = 'com.%s.%s' % (
author.lower().split()[0], ''.join(app.lower().split())
)
mac_bundle_identifier = prompt_for_value(
'Mac bundle identifier (eg. %s, optional)' % eg_bundle_id,
optional=True
)
mkdir('src')
template_dir = join(dirname(__file__), 'project_template')
template_path = lambda relpath: join(template_dir, *relpath.split('/'))
copy_with_filtering(
template_dir, '.', {
'app_name': app,
'author': author,
'mac_bundle_identifier': mac_bundle_identifier,
'python_bindings': python_bindings
},
files_to_filter=[
template_path('src/build/settings/base.json'),
template_path('src/build/settings/mac.json'),
def startproject():
"""
Start a new project in the current directory
"""
if exists('src'):
raise FbsError('The src/ directory already exists. Aborting.')
app = prompt_for_value('App name', default='MyApp')
user = getuser().title()
author = prompt_for_value('Author', default=user)
has_pyqt = _has_module('PyQt5')
has_pyside = _has_module('PySide2')
if has_pyqt and not has_pyside:
python_bindings = 'PyQt5'
elif not has_pyqt and has_pyside:
python_bindings = 'PySide2'
else:
python_bindings = prompt_for_value(
'Qt bindings', choices=('PyQt5', 'PySide2'), default='PyQt5'
)
eg_bundle_id = 'com.%s.%s' % (
author.lower().split()[0], ''.join(app.lower().split())
)
mac_bundle_identifier = prompt_for_value(
def startproject():
"""
Start a new project in the current directory
"""
if exists('src'):
raise FbsError('The src/ directory already exists. Aborting.')
app = prompt_for_value('App name', default='MyApp')
user = getuser().title()
author = prompt_for_value('Author', default=user)
has_pyqt = _has_module('PyQt5')
has_pyside = _has_module('PySide2')
if has_pyqt and not has_pyside:
python_bindings = 'PyQt5'
elif not has_pyqt and has_pyside:
python_bindings = 'PySide2'
else:
python_bindings = prompt_for_value(
'Qt bindings', choices=('PyQt5', 'PySide2'), default='PyQt5'
)
eg_bundle_id = 'com.%s.%s' % (
author.lower().split()[0], ''.join(app.lower().split())
)
mac_bundle_identifier = prompt_for_value(
'Mac bundle identifier (eg. %s, optional)' % eg_bundle_id,
optional=True
def gengpgkey():
"""
Generate a GPG key for Linux code signing
"""
require_existing_project()
if exists(_DEST_DIR):
raise FbsError('The %s folder already exists. Aborting.' % _DEST_DIR)
try:
email = prompt_for_value('Email address')
name = prompt_for_value('Real name', default=SETTINGS['author'])
passphrase = prompt_for_value('Key password', password=True)
except KeyboardInterrupt:
print('')
return
print('')
_LOG.info('Generating the GPG key. This can take a little...')
_init_docker()
args = ['run', '-t']
if exists('/dev/urandom'):
# Give the key generator more entropy on Posix:
args.extend(['-v', '/dev/urandom:/dev/random'])
args.extend([_DOCKER_IMAGE, '/root/genkey.sh', name, email, passphrase])
result = _run_docker(args, check=True, stdout=PIPE, universal_newlines=True)
key = _snip(
result.stdout,
"revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/",
def gengpgkey():
"""
Generate a GPG key for Linux code signing
"""
require_existing_project()
if exists(_DEST_DIR):
raise FbsError('The %s folder already exists. Aborting.' % _DEST_DIR)
try:
email = prompt_for_value('Email address')
name = prompt_for_value('Real name', default=SETTINGS['author'])
passphrase = prompt_for_value('Key password', password=True)
except KeyboardInterrupt:
print('')
return
print('')
_LOG.info('Generating the GPG key. This can take a little...')
_init_docker()
args = ['run', '-t']
if exists('/dev/urandom'):
# Give the key generator more entropy on Posix:
args.extend(['-v', '/dev/urandom:/dev/random'])
args.extend([_DOCKER_IMAGE, '/root/genkey.sh', name, email, passphrase])
result = _run_docker(args, check=True, stdout=PIPE, universal_newlines=True)
key = _snip(
result.stdout,
"revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/",
".rev'",
def gengpgkey():
"""
Generate a GPG key for Linux code signing
"""
require_existing_project()
if exists(_DEST_DIR):
raise FbsError('The %s folder already exists. Aborting.' % _DEST_DIR)
try:
email = prompt_for_value('Email address')
name = prompt_for_value('Real name', default=SETTINGS['author'])
passphrase = prompt_for_value('Key password', password=True)
except KeyboardInterrupt:
print('')
return
print('')
_LOG.info('Generating the GPG key. This can take a little...')
_init_docker()
args = ['run', '-t']
if exists('/dev/urandom'):
# Give the key generator more entropy on Posix:
args.extend(['-v', '/dev/urandom:/dev/random'])
args.extend([_DOCKER_IMAGE, '/root/genkey.sh', name, email, passphrase])
result = _run_docker(args, check=True, stdout=PIPE, universal_newlines=True)
key = _snip(
result.stdout,
def release():
"""
Bump version and run clean,freeze,...,upload
"""
require_existing_project()
version = SETTINGS['version']
next_version = _get_next_version(version)
release_version = prompt_for_value('Release version', default=next_version)
activate_profile('release')
SETTINGS['version'] = release_version
log_level = _LOG.level
if log_level == logging.NOTSET:
_LOG.setLevel(logging.WARNING)
try:
clean()
freeze()
if is_windows() and _has_windows_codesigning_certificate():
sign()
installer()
if (is_windows() and _has_windows_codesigning_certificate()) or \
is_arch_linux() or is_fedora():
sign_installer()
repo()
finally: