[packages/phpstorm-eap] phpstorm.py: update from 173.3942.13
glen
glen at pld-linux.org
Sat Dec 9 16:39:53 CET 2017
commit bd8fe9228a4d7d812abdb2d41b53ec616e82362f
Author: Elan Ruusamäe <glen at pld-linux.org>
Date: Sat Dec 9 17:31:50 2017 +0200
phpstorm.py: update from 173.3942.13
phpstorm.py | 140 ++++++++++++++++++++++++++++++------------------------------
1 file changed, 71 insertions(+), 69 deletions(-)
---
diff --git a/phpstorm.py b/phpstorm.py
index 8bcc892..762c677 100755
--- a/phpstorm.py
+++ b/phpstorm.py
@@ -1,105 +1,107 @@
#!/usr/bin/python2
# -*- coding: utf-8 -*-
-import os
import socket
import struct
import sys
+import os
import time
# see com.intellij.idea.SocketLock for the server side of this interface
-RUN_PATH = '/usr/lib/phpstorm/bin/phpstorm.sh'
+RUN_PATH = u'/usr/lib/phpstorm/bin/phpstorm.sh'
CONFIG_PATH = os.path.expanduser('~/.config/PhpStorm')
SYSTEM_PATH = os.path.expanduser('~/.cache/PhpStorm')
-args = []
-skip_next = False
-for i, arg in enumerate(sys.argv[1:]):
- if arg == '-h' or arg == '-?' or arg == '--help':
- print(('Usage:\n' +
- ' {0} -h |-? | --help\n' +
- ' {0} [-l|--line line] file[:line]\n' +
- ' {0} diff <left> <right>\n' +
- ' {0} merge <local> <remote> [base] <merged>').format(sys.argv[0]))
- exit(0)
- elif arg == 'diff' and i == 0:
- args.append(arg)
- elif arg == 'merge' and i == 0:
- args.append(arg)
- elif arg == '-l' or arg == '--line':
- args.append(arg)
- skip_next = True
- elif skip_next:
- args.append(arg)
- skip_next = False
- else:
- if ':' in arg:
- file_path, line_number = arg.rsplit(':', 1)
- if line_number.isdigit():
- args.append('-l')
- args.append(line_number)
- args.append(os.path.abspath(file_path))
- else:
- args.append(os.path.abspath(arg))
+
+def print_usage(cmd):
+ print(('Usage:\n' +
+ ' {0} -h | -? | --help\n' +
+ ' {0} [project_dir]\n' +
+ ' {0} [-l|--line line] [project_dir|--temp-project] file[:line]\n' +
+ ' {0} diff <left> <right>\n' +
+ ' {0} merge <local> <remote> [base] <merged>').format(cmd))
+
+
+def process_args(argv):
+ args = []
+
+ skip_next = False
+ for i, arg in enumerate(argv[1:]):
+ if arg == '-h' or arg == '-?' or arg == '--help':
+ print_usage(argv[0])
+ exit(0)
+ elif i == 0 and (arg == 'diff' or arg == 'merge' or arg == '--temp-project'):
+ args.append(arg)
+ elif arg == '-l' or arg == '--line':
+ args.append(arg)
+ skip_next = True
+ elif skip_next:
+ args.append(arg)
+ skip_next = False
else:
- args.append(os.path.abspath(arg))
+ path = arg
+ if ':' in arg:
+ file_path, line_number = arg.rsplit(':', 1)
+ if line_number.isdigit():
+ args.append('-l')
+ args.append(line_number)
+ path = file_path
+ args.append(os.path.abspath(path))
+ return args
-def launch_with_port(port, token):
- found = False
+
+def try_activate_instance(args):
+ port_path = os.path.join(CONFIG_PATH, 'port')
+ token_path = os.path.join(SYSTEM_PATH, 'token')
+ if not (os.path.exists(port_path) and os.path.exists(token_path)):
+ return False
+
+ with open(port_path) as pf:
+ port = int(pf.read())
+ with open(token_path) as tf:
+ token = tf.read()
s = socket.socket()
s.settimeout(0.3)
try:
s.connect(('127.0.0.1', port))
- except:
+ except (socket.error, IOError):
return False
+ found = False
while True:
try:
- path_len = struct.unpack(">h", s.recv(2))[0]
- path = s.recv(path_len)
+ path_len = struct.unpack('>h', s.recv(2))[0]
+ path = s.recv(path_len).decode('utf-8')
if os.path.abspath(path) == os.path.abspath(CONFIG_PATH):
found = True
break
- except:
- break
+ except (socket.error, IOError):
+ return False
if found:
- if args:
- cmd = "activate " + token + '\0' + os.getcwd() + "\0" + "\0".join(args)
- encoded = struct.pack(">h", len(cmd)) + cmd
- s.send(encoded)
- time.sleep(0.5) # don't close socket immediately
+ cmd = 'activate ' + token + '\0' + os.getcwd() + '\0' + '\0'.join(args)
+ if sys.version_info.major >= 3: cmd = cmd.encode('utf-8')
+ encoded = struct.pack('>h', len(cmd)) + cmd
+ s.send(encoded)
+ time.sleep(0.5) # don't close the socket immediately
return True
return False
-port_path = os.path.join(CONFIG_PATH, 'port')
-token_path = os.path.join(SYSTEM_PATH, 'token')
-if os.path.exists(port_path) and os.path.exists(token_path):
- try:
- f = open(port_path)
- port = int(f.read())
- f.close()
-
- f = open(token_path)
- token = f.read()
- f.close()
-
- launch_with_port(port, token)
- except:
- type, value, traceback = sys.exc_info()
- print('No IDE instance has been found. New one will be started.') # todo error
-else:
- print('No IDE instance has been found. New one will be started.')
- if sys.platform == "darwin":
- # OS X: RUN_PATH is *.app path
- if len(args):
- args.insert(0, "--args")
- os.execvp("open", ["-a", RUN_PATH] + args)
+def start_new_instance(args):
+ if sys.platform == 'darwin':
+ if len(args) > 0:
+ args.insert(0, '--args')
+ os.execvp('open', ['-a', RUN_PATH] + args)
else:
- # Unix common
- os.execv(RUN_PATH, [RUN_PATH] + args)
+ bin_file = os.path.split(RUN_PATH)[1]
+ os.execv(RUN_PATH, [bin_file] + args)
+
+
+ide_args = process_args(sys.argv)
+if not try_activate_instance(ide_args):
+ start_new_instance(ide_args)
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/phpstorm-eap.git/commitdiff/bd8fe9228a4d7d812abdb2d41b53ec616e82362f
More information about the pld-cvs-commit
mailing list