def _SetupServer( self ): server_port = utils.GetUnusedLocalhostPort() with tempfile.NamedTemporaryFile( delete = False ) as options_file: self._temp_options_filename = options_file.name json.dump( dict( self._user_options ), options_file ) options_file.flush() args = [ utils.PathToPythonInterpreter(), _PathToServerScript(), '--port={0}'.format( server_port ), '--options_file={0}'.format( options_file.name ), '--log={0}'.format( self._user_options[ 'server_log_level' ] ), '--idle_suicide_seconds={0}'.format( SERVER_IDLE_SUICIDE_SECONDS )] if not self._user_options[ 'server_use_vim_stdout' ]: filename_format = os.path.join( utils.PathToTempDir(), 'server_{port}_{std}.log' ) self._server_stdout = filename_format.format( port = server_port, std = 'stdout' ) self._server_stderr = filename_format.format( port = server_port, std = 'stderr' ) args.append('--stdout={0}'.format( self._server_stdout )) args.append('--stderr={0}'.format( self._server_stderr )) if self._user_options[ 'server_keep_logfiles' ]: args.append('--keep_logfiles') self._server_popen = utils.SafePopen( args, stdout = PIPE, stderr = PIPE) BaseRequest.server_location = 'http://localhost:' + str( server_port ) self._NotifyUserIfServerCrashed()
def _SetupServer(self): server_port = utils.GetUnusedLocalhostPort() with tempfile.NamedTemporaryFile(delete=False) as options_file: self._temp_options_filename = options_file.name json.dump(dict(self._user_options), options_file) args = [ utils.PathToPythonInterpreter(), _PathToServerScript(), '--port={0}'.format(server_port), '--options_file={0}'.format(options_file.name), '--log={0}'.format(self._user_options['server_log_level']), '--idle_suicide_seconds={0}'.format( self._user_options['server_idle_suicide_seconds']) ] BaseRequest.server_location = 'http://localhost:' + str( server_port) if self._user_options['server_use_vim_stdout']: self._server_popen = subprocess.Popen(args) else: filename_format = os.path.join(utils.PathToTempDir(), 'server_{port}_{std}.log') self._server_stdout = filename_format.format(port=server_port, std='stdout') self._server_stderr = filename_format.format(port=server_port, std='stderr') with open(self._server_stderr, 'w') as fstderr: with open(self._server_stdout, 'w') as fstdout: self._server_popen = subprocess.Popen(args, stdout=fstdout, stderr=fstderr) self._NotifyUserIfServerCrashed()
def _SetupServer(self): server_port = utils.GetUnusedLocalhostPort() # The temp options file is deleted by ycmd during startup with tempfile.NamedTemporaryFile(delete=False) as options_file: hmac_secret = os.urandom(HMAC_SECRET_LENGTH) options_dict = dict(self._user_options) options_dict['hmac_secret'] = base64.b64encode(hmac_secret) json.dump(options_dict, options_file) options_file.flush() args = [ utils.PathToPythonInterpreter(), _PathToServerScript(), '--port={0}'.format(server_port), '--options_file={0}'.format(options_file.name), '--log={0}'.format(self._user_options['server_log_level']), '--idle_suicide_seconds={0}'.format( SERVER_IDLE_SUICIDE_SECONDS) ] if not self._user_options['server_use_vim_stdout']: filename_format = os.path.join(utils.PathToTempDir(), 'server_{port}_{std}.log') self._server_stdout = filename_format.format(port=server_port, std='stdout') self._server_stderr = filename_format.format(port=server_port, std='stderr') args.append('--stdout={0}'.format(self._server_stdout)) args.append('--stderr={0}'.format(self._server_stderr)) if self._user_options['server_keep_logfiles']: args.append('--keep_logfiles') self._server_popen = utils.SafePopen(args, stdout=PIPE, stderr=PIPE) BaseRequest.server_location = 'http://localhost:' + str( server_port) BaseRequest.hmac_secret = hmac_secret self._NotifyUserIfServerCrashed()
def _SetupServer(self): server_port = utils.GetUnusedLocalhostPort() with tempfile.NamedTemporaryFile(delete=False) as options_file: self._temp_options_filename = options_file.name json.dump(dict(self._user_options), options_file) args = [ utils.PathToPythonInterpreter(), _PathToServerScript(), '--port={0}'.format(server_port), '--options_file={0}'.format(options_file.name), '--log={0}'.format(self._user_options['server_log_level']), '--idle_suicide_seconds={0}'.format( SERVER_IDLE_SUICIDE_SECONDS) ] BaseRequest.server_location = 'http://localhost:' + str( server_port) if self._user_options['server_use_vim_stdout']: self._server_popen = subprocess.Popen(args) else: filename_format = os.path.join(utils.PathToTempDir(), 'server_{port}_{std}.log') self._server_stdout = filename_format.format(port=server_port, std='stdout') self._server_stderr = filename_format.format(port=server_port, std='stderr') # We need this on Windows otherwise bad things happen. See issue #637. stdin = subprocess.PIPE if utils.OnWindows() else None with open(self._server_stderr, 'w') as fstderr: with open(self._server_stdout, 'w') as fstdout: self._server_popen = subprocess.Popen(args, stdin=stdin, stdout=fstdout, stderr=fstderr) self._NotifyUserIfServerCrashed()