diff --git a/cdist/argparse.py b/cdist/argparse.py index 611c484a..013530f0 100644 --- a/cdist/argparse.py +++ b/cdist/argparse.py @@ -7,10 +7,11 @@ import functools import cdist.configuration import cdist.preos import cdist.info +import cdist.process # set of beta sub-commands -BETA_COMMANDS = set(('install', 'inventory', )) +BETA_COMMANDS = set(('install', 'inventory', 'process', )) # set of beta arguments for sub-commands BETA_ARGS = { 'config': set(('tag', 'all_tagged_hosts', 'use_archiving', )), @@ -468,6 +469,14 @@ def get_parsers(): 'pattern', nargs='?', help='Glob pattern.') parser['info'].set_defaults(func=cdist.info.Info.commandline) + # Process + parser['process'] = parser['sub'].add_parser( + 'process', parents=[parser['loglevel'], parser['beta'], ]) + parser['process_sub'] = parser['process'].add_subparsers(title="Processes") + parser['process'].set_defaults(func=functools.partial( + cdist.process.commandline, parser=parser['process'])) + cdist.process.setup(parser['process_sub']) + for p in parser: parser[p].epilog = EPILOG diff --git a/cdist/process.py b/cdist/process.py new file mode 100644 index 00000000..78b3c21b --- /dev/null +++ b/cdist/process.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# 2020 Darko Poljak (darko.poljak at gmail.com) +# +# This file is part of cdist. +# +# cdist 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. +# +# cdist 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 cdist. If not, see . +# +# + +import os +import sys +import importlib +import re +import cdist + + +PROCESS_PARENT = 'process' +_PROCESS_DEBUG = os.environ.get('CDIST_PROCESS_DEBUG', None) +if _PROCESS_DEBUG: + def _debug(msg): + print('[cdist process debug] {}'.format(msg)) +else: + def _debug(msg): + pass + + +_process_path = [] + +_env_path = os.environ.get('CDIST_PROCESS_PATH', None) +if _env_path: + for x in re.split(r'(?