#!/usr/bin/env python3 import argparse import os import sys import subprocess from helperlib import get_config, parse_arg, add_sudo, make_ssh_cmd, get_path_config DEBUG = False SUDO_REMOTE = True def get_conf_names(): res = [] for i in get_config().keys(): res.append(f'{i}:') return res def ls_cmd(path): cmd = f'ls {path}' return cmd def make_full_cmd(config): cmd = ls_cmd(config['work_path']) if SUDO_REMOTE and config['connection_name'] != 'local': cmd = add_sudo(cmd) if config['connection_name'] != 'local': cmd = make_ssh_cmd( config['host'], config['port'], config['user'], cmd ) return cmd def get_current_arg(args): # Возвращает заполняемый аргумент res = None if len(args.command) > args.pos_num: res = args.command[args.pos_num] return res if __name__ == '__main__': parser = argparse.ArgumentParser( ) parser.add_argument('command', nargs='*') parser.add_argument('pos_num', type=int) args = parser.parse_args() if DEBUG: print(f'{args}', file=sys.stderr) cur_arg = get_current_arg(args) if DEBUG: print(f'{cur_arg}', file=sys.stderr) comp_list = [] if cur_arg is not None: # В нем уже прописали имя подключения cur_set = get_path_config(cur_arg) cmd = make_full_cmd(cur_set) if DEBUG: print(f'{cmd}', file=sys.stderr) obj_list = subprocess.run(cmd, capture_output=True, shell=True, text=True).stdout if DEBUG: print(f'{obj_list}', file=sys.stderr) print(cur_set, file=sys.stderr) for i in obj_list.split('\n'): i_res = '' if cur_set['connection_name'] != 'local': i_res = cur_set['connection_name'] + ':' i_res += cur_set["work_path"] if i_res[-1] != '/': i_res += '/' i_res += i comp_list.append(i_res) if DEBUG: print(f'{comp_list}', file=sys.stderr) comp_list.extend([f'{i}/' for i in get_conf_names()]) print(' '.join(comp_list))