def ask_bool(self, question, default=True): """ Ask the user for Y)es / N)o / Q)uit. If "Q" ist entered, this method will exit with RC=3. Else, the user's choice is returned. Note that the options --non-interactive and --defaults also influence the outcome. """ if self.script.options.yes: return True elif self.script.options.dry_run or not self.script.options.interactive: return default else: # Let the user decide choice = '*' while choice not in "YNAQ": choice = raw_input("%s? [%s)es, %s)o, a)ll yes, q)uit]: " % ( fmt.to_console(question), "yY"[int(default)], "Nn"[int(default)], )) choice = choice[:1].upper() or "NY"[int(default)] if choice == 'Q': self.quit() if choice == 'A': self.script.options.yes = True choice = 'Y' return choice == 'Y'
def format_item(self, item, defaults=None, stencil=None): """ Format an item. """ try: item_text = fmt.to_console(formatting.format_item(self.options.output_format, item, defaults)) except (NameError, ValueError, TypeError), exc: self.fatal("Trouble with formatting item %r\n\n FORMAT = %r\n\n REASON =" % (item, self.options.output_format), exc) raise # in --debug mode
def execute(self, proxy, method, args): """Execute given XMLRPC call.""" try: result = getattr(proxy, method)(raw_xml=self.options.xml, *tuple(args)) except xmlrpc.ERRORS as exc: self.LOG.error("While calling %s(%s): %s" % (method, ", ".join(repr(i) for i in args), exc)) self.return_code = error.EX_NOINPUT if "not find" in getattr(exc, "faultString", "") else error.EX_DATAERR else: if not self.options.quiet: if self.options.repr: # Pretty-print if requested, or it's a collection and not a scalar result = pformat(result) elif hasattr(result, "__iter__"): result = '\n'.join(i if isinstance(i, basestring) else pformat(i) for i in result) print(fmt.to_console(result))
if self.anneal(mode, matches, orig_matches): matches.sort(key=sort_key, reverse=self.options.reverse_sort) if selection: matches = matches[selection[0] - 1:selection[1]] if not matches: # Think "404 NOT FOUND", but then exit codes should be < 256 self.return_code = 44 # Build header stencil stencil = None if self.options.column_headers and self.plain_output_format and matches: stencil = fmt.to_console( formatting.format_item(self.options.output_format, matches[0], self.FORMATTER_DEFAULTS)).split('\t') # Tee to ncurses view, if requested if self.options.tee_view and (self.options.to_view or self.options.view_only): self.show_in_view(view, matches) # Generate summary? summary = FieldStatistics(len(matches)) if self.options.stats or self.options.summary: for field in self.get_output_fields(): try: 0 + getattr(matches[0], field) except (TypeError, ValueError, IndexError): summary.total[field] = ''
proxy._set_mappings() # Make the call try: result = getattr(proxy, method)(raw_xml=self.options.xml, *tuple(args)) except xmlrpc.ERRORS, exc: self.LOG.error("While calling %s(%s): %s" % (method, ", ".join(repr(i) for i in args), exc)) self.return_code = error.EX_NOINPUT if "not find" in getattr(exc, "faultString", "") else error.EX_DATAERR else: if not self.options.quiet: if self.options.repr: # Pretty-print if requested, or it's a collection and not a scalar result = pformat(result) elif hasattr(result, "__iter__"): result = '\n'.join(i if isinstance(i, basestring) else pformat(i) for i in result) print fmt.to_console(result) # XMLRPC stats self.LOG.debug("XMLRPC stats: %s" % proxy) def run(): #pragma: no cover """ The entry point. """ ScriptBase.setup() RtorrentXmlRpc().run() if __name__ == "__main__": run()
# possibly find more matches. # view = config.engine.view(self.options.from_view, matcher) matches = list(view.items()) matches.sort(key=sort_key, reverse=self.options.reverse_sort) if selection: matches = matches[selection[0]-1:selection[1]] if not matches: # Think "404 NOT FOUND", but then exit codes should be < 256 self.return_code = 44 # Build header stencil stencil = None if self.options.column_headers and self.plain_output_format and matches: stencil = fmt.to_console(formatting.format_item( self.options.output_format, matches[0], self.FORMATTER_DEFAULTS)).split('\t') # Tee to ncurses view, if requested if self.options.tee_view and (self.options.to_view or self.options.view_only): self.show_in_view(view, matches) # Generate summary? summary = FieldStatistics(len(matches)) if self.options.stats or self.options.summary: for field in self.get_output_fields(): try: 0 + getattr(matches[0], field) except (TypeError, ValueError, IndexError): summary.total[field] = '' else: for item in matches:
*tuple(args)) except xmlrpc.ERRORS, exc: self.LOG.error("While calling %s(%s): %s" % (method, ", ".join(repr(i) for i in args), exc)) self.return_code = error.EX_NOINPUT if "not find" in getattr( exc, "faultString", "") else error.EX_DATAERR else: if not self.options.quiet: if self.options.repr: # Pretty-print if requested, or it's a collection and not a scalar result = pformat(result) elif hasattr(result, "__iter__"): result = '\n'.join( i if isinstance(i, basestring) else pformat(i) for i in result) print fmt.to_console(result) # XMLRPC stats self.LOG.debug("XMLRPC stats: %s" % proxy) def run(): #pragma: no cover """ The entry point. """ ScriptBase.setup() RtorrentXmlRpc().run() if __name__ == "__main__": run()