[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