def setup_message_compiler(): # Look for msgfmt try: subprocess.Popen(['msgfmt', '-h'], stdout=subprocess.PIPE) except OSError: import babel.messages.frontend return (babel.messages.frontend.CommandLineInterface( ), 'pybabel compile -D %(domain)s -d locale -i %(pofile)s -l %(lang)s') else: return (MsgFmt( ), 'msgfmt -c -o locale/%(lang)s/LC_MESSAGES/%(domain)s.mo %(pofile)s')
def collect(self): if subprocess is None: self.log.error('Unable to import kitchen') return {} scripts_path = self.config['scripts_path'] if not os.access(scripts_path, os.R_OK): return None for script in os.listdir(scripts_path): absolutescriptpath = os.path.join(scripts_path, script) executable = os.access(absolutescriptpath, os.X_OK) is_file = os.path.isfile(absolutescriptpath) if is_file: if not executable: self.log.info("%s is not executable" % absolutescriptpath) continue else: # Don't bother logging skipped non-file files (typically # directories) continue out = None self.log.debug("Executing %s" % absolutescriptpath) try: proc = subprocess.Popen([absolutescriptpath], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (out, err) = proc.communicate() except subprocess.CalledProcessError, e: self.log.error("%s error launching: %s; skipping" % (absolutescriptpath, e)) continue if proc.returncode: self.log.error("%s return exit value %s; skipping" % (absolutescriptpath, proc.returncode)) if not out: self.log.info("%s return no output" % absolutescriptpath) continue if err: self.log.error("%s return error output: %s" % (absolutescriptpath, err)) # Use filter to remove empty lines of output for line in filter(None, out.split('\n')): name, value = line.split() floatprecision = 0 if "." in value: floatprecision = self.config['floatprecision'] self.publish(name, value, floatprecision)
def run(self, args): cmd = subprocess.Popen(args, shell=False) cmd.wait()