Source code for excentury.command.install

"""Install

The install command creates the .excenturyrc file. This file
is autogenerated and should not be modified manually.

"""

import sys
import site
import textwrap
import os.path as pth
from excentury.command import disp, make_dir, append_variable

DESC = """
Create the excenturyrc file and source it in your .bash_profile or
.bashrc file. This will make sure that you can use the excentury
script and that the excentury libraries are all available to the g++
compiler and the other languages.

"""


[docs]def add_parser(subp, raw): """Add a parser to the main subparser. """ subp.add_parser('install', help='install excentury', formatter_class=raw, description=textwrap.dedent(DESC))
[docs]def source_excenturyrc(): """Source the .excenturyrc file in the .bashrc file. """ make_dir(pth.expandvars('$HOME/.excentury')) bash_map = { 'Darwin': '.bash_profile', 'darwin': '.bash_profile', 'Linux': '.bashrc', 'linux': '.bashrc', } platform = sys.platform try: bashrc_path = pth.expandvars('$HOME/%s' % bash_map[platform]) except KeyError: disp('Error: %s platform not supported\n' % platform) exit(2) disp('checking %s ... ' % bashrc_path) if pth.exists(bashrc_path): expr = [ 'source ~/.excentury/excenturyrc\n', 'source $HOME/.excentury/excenturyrc\n', pth.expandvars('source $HOME/.excentury/excenturyrc\n'), ] for content_line in open(bashrc_path, 'r'): for line in expr: if line == content_line: disp('ok\n') return with open(bashrc_path, 'a') as content_file: disp('\n including excenturyrc\n') content_file.write('source ~/.excentury/excenturyrc\n')
[docs]def make_dirs(): """Creates standard directories to place binaries and libraries created by excentury. """ root = site.getuserbase() make_dir(root+'/lib') make_dir(root+'/lib/excentury') make_dir(root+'/lib/excentury/bin') make_dir(root+'/lib/excentury/lib') make_dir(root+'/lib/excentury/cpp') make_dir(root+'/lib/excentury/matlab') make_dir(root+'/lib/excentury/python') make_dir(root+'/lib/excentury/tmp')
[docs]def excenturyrc_str(): """Create the excenturyrc file contents. """ userbase = site.getuserbase() content = append_variable('PATH', '%s/bin' % sys.prefix) content += append_variable('PATH', '%s/bin' % userbase) # include path = pth.abspath(pth.dirname(__file__)+'/../extern/include') content += append_variable('C_INCLUDE_PATH', path) content += append_variable('CPLUS_INCLUDE_PATH', path) # matlab path = pth.abspath(pth.dirname(__file__)+'/../extern/matlab') content += append_variable('MATLABPATH', path) # excentury/bin content += append_variable('PATH', '%s/lib/excentury/bin' % userbase) # excentury/lib content += append_variable('LD_LIBRARY_PATH', '%s/lib/excentury/lib' % userbase) # excentury/matlab content += append_variable('MATLABPATH', '%s/lib/excentury/matlab' % userbase) # excentury/python content += append_variable('PYTHONPATH', '%s/lib/excentury/python' % userbase) return content
[docs]def excenturyrc(): """Create the excenturyrc file. """ rc_path = pth.expandvars('$HOME/.excentury/excenturyrc') disp('writing %s ... ' % rc_path) with open(rc_path, 'w') as rcfile: rcfile.write(excenturyrc_str()) disp('done\n')
[docs]def run(_): """Run the command. """ source_excenturyrc() make_dirs() excenturyrc()