Source code for excentury.command.init

"""Init

Creates an excentury project.

"""

import textwrap
import os.path as pth
from excentury.command import disp, make_dir, append_variable
from excentury.command.add import update_entries


DESC = """
Creates an excentury configuration file along with directories to
store the files.

"""

XCPP_CONFIG = """[xcpp]
name = {name}
path = xcpp

[cpp]
dir = cpp
bin = bin
cxxinc = cpp
cxxlib = lib
opt = -O3 -Werror -Wfatal-errors -Wextra

[python]
dir = cpp
lib = lib
wrapper = python
cxxinc = cpp
cxxlib = lib
opt = -O3 -Werror -Wfatal-errors -Wextra

[matlab]
dir = cpp
lib = matlab
wrapper = matlab
cxxinc = cpp
cxxlib = lib
cxxopt = -O3 -Werror -Wfatal-errors -Wextra

"""


[docs]def add_parser(subp, raw): """Add a parser to the main subparser. """ tmpp = subp.add_parser('init', help='initialize excentury project', formatter_class=raw, description=textwrap.dedent(DESC)) tmpp.add_argument('name', type=str, help='project name')
[docs]def make_directories(): """Creates the project directories. """ dirs = [ 'xcpp', 'bin', 'lib', 'cpp', 'matlab', 'python', ] disp('Creating directories ... \n') for path in dirs: if make_dir(path): disp(' creating %r\n' % path) else: disp(' %r already exists\n' % path)
[docs]def make_config_file(arg): """Creates a configuration file. """ if pth.exists('xcpp.config'): disp('xcpp.config already exists ...\n') return disp('creating xcpp.config ... ') with open('xcpp.config', 'w') as _fp: _fp.write(XCPP_CONFIG.format(name=arg.name)) disp('done\n')
[docs]def make_bashrc(arg): """Create the bashrc file for the project. """ if pth.exists('.xcpprc'): disp('.xcpprc already exists ...\n') return disp('creating .xcpprc ... ') with open('.xcpprc', 'w') as rcf: rcf.write("# %s bash configuration file\n" % arg.name) rcf.write('ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"\n') rcf.write('export XCPP_CONFIG_PATH=$ROOT\n') rcf.write(append_variable('PATH', '$ROOT/bin')) rcf.write(append_variable('LD_LIBRARY_PATH', '$ROOT/lib')) rcf.write(append_variable('MATLABPATH', '$ROOT/matlab')) rcf.write(append_variable('PYTHONPATH', '$ROOT/python')) disp('done\n')
[docs]def run(arg): """Run the command. """ make_directories() make_config_file(arg) make_bashrc(arg) update_entries(pth.abspath('.'))