|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
"""
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
The main behavior of centpkg
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
"""
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
#
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Author(s):
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Jesse Keating <jkeating@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Pat Riehecky <riehecky@fnal.gov>
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Brian Stinson <bstinson@ksu.edu>
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
#
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# This program is free software; you can redistribute it and/or modify it
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# under the terms of the GNU General Public License as published by the
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Free Software Foundation; either version 2 of the License, or (at your
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# the full text of the license.
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
import os
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
import sys
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
import logging
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
b66e8a |
from configparser import ConfigParser
|
|
Brian Stinson |
3edf28 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
import pyrpkg
|
|
Brian Stinson |
3edf28 |
import pyrpkg.utils
|
|
Brian Stinson |
3edf28 |
import centpkg.cli
|
|
Brian Stinson |
3edf28 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/5d2226572f5efd5993a3b03e9d2e38951ce985250f7030e5912208b0a11de064?s=16&d=retro) |
794ab0 |
def main():
|
|
Michal Konečný |
0d832c |
"""
|
|
Michal Konečný |
0d832c |
Centpkg main.
|
|
Michal Konečný |
0d832c |
|
|
Michal Konečný |
0d832c |
"""
|
|
Brian Stinson |
3edf28 |
program_name = os.path.basename(sys.argv[0])
|
|
Brian Stinson |
3edf28 |
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
default_user_config_path = os.path.join(
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
os.path.expanduser("~"), ".config", "rpkg", "%s.conf" % program_name
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
)
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
# Setup an argparser and parse the known commands to get the config file
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
# - use the custom ArgumentParser class from pyrpkg.cli and disable
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
# argument abbreviation to ensure that --user will be not treated as
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
# --user-config
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
parser = pyrpkg.cli.ArgumentParser(add_help=False, allow_abbrev=False)
|
|
Michal Konečný |
370301 |
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
parser.add_argument(
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
"-C",
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
"--config",
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
help="Specify a config file to use",
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
default="/etc/rpkg/%s.conf" % program_name,
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
)
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
parser.add_argument(
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
"--user-config",
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
help="Specify a user config file to use",
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
default=default_user_config_path,
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
(args, other) = parser.parse_known_args()
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Make sure we have a sane config file
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
if not os.path.exists(args.config) and not other[-1] in ["--help", "-h", "help"]:
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
sys.stderr.write("Invalid config file %s\n" % args.config)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
sys.exit(1)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
Brian Stinson |
3edf28 |
# Setup a configuration object and read config file data
|
|
![](https://seccdn.libravatar.org/avatar/e0034d87af3e72eecdfa3848707ecc6cc2339078b68d48c05dbaf7e20bf477b2?s=16&d=retro) |
b66e8a |
config = ConfigParser()
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
config.read(args.config)
|
|
![](https://seccdn.libravatar.org/avatar/016a5f3568d521d40c077bd1f06aa5b9eab60232808db00b9e3488bbb7477299?s=16&d=retro) |
5b6d17 |
config.read(args.user_config)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/5d2226572f5efd5993a3b03e9d2e38951ce985250f7030e5912208b0a11de064?s=16&d=retro) |
794ab0 |
client = centpkg.cli.centpkgClient(config, name=program_name)
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
client.do_imports(site="centpkg")
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
client.parse_cmdline()
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
Brian Stinson |
3edf28 |
# This is due to a difference argparse behavior to Python 2 version.
|
|
Brian Stinson |
3edf28 |
# In Python 3, argparse will proceed to here without reporting
|
|
Brian Stinson |
3edf28 |
# "too few arguments". Instead, client.args does not have attribute
|
|
Brian Stinson |
3edf28 |
# command.
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
if not hasattr(client.args, "command"):
|
|
Brian Stinson |
3edf28 |
client.parser.print_help()
|
|
Brian Stinson |
3edf28 |
sys.exit(1)
|
|
Brian Stinson |
3edf28 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
if not client.args.path:
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
try:
|
|
Brian Stinson |
3edf28 |
client.args.path = pyrpkg.utils.getcwd()
|
|
Brian Stinson |
3edf28 |
except Exception:
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
print("Could not get current path, have you deleted it?")
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
sys.exit(1)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
Brian Stinson |
3edf28 |
# setup the logger -- This logger will take things of INFO or DEBUG and
|
|
Brian Stinson |
3edf28 |
# log it to stdout. Anything above that (WARN, ERROR, CRITICAL) will go
|
|
Brian Stinson |
3edf28 |
# to stderr. Normal operation will show anything INFO and above.
|
|
Brian Stinson |
3edf28 |
# Quiet hides INFO, while Verbose exposes DEBUG. In all cases WARN or
|
|
Brian Stinson |
3edf28 |
# higher are exposed (via stderr).
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
log = pyrpkg.log
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
client.setupLogging(log)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
if client.args.v:
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
log.setLevel(logging.DEBUG)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
elif client.args.q:
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
log.setLevel(logging.WARNING)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
log.setLevel(logging.INFO)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
# Run the necessary command
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
try:
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
sys.exit(client.args.command())
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
except KeyboardInterrupt:
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
pass
|
|
Brian Stinson |
3edf28 |
except Exception as e:
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
if getattr(client.args, "debug", False):
|
|
Brian Stinson |
3edf28 |
raise
|
|
![](https://seccdn.libravatar.org/avatar/bf298fff6edef11d0f53e6bd1fb1e649c131b75ad7200ab134883e8603591405?s=16&d=retro) |
85cce4 |
log.error("Could not execute %s: %s" % (client.args.command.__name__, e))
|
|
Brian Stinson |
13c432 |
sys.exit(1)
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
|
|
Brian Stinson |
3edf28 |
|
|
Brian Stinson |
3edf28 |
if __name__ == "__main__":
|
|
![](https://seccdn.libravatar.org/avatar/25b391aad4604da4d060ebac56a74378660d08a933299c566ebc59941f52c806?s=16&d=retro) |
85a850 |
main()
|