import os
from whichcraft import which
import egaia_config
import utils
usr_cfg = egaia_config.usr_cfg
config = egaia_config.loadConfig()
binaries = ['libreoffice', 'ffmpeg', 'identify', 'ffprobe', 'inkscape',
'mogrify', 'convert', 'montage', 'wget', 'wkhtmltopdf',
'wkhtmltoimage']
## create a default config file egaia_config.dumpConfig()
## set binary paths setBinaries()
## prompt the user for input for missing fields
[docs]def setBinaries():
"""Locate binary files required for format conversions.
Add paths to the configuration files, and list missing binaries on stdout.
If a binary is not found automatically, the path in the configuration file
is left intact."""
missing = list()
for bin in binaries:
location = which(bin)
if location:
# write to local config
config.set('system', 'cmd_%s' % bin, location)
else:
missing.append(bin)
if not os.path.exists(usr_cfg):
os.makedirs(os.path.expanduser(os.path.join('~', '.config', 'egaia')))
with open(usr_cfg, 'wb') as configfile:
config.write(configfile)
if missing:
print "Missing binaries:"
print ', '.join(missing)
return
[docs]def setup(interactive=True):
"""Run all the setup commands."""
# Create a default user configuration file
egaia_config.dumpConfig(usr_cfg)
# Set locations of binary dependencies
setBinaries()
# Prompt user for basic data about the archive
if interactive:
egaia_config.updateConfig(usr_cfg, 'archive')
def _cli(args):
"""egaia setup
Install and set up the program.
Usage:
egaia setup --help
egaia setup [ --non-interactive ]
egaia setup --update-bin
"""
if args['--update-bin']:
setBinaries()
return
interactive=True
if args['--non-interactive']:
interactive=False
setup(interactive)