Skip to content
Snippets Groups Projects
Commit 35ec9964 authored by Geoff Cureton's avatar Geoff Cureton
Browse files

Updated argparse implementation, general cleanup.

parent ecc58fa5
No related branches found
No related tags found
No related merge requests found
...@@ -71,18 +71,16 @@ physical file locations. ...@@ -71,18 +71,16 @@ physical file locations.
- `trace`: - `trace`:
- `repo_urls`: A list of version control urls which contribute files to the package. - `repo_urls`: A list of version control urls which contribute files to the package.
Once we have updated the json files, in `infra/tools`, the following files... Once we have updated the json files, in `infra/tools` we have the following files...
prj-repos.bash - generate a script to pull the repos. - `prj-repos.bash`: generate a script to pull the repos.
- `prj-create.bash` : This will create your project directory with links.
- `prj-rpath.bash` : do the rpathes
- `prj-trace.bash` : pull out binaries
- `prj-tar.bash` : generates script to create tarball.
prj-create.bash - This will create your project directory with links.
prj-rpath.bash - do the rpathes which take the command line args...
prj-trace.bash - pull out binaries -
prj-tar.bash - generates script to create tarball.
take the command line args...
-H home, --home home : Home location to create package -H home, --home home : Home location to create package
-c config, --config config : The JSON configuration file. -c config, --config config : The JSON configuration file.
......
...@@ -235,7 +235,7 @@ def _argparse(): ...@@ -235,7 +235,7 @@ def _argparse():
# Set up the logging # Set up the logging
levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG] levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG]
level = levels[args.verbosity if args.verbosity < 4 else 3] level = levels[args.verbosity if args.verbosity < 3 else 3]
if level == logging.DEBUG : if level == logging.DEBUG :
console_logFormat = '%(asctime)s.%(msecs)03d (%(levelname)7s) : %(filename)s : %(funcName)s : %(lineno)d:%(message)s' console_logFormat = '%(asctime)s.%(msecs)03d (%(levelname)7s) : %(filename)s : %(funcName)s : %(lineno)d:%(message)s'
......
...@@ -75,7 +75,7 @@ def write_subversion_script(mrepo,home,project): ...@@ -75,7 +75,7 @@ def write_subversion_script(mrepo,home,project):
def check_and_create_directories(home): def check_and_create_directories(home):
""" """
Check for standard project directorories based on home and create them Check for standard project directories based on home and create them
:return: :return:
""" """
......
#!/usr/bin/python #!/usr/bin/env python
# encoding: utf-8 # encoding: utf-8
"""
prj-rpath.py
####################### Purpose: Set the correct RPATH in various executables.
# University of Wisconsin Madison, Space Science Engineering Center (SSEC)
#file_Date = '$Date: 2014-06-18 15:41:57 -0500 (Wed, 18 Jun 2014) $' Preconditions:
#file_Revision = '$Rev: 2130 $' *
#file_Author = '$Author: scottm $'
#file_HeadURL = '$HeadURL: https://svn.ssec.wisc.edu/repos/jpss_adl/trunk/util/build/patch_rpaths.py $' Optional:
#file_Id = '$Id: patch_rpaths.py 2130 2014-06-18 20:41:57Z scottm $' *
# Copyright 2011-2012, University of Wisconsin Regents.
# Licensed under the GNU GPLv3. Minimum commandline:
######################
import os, sys, logging prj-rpath.py -H /path/to/pkgroot -c pkg_config.json
Created by Scott Mindock <scott.mindock@ssec.wisc.edu> on 2015-09-09.
Copyright (c) 2015 University of Wisconsin Regents. All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import os, sys
import logging, traceback
from subprocess import Popen, PIPE,STDOUT from subprocess import Popen, PIPE,STDOUT
import contents import contents
LOG = logging.getLogger(__name__)
LOG = logging.getLogger(__file__)
def env(**kv):
"augment environment with new values" #def env(**kv):
zult = dict(os.environ) #"augment environment with new values"
zult.update(kv) #zult = dict(os.environ)
return zult #zult.update(kv)
#return zult
# ref: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams # ref: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams
class SingleLevelFilter(logging.Filter): #class SingleLevelFilter(logging.Filter):
def __init__(self, passlevels, reject): #def __init__(self, passlevels, reject):
self.passlevels = set(passlevels) #self.passlevels = set(passlevels)
self.reject = reject #self.reject = reject
def filter(self, record): #def filter(self, record):
if self.reject: #if self.reject:
return (record.levelno not in self.passlevels) #return (record.levelno not in self.passlevels)
else: #else:
return (record.levelno in self.passlevels) #return (record.levelno in self.passlevels)
def configure_logging(level=logging.WARNING):
"route logging INFO and DEBUG to stdout instead of stderr, affects entire application"
# create a formatter to be used across everything #def configure_logging(level=logging.WARNING):
fm = logging.Formatter('%(levelname)s:%(name)s:%(msg)s') # [%(filename)s:%(lineno)d]') #"route logging INFO and DEBUG to stdout instead of stderr, affects entire application"
# create a handler which routes info and debug to stdout with std formatting ## create a formatter to be used across everything
h1 = logging.StreamHandler(sys.stdout) #fm = logging.Formatter('%(levelname)s:%(name)s:%(msg)s') # [%(filename)s:%(lineno)d]')
f1 = SingleLevelFilter([logging.INFO, logging.DEBUG], False) ## create a handler which routes info and debug to stdout with std formatting
h1.addFilter(f1) #h1 = logging.StreamHandler(sys.stdout)
h1.setFormatter(fm) #f1 = SingleLevelFilter([logging.INFO, logging.DEBUG], False)
#h1.addFilter(f1)
# create a second stream handler which sends everything else to stderr with std formatting #h1.setFormatter(fm)
h2 = logging.StreamHandler(sys.stderr)
f2 = SingleLevelFilter([logging.INFO, logging.DEBUG], True) ## create a second stream handler which sends everything else to stderr with std formatting
h2.addFilter(f2) #h2 = logging.StreamHandler(sys.stderr)
h2.setFormatter(fm) #f2 = SingleLevelFilter([logging.INFO, logging.DEBUG], True)
#h2.addFilter(f2)
# set up the default logging #h2.setFormatter(fm)
rootLogger = logging.getLogger()
rootLogger.addHandler(h1) ## set up the default logging
rootLogger.addHandler(h2) #rootLogger = logging.getLogger()
rootLogger.setLevel(level) #rootLogger.addHandler(h1)
#rootLogger.addHandler(h2)
#rootLogger.setLevel(level)
def simple_sh(cmd, *args, **kwargs): def simple_sh(cmd, *args, **kwargs):
...@@ -233,35 +258,67 @@ def start(config_name, home): ...@@ -233,35 +258,67 @@ def start(config_name, home):
patch_me( project,install_home) patch_me( project,install_home)
return 0
def main():
def _argparse():
'''
Method to encapsulate the option parsing and various setup tasks.
'''
import argparse import argparse
desc = """starter file
"""
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-v', '--verbosity', action="count", default=1, description = '''Set the correct RPATH in various executables.'''
help='each occurrence increases verbosity 1 level through ERROR-WARNING-INFO-DEBUG')
usage = "usage: %prog [mandatory args] [options]"
version = 0.1
parser = argparse.ArgumentParser(
description=description
)
parser.add_argument('-c', '--config', metavar='config', default='.', required=True, parser.add_argument('-c', '--config', metavar='config', default='.', required=True,
help='Configuration file') help='Configuration file')
#parser.add_argument('-I', '--install_home', metavar='home', default='.', required=True,
# help='Home location to create package')
parser.add_argument('-H', '--home', metavar='home', default='.', required=True, parser.add_argument('-H', '--home', metavar='home', default='.', required=True,
help='Home location to create package') help='Home location to create package')
parser.add_argument("-v", "--verbosity",
dest='verbosity',
action="count",
default=2,
help='''each occurrence increases verbosity 1 level from
ERROR: -v=WARNING -vv=INFO -vvv=DEBUG'''
)
args = parser.parse_args() args = parser.parse_args()
# Set up the logging
levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG] levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG]
level = levels[args.verbosity if args.verbosity < 4 else 3] level = levels[args.verbosity if args.verbosity < 4 else 3]
logging.basicConfig(level=level) if level == logging.DEBUG :
console_logFormat = '%(asctime)s.%(msecs)03d (%(levelname)7s) : %(filename)s : %(funcName)s : %(lineno)d:%(message)s'
date_format = '%Y-%m-%d %H:%M:%S'
else:
console_logFormat = '%(asctime)s.%(msecs)03d (%(levelname)7s) : %(message)s'
date_format = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(level=level, format=console_logFormat, datefmt=date_format)
return args
def main():
# Read in the options
options = _argparse()
# Do the RPATH modifications
retval = start(options.config,options.home)
return retval
start(args.config,args.home)
if __name__=='__main__': if __name__=='__main__':
sys.exit(main()) sys.exit(main())
......
...@@ -15,7 +15,7 @@ fi ...@@ -15,7 +15,7 @@ fi
# python interpreter including numpy, h5py, pytables, scipy; used by CSPP scripts # python interpreter including numpy, h5py, pytables, scipy; used by CSPP scripts
export PY= ~/ShellB3/classic/ShellB3/ShellB3/bin/python export PY=~/ShellB3/classic/ShellB3/ShellB3/bin/python
# common modules location used by CSPP scripts # common modules location used by CSPP scripts
export PYTHONPATH=${INFRA_HOME}/tools export PYTHONPATH=${INFRA_HOME}/tools
export PATH=${PYTHONPATH}:${PATH} export PATH=${PYTHONPATH}:${PATH}
...@@ -30,4 +30,4 @@ export LD_LIBRARY_PATH=${INFRA_HOME}/common/local/lib64:${LD_LIBRARY_PATH} ...@@ -30,4 +30,4 @@ export LD_LIBRARY_PATH=${INFRA_HOME}/common/local/lib64:${LD_LIBRARY_PATH}
test -x "$QL_PYTHON" || QL_PYTHON="${INFRA_HOME}/common/ShellB3/bin/python" test -x "$QL_PYTHON" || QL_PYTHON="${INFRA_HOME}/common/ShellB3/bin/python"
python $MODULE -vv "$@" python $MODULE "$@"
\ No newline at end of file
__author__ = 'scottm' #!/usr/bin/env python
# encoding: utf-8
"""
prj-tar.py
Purpose: Create a series of packaging scripts.
Preconditions:
*
Optional:
*
Minimum commandline:
prj-tar.py -H /path/to/pkgroot -c pkg_config.json -t pkg.version
Created by Scott Mindock <scott.mindock@ssec.wisc.edu> on 2015-09-09.
Copyright (c) 2015 University of Wisconsin Regents. All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
import os This program is distributed in the hope that it will be useful,
import logging but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import os, sys
import logging, traceback
import contents import contents
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__file__)
__author__ = 'scottm'
def with_links(project, output_dir, tar_filename): def with_links(project, output_dir, tar_filename):
""" """
Create a list of directories to be added to the product tarball.
""" """
fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_links.bash") fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_links.bash")
...@@ -23,72 +56,91 @@ def with_links(project, output_dir, tar_filename): ...@@ -23,72 +56,91 @@ def with_links(project, output_dir, tar_filename):
LOG.error('missing %s value' % k) LOG.error('missing %s value' % k)
return return
LOG.info("\tAdding dirs/files from vendor applications (copy_from_app)...")
for links in project['copy_from_app']: for links in project['copy_from_app']:
LOG.debug(links) #LOG.debug("\t{0:}".format(links[1]))
line = os.path.join(os.path.basename(project['a_home']), links[1]) line = os.path.join(os.path.basename(project['a_home']), links[1])
LOG.debug("\t\t{0:}".format(line))
tar.write(line + '\n') tar.write(line + '\n')
LOG.info("\tAdding package symlinks (links_in_package)...")
for links in project['links_in_package']: for links in project['links_in_package']:
LOG.debug(links) #LOG.debug("\t{0:}".format(links[1]))
line = os.path.join(os.path.basename(project['a_home']), links[1]) line = os.path.join(os.path.basename(project['a_home']), links[1])
LOG.debug("\t\t{0:}".format(line))
tar.write(line + '\n') tar.write(line + '\n')
LOG.info("\tAdding desired directories (dirs_in_package)...")
for links in project['dirs_in_package']: for links in project['dirs_in_package']:
LOG.debug(links) #LOG.debug("\t{0:}".format(links))
line = os.path.join(os.path.basename(project['a_home']), links) line = os.path.join(os.path.basename(project['a_home']), links)
LOG.debug("\t\t{0:}".format(line))
tar.write(line + '\n') tar.write(line + '\n')
tar.close() tar.close()
return fname return fname
def ignores(project, output_dir, tar_filename): def dereference_links(project, output_dir, tar_filename):
""" """
Create a list of directories/files (which are actually symlinks to other
locations) to be added to the product tarball. These links can point to
code repos ('links_from_repos'), or application binaries ('dereferenced_links').
""" """
fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_ignores.bash") fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_deref.bash")
LOG.info('Create %s'%fname) LOG.info('Create %s'%fname)
tar = open(fname, 'w') tar = open(fname, 'w')
for k in ['a_home', 'ignores']: for k in ['a_home', 'links_from_repos', 'dereferenced_links']:
if k not in project.keys(): if k not in project.keys():
LOG.error('missing %s value' % k) LOG.error('missing %s value' % k)
return return
for ignore in project['ignores']: LOG.info("\tAdding symlinks from code repositories (links_from_repos)...")
line = os.path.join(os.path.basename(project['a_home']), ignore) for links in project['links_from_repos']:
line = os.path.join(os.path.basename(project['a_home']), links[1])
LOG.debug("\t\t{0:}".format(line))
tar.write(line + '\n')
#LOG.info('Dereference %s'% line)
LOG.info("\tAdding other symlinks (dereferenced_links)...")
for links in project['dereferenced_links']:
line = os.path.join(os.path.basename(project['a_home']), links[1])
LOG.debug("\t\t{0:}".format(line))
tar.write(line + '\n') tar.write(line + '\n')
#LOG.info('Dereference %s'% line)
tar.close() tar.close()
return fname return fname
def ignores(project, output_dir, tar_filename):
def derefence_links(project, output_dir, tar_filename):
""" """
Create a list of directories and files which are to be excluded from the
tarball.
""" """
fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_deref.bash") fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_ignores.bash")
LOG.info('Create %s'%fname) LOG.info('Create %s'%fname)
tar = open(fname, 'w') tar = open(fname, 'w')
for k in ['a_home', 'links_from_repos', 'dereferenced_links']: for k in ['a_home', 'ignores']:
if k not in project.keys(): if k not in project.keys():
LOG.error('missing %s value' % k) LOG.error('missing %s value' % k)
return return
for links in project['links_from_repos'] + project['dereferenced_links']: LOG.info("\tAdding files/dirs to exclude from tar command (ignores)...")
line = os.path.join(os.path.basename(project['a_home']), links[1]) for ignore in project['ignores']:
#line = links[0] line = os.path.join(os.path.basename(project['a_home']), ignore)
LOG.debug("\t\t{0:}".format(line))
tar.write(line + '\n') tar.write(line + '\n')
LOG.info('Dereference %s'% line)
tar.close() tar.close()
return fname return fname
def check_and_create_directories(home): def check_and_create_directories(home):
""" """
Check for standard project directorories based on home and create them Check for standard project directorories based on home and create them
...@@ -101,7 +153,12 @@ def check_and_create_directories(home): ...@@ -101,7 +153,12 @@ def check_and_create_directories(home):
if not os.path.exists(newd): if not os.path.exists(newd):
os.makedirs(newd) os.makedirs(newd)
def tar_script(config_name, output_dir, tar_filename, home): def tar_script(config_name, output_dir, tar_filename, home):
"""
Create a series of file lists detailing how to construct a tarball, and
a script which runs tar using those file lists.
"""
project_dictionary = contents.project_dictionary(config_name) project_dictionary = contents.project_dictionary(config_name)
check_and_create_directories(home) check_and_create_directories(home)
...@@ -111,10 +168,12 @@ def tar_script(config_name, output_dir, tar_filename, home): ...@@ -111,10 +168,12 @@ def tar_script(config_name, output_dir, tar_filename, home):
project_dictionary['a_home'] = os.path.join(home, project_dictionary['a_home']) project_dictionary['a_home'] = os.path.join(home, project_dictionary['a_home'])
leave_links = with_links(project_dictionary, output_dir, tar_filename) # Create a file containing the directories to add to the tarball, returning
# the filename
leave_links_fname = with_links(project_dictionary, output_dir, tar_filename)
derefenece_links = derefence_links(project_dictionary, output_dir, tar_filename) dereference_links_fname = dereference_links(project_dictionary, output_dir, tar_filename)
ignore = ignores(project_dictionary, output_dir, tar_filename) ignore_fname = ignores(project_dictionary, output_dir, tar_filename)
fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_tar.bash") fname = os.path.join(output_dir, os.path.basename(tar_filename) + "_tar.bash")
...@@ -125,39 +184,70 @@ def tar_script(config_name, output_dir, tar_filename, home): ...@@ -125,39 +184,70 @@ def tar_script(config_name, output_dir, tar_filename, home):
tar.write('# Contents before\n') tar.write('# Contents before\n')
tar.write('cd %s; ls\n' % os.path.dirname(project_dictionary['a_home'])) tar.write('cd %s; ls\n' % os.path.dirname(project_dictionary['a_home']))
tar.write('# Direct reference no de-reference\n')
tar.write(
'cmd=\"tar --exclude=.svn --exclude=.pyc -c -X %s -X %s -T %s -f %s\";echo ${cmd};${cmd}\n' % ( ignore,derefenece_links, leave_links, tar_filename))
tar.write('# Dereferenced files\n')
tar.write('cmd=\"tar --exclude=.svn --exclude=.pyc -rh -X %s -T %s -f %s\";echo ${cmd};${cmd}\n' % (
ignore, derefenece_links, tar_filename))
# Add actual files to the tarball
tar.write('# Add actual files to the tarball\n')
tar.write(
'''cmd="tar -v --exclude=.svn --exclude=*.pyc -c \\
-X %s \\
-X %s \\
-T %s \\
-f %s"\n''' % (ignore_fname, dereference_links_fname, leave_links_fname, tar_filename)
)
tar.write('''echo ${cmd}\n${cmd}\n\n''')
tar.write('## Dereferenced files\n')
tar.write(
'''cmd="tar -v --exclude=.svn --exclude=*.pyc -rh \\
-X %s \\
-T %s \\
-f %s"\n''' % (ignore_fname, dereference_links_fname, tar_filename)
)
tar.write('''echo ${cmd}\n${cmd}\n\n''')
tar.write('#Files added form trace\n')
trace_file = os.path.join(home,output_dir,os.path.basename(tar_filename)) trace_file = os.path.join(home,output_dir,os.path.basename(tar_filename))
trace_file= trace_file.replace('.tar', '.trc') trace_file = trace_file.replace('.tar', '.trc')
trace_file = os.path.join(output_dir,project_dictionary['a_home'].split("/")[-1]+".trc")
#trace_file=os.path.join(output_dir,project_dictionary['a_home'].split("/")[-1]+".trc") if os.path.exists(trace_file):
#tar.write('cmd=\"tar -v --exclude=.svn --exclude=.pyc -rh -X %s -T %s -f %s\";echo ${cmd};${cmd}\n' % ( tar.write('# Files added form trace\n')
# ignore, trace_file, tar_filename)) tar.write('cmd=\"tar -v --exclude=.svn --exclude=.pyc -rh -X %s -T %s -f %s\";echo ${cmd};${cmd}\n' % (
ignore_fname, trace_file, tar_filename))
tar.write('cmd=\"tar --exclude=.svn --exclude=.pyc -rh -T %s -f %s\";echo ${cmd};${cmd}\n' % ( tar.write('cmd=\"tar -v --exclude=.svn --exclude=*.pyc -rh -T %s -f %s\";echo ${cmd};${cmd}\n' % (
trace_file, tar_filename)) trace_file, tar_filename))
tar.write('ls -al;cmd=\"gzip %s\";echo ${cmd};${cmd}\n' % (tar_filename))
# gzip the tarball
tar.write('## gzip the tarball\n')
tar.write('''cmd="gzip %s"\necho ${cmd}\n${cmd}\n''' % (tar_filename))
tar.close() tar.close()
os.chmod(fname, 0775) os.chmod(fname, 0775)
return 0
def _argparse():
'''
Method to encapsulate the option parsing and various setup tasks.
'''
def main():
import argparse import argparse
desc = """Command to generate scripts for building tar file description = '''Generate a series of package scripts.'''
"""
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('-v', '--verbosity', action="count", default=0, usage = "usage: %prog [mandatory args] [options]"
help='each occurrence increases verbosity 1 level through ERROR-WARNING-INFO-DEBUG') version = 0.1
parser = argparse.ArgumentParser(
description=description
)
parser.add_argument('-c', '--config', metavar='config', default='.', required=True,
help='Configuration file')
parser.add_argument('-H', '--home', metavar='home', default='.', required=True,
help='Home location to create package')
parser.add_argument('-o', '--output', metavar='output', default='prj_scripts', parser.add_argument('-o', '--output', metavar='output', default='prj_scripts',
help='output directory for tar building scripts') help='output directory for tar building scripts')
...@@ -165,21 +255,42 @@ def main(): ...@@ -165,21 +255,42 @@ def main():
parser.add_argument('-t', '--tar_filename', metavar='tar_filename', default='packages', required=True, parser.add_argument('-t', '--tar_filename', metavar='tar_filename', default='packages', required=True,
help='tar ball name without extension, name-version-A/B') help='tar ball name without extension, name-version-A/B')
parser.add_argument('-c', '--config', metavar='config', default='.', required=True, parser.add_argument("-v", "--verbosity",
help='Configuration file') dest='verbosity',
action="count",
parser.add_argument('-H', '--home', metavar='home', default='.', required=True, default=2,
help='Home location to create package home of project ') help='''each occurrence increases verbosity 1 level from
ERROR: -v=WARNING -vv=INFO -vvv=DEBUG'''
)
args = parser.parse_args() args = parser.parse_args()
# Set up the logging
levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG] levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG]
level = levels[args.verbosity if args.verbosity < 4 else 3] level = levels[args.verbosity if args.verbosity < 3 else 3]
if level == logging.DEBUG :
console_logFormat = '%(asctime)s.%(msecs)03d (%(levelname)7s) : %(filename)s : %(funcName)s : %(lineno)d:%(message)s'
date_format = '%Y-%m-%d %H:%M:%S'
else:
console_logFormat = '%(asctime)s.%(msecs)03d (%(levelname)7s) : %(message)s'
date_format = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(level=level, format=console_logFormat, datefmt=date_format)
return args
def main():
# Read in the options
options = _argparse()
logging.basicConfig(level=level) # Generate the packaging scripts
retval = tar_script(options.config, options.output, options.tar_filename, options.home)
tar_script(args.config, args.output, args.tar_filename, args.home) return retval
if __name__ == '__main__': if __name__=='__main__':
main() sys.exit(main())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment