def execute_command(command): if command[0] == "ls": long = False if "-l" in command: long = True return commands.ls(BASEPATH, long) elif command[0] == "hash": return commands.hashfile(BASEPATH, command[1])
def do_ls(self, args): 'Usage: ls [-r] [NODE]...\n' \ 'Lists information about nodes for given NODE(s) (current group by default)\n' \ '-r option recursively lists NODE(s) which are groups\n' args = parse(args) if "-r" in args: recursive = True args.remove('-r') else: recursive = False args = [self.path + node_path if node_path[0] != '/' else node_path for node_path in args] if not len(args): args.append(self.path) result = commands.ls(args, recursive) print(result)
def test_ls(): pictures = Folder('pictures') pic_1 = File(pictures, 'pic_1', 'jpg', 999) pic_2 = File(pictures, 'pic_2', 'jpg', 999) pic_3 = File(pictures, 'pic_3', 'jpg', 999) holiday = Folder('holiday', pictures) pic_4 = File(holiday, 'pic_4', 'jpg', 999) pic_5 = File(holiday, 'pic_5', 'jpg', 999) tree = """pictures -pic_1 -pic_2 -pic_3 holiday -pic_4 -pic_5""" request = "ls pictures".split() assert tree == ls(pictures, request)
def sync(self, sock): util.send(sock, "ls -l") remote_data = util.recv(sock) remote_data = json.loads(remote_data) client_data = commands.ls(self.basedir, long=True) client_data = json.loads(client_data) client_filelist = list(map(lambda f: f["name"], client_data)) remote_filelist = list(map(lambda f: f["name"], remote_data)) cue_download = [] cue_upload = [] for file in remote_data: if file["name"] not in client_filelist: cue_download.append(file["name"]) for file in client_data: if file["name"] not in remote_filelist: cue_upload.append(file["name"]) for file in remote_data: if not file["name"] in client_filelist: continue # do not request hash if file was modified before previous sync if file['name'] in self.last_synced and file["mtime"] < self.last_synced[file['name']]: continue util.send(sock, f"hash {file['name']}") hsh = util.recv(sock) local_hsh = util.hashfile(os.path.join(self.basedir, file['name'])) if hsh != local_hsh: # IMPORTANT LOGIC local_file = [f for f in client_data if f.get('name')== f['name']][0] if file['mtime'] > local_file['mtime']: # server updated file after client cue_download.append(file['name']) else: # client updated dile after server cue_upload.append(file['name']) else: # mtime differs but file is in sync as compared by hash self.last_synced[file['name']] = time.time() for filename in cue_upload: util.send(sock, f"upload {filename}") file_transfer.upload_file(sock, self.basedir, filename) self.last_synced[filename] = time.time() for filename in cue_download: util.send(sock, f"download {filename}") file_transfer.download_file(sock, self.basedir, filename) self.last_synced[filename] = time.time()
def main(): args = sys.argv[1:] parser = ArgumentParser() parser.add_argument('command', type=command_type, help=', '.join(COMMANDS)) parser.add_argument('options', nargs='*') parsed = parser.parse_args(args) command = parsed.command options = parsed.options if command == 'install': opts = ArgumentParser(usage='%(prog)s install extension') opts.add_argument('extension') sub_args = opts.parse_args(options) return install(sub_args.extension) elif command == 'uninstall': opts = ArgumentParser(usage='%(prog)s uninstall extension') opts.add_argument('extension') sub_args = opts.parse_args(options) return uninstall(sub_args.extension) elif command == 'enable': opts = ArgumentParser(usage='%(prog)s enable extension') opts.add_argument('extension') sub_args = opts.parse_args(options) return enable(sub_args.extension) elif command == 'disable': opts = ArgumentParser(usage='%(prog)s disable extension') opts.add_argument('extension') sub_args = opts.parse_args(options) return disable(sub_args.extension) elif command == 'status': return status() elif command == 'ls': return ls() elif command == 'help': opts = ArgumentParser(usage='%(prog)s help command') opts.add_argument('command', type=command_type) sub_args = opts.parse_args(options) cmd = sub_args.command print('{} - {}'.format(cmd, COMMAND_DESCRIPTIONS[cmd])) return 0 else: raise Exception('Somebody forgot to update some code')
def ls(args): """ provide a argparse namespace object. Calls the ls command """ commands.ls()
def main(): home = Folder('home') working_dir = Folder('working_dir') working_dir = home answer = True starting_msg = "File system is working. Type help if needed or exit to end program." print(starting_msg) while answer: try: path = get_path(working_dir, home) answer = input(path).split() if answer[0] == "cd": new_working_dir = cd(answer, working_dir, home) if new_working_dir: working_dir = new_working_dir else: print("Incorrect usage of: cd. Try again") elif answer[0] == 'mkdir': # make folder try: Folder(answer[1], working_dir) except Exception: print("Incorrect usage of: mkdir. Try again") elif answer[0] == 'mk': # make file try: File(working_dir, answer[1], answer[2], answer[3]) except Exception: print("Incorrect usage of: mk. Try again") elif answer[0] == 'rm': # delete file or folder if len(answer) == 2: to_be_deleted = working_dir.find(answer[1]) if to_be_deleted: print(rm(to_be_deleted, working_dir, home)) else: print(f"Error. {answer[1]} - Element does not exist") else: print("Incorrect usage of: rm. Try again") elif answer[0] == 'ls': # print structure print(ls(working_dir, answer)) elif answer[0] == 'cat': # print file/folder info print(cat(working_dir, answer[1])) elif answer[0] == 'size': # print folder size try: size = working_dir.find(answer[1]).count_size_recursive() print(f'Size: {size} kB') except AttributeError: print("Incorrect usage of: size. Try again") elif answer[0] == 'wc': # count elements in folder try: print(wc(working_dir, answer)) except Exception: print("Incorrect usage of: wc. Try again") elif answer[0] == 'pwd': print(working_dir.name) elif answer[0] == 'cp': try: cp(working_dir, answer, home) except Exception: print("Incorrect usage of: cp. Try again") elif answer[0] == 'mv': try: mv(working_dir, answer, home) except Exception: print("Incorrect usage of: mv. Try again") elif answer[0] == 'help': print(help()) elif answer[0] == 'exit': # end program answer = False else: print("Command not found") except IndexError: print("No command was given. Try again.") main()
from disk_manager import DiskManager from commands import cat, ls from document import File from path import Path if __name__ == "__main__": #Create a disk instance disk = DiskManager() #Create a command object instance path = Path('c:\sandbox') #Define our command cmd = ls(path) #set & call our command disk.setCommand(cmd) for d in disk.runCommand(): print d # In[130]: #define our command Object (File) fileObj = File('c:\sandbox\ipconfig.txt') cmd = cat(fileObj) disk.setCommand(cmd) for line in disk.runCommand(): print line
parser.add_argument("name", metavar="name", type=str, nargs="?", help="Name of the note, required for add and rm") # TODO document those parser.add_argument("-m", metavar="-m", type=str) parser.add_argument("-f", metavar="-f", type=str) args = parser.parse_args() if not is_valid_args(args): print("Invalid arguments, run --help for help") exit(error_code.INVALID_ARGUMENT) if args.command == "add": try: commands.add(**vars(args)) except ValueError as v: print(str(v)) exit(error_code.ADD_FAIL) elif args.command == "rm": try: commands.rm(**vars(args)) except FileNotFoundError: print("No such note") exit(error_code.NO_NOTE) elif args.command == "ls": print(commands.ls(**vars(args)), end="")
def main(): if not sys.argv: raise InvalidUsageException() argv = sys.argv[1:] # chop off script name as first arg try: command = argv[0] except IndexError: raise InvalidUsageException() if command == '--help': usage() elif argv[-1] == '--help': usage(command) elif command == 'init': try: repo_name = argv[1] except IndexError: raise InvalidUsageException('repo_name is required.') commands.init(repo_name) elif command == 'switch': try: repo_name = argv[1] except IndexError: raise InvalidUsageException('repo_name is required.') commands.switch(repo_name) elif command == 'add-remote': try: repo_uri = argv[1] except IndexError: raise InvalidUsageException('repo_uri is required.') try: remote_name = argv[2] except IndexError: remote_name = None commands.add_remote(repo_uri, remote_name=remote_name) elif command == 'drop-remote': try: remote_name = argv[1] except IndexError: raise InvalidUsageException('remote_name is required.') commands.drop_remote(remote_name) elif not active_repo: raise InvalidUsageException('no active repository, must init or switch to a repository.') elif command == 'ls': flags = _parse_flags(argv[1:]) commands.ls(tags=flags['tags'], neg_tags=flags['neg_tags']) elif command == 'add': try: description = argv[1] except IndexError: raise InvalidUsageException('Task description is required.') flags = _parse_flags(argv[2:]) if flags['neg_tags']: raise InvalidUsageException('Negative tags not valid when adding task.') for tag in flags['tags']: if tag in reserved_tags: raise InvalidUsageException('That tag is reserved. The following tags are automatically attached to tasks: %s.' % ', '.join(reserved_tags)) commands.add(description, priority=flags['priority'], tags=flags['tags']) elif command == 'mod': try: id = argv[1] except IndexError: raise InvalidUsageException('id is required.') flags = _parse_flags(argv[2:]) for tag in flags['tags'] + flags['neg_tags']: if tag in reserved_tags: raise InvalidUsageException('That tag is reserved. The following tags are automatically attached to tasks: %s.' % ', '.join(reserved_tags)) commands.mod(id, priority=flags['priority'], tags=flags['tags'], neg_tags=flags['neg_tags']) elif command == 'edit': try: id = argv[1] except IndexError: raise InvalidUsageException('id is required.') flags = _parse_flags(argv[2:]) if flags['priority'] or flags['tags'] or flags['neg_tags']: raise InvalidUsageException('Invalid options specified.') commands.edit(id) elif command == 'start': try: id = argv[1] except IndexError: raise InvalidUsageException('id is required.') flags = _parse_flags(argv[2:]) if flags['priority'] or flags['tags'] or flags['neg_tags']: raise InvalidUsageException('Invalid options specified.') commands.start(id) elif command == 'stop': try: id = argv[1] except IndexError: raise InvalidUsageException('id is required.') flags = _parse_flags(argv[2:]) if flags['priority'] or flags['tags'] or flags['neg_tags']: raise InvalidUsageException('Invalid options specified.') commands.stop(id) elif command == 'finish': try: id = argv[1] except IndexError: raise InvalidUsageException('id is required.') flags = _parse_flags(argv[2:]) if flags['priority'] or flags['tags'] or flags['neg_tags']: raise InvalidUsageException('Invalid options specified.') commands.finish(id) elif command == 'rm': try: id = argv[1] except IndexError: raise InvalidUsageException('id is required.') flags = _parse_flags(argv[2:]) if flags['priority'] or flags['tags'] or flags['neg_tags']: raise InvalidUsageException('Invalid options specified.') commands.rm(id) else: raise InvalidUsageException('Unrecognized command: %s.' % command)
def on_ls(bot, update): path = update.message.text[3:].strip() user = update.message.from_user['username'] bot.sendMessage(update.message.chat_id, text='<pre>%s</pre>' % ls(user, path), parse_mode='HTML')