Show More
@@ -0,0 +1,61 b'' | |||
|
1 | """ | |
|
2 | cli-specific implementation of process utilities. | |
|
3 | ||
|
4 | cli - Common Language Infrastructure for IronPython. Code | |
|
5 | can run on any operating system. Check os.name for os- | |
|
6 | specific settings. | |
|
7 | ||
|
8 | This file is only meant to be imported by process.py, not by end-users. | |
|
9 | """ | |
|
10 | ||
|
11 | # Import cli libraries: | |
|
12 | import clr | |
|
13 | import System | |
|
14 | ||
|
15 | # Import Python libraries: | |
|
16 | import os | |
|
17 | ||
|
18 | # Import IPython libraries: | |
|
19 | from IPython.utils import py3compat | |
|
20 | from ._process_common import arg_split | |
|
21 | ||
|
22 | def _find_cmd(cmd): | |
|
23 | """Find the full path to a command using which.""" | |
|
24 | os_path_sep = ":" if os.name == "posix" else ";" | |
|
25 | paths = System.Environment.GetEnvironmentVariable("PATH").Split(os_path_sep) | |
|
26 | for path in paths: | |
|
27 | filename = os.path.join(path, cmd) | |
|
28 | if System.IO.File.Exists(filename): | |
|
29 | return py3compat.bytes_to_str(filename) | |
|
30 | raise OSError("command %r not found" % cmd) | |
|
31 | ||
|
32 | def system(cmd): | |
|
33 | """ | |
|
34 | system(cmd) should work in a cli environment on Mac OSX, Linux, | |
|
35 | and Windows | |
|
36 | """ | |
|
37 | psi = System.Diagnostics.ProcessStartInfo(cmd) | |
|
38 | psi.RedirectStandardOutput = True | |
|
39 | psi.RedirectStandardError = True | |
|
40 | psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal | |
|
41 | psi.UseShellExecute = False | |
|
42 | # Start up process: | |
|
43 | reg = System.Diagnostics.Process.Start(psi) | |
|
44 | ||
|
45 | def getoutput(cmd): | |
|
46 | """ | |
|
47 | getoutput(cmd) should work in a cli environment on Mac OSX, Linux, | |
|
48 | and Windows | |
|
49 | """ | |
|
50 | psi = System.Diagnostics.ProcessStartInfo(cmd) | |
|
51 | psi.RedirectStandardOutput = True | |
|
52 | psi.RedirectStandardError = True | |
|
53 | psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal | |
|
54 | psi.UseShellExecute = False | |
|
55 | # Start up process: | |
|
56 | reg = System.Diagnostics.Process.Start(psi) | |
|
57 | myOutput = reg.StandardOutput | |
|
58 | output = myOutput.ReadToEnd() | |
|
59 | myError = reg.StandardError | |
|
60 | error = myError.ReadToEnd() | |
|
61 | return output |
@@ -45,7 +45,10 b' import time' | |||
|
45 | 45 | # this is used as a bitmask to extract future-related code flags. |
|
46 | 46 | PyCF_MASK = functools.reduce(operator.or_, |
|
47 | 47 | (getattr(__future__, fname).compiler_flag |
|
48 |
for fname in __future__.all_feature_names |
|
|
48 | for fname in __future__.all_feature_names | |
|
49 | if (hasattr(__future__, fname) and | |
|
50 | hasattr(getattr(__future__, fname), "compiler_flag"))), | |
|
51 | 0) | |
|
49 | 52 | |
|
50 | 53 | #----------------------------------------------------------------------------- |
|
51 | 54 | # Local utilities |
@@ -66,7 +66,10 b' Notes:' | |||
|
66 | 66 | # Imports |
|
67 | 67 | #----------------------------------------------------------------------------- |
|
68 | 68 | |
|
69 | import __main__ | |
|
69 | try: | |
|
70 | import __main__ | |
|
71 | except ImportError: | |
|
72 | pass | |
|
70 | 73 | import glob |
|
71 | 74 | import inspect |
|
72 | 75 | import itertools |
@@ -147,7 +147,8 b' HOME = os.path.realpath(HOME)' | |||
|
147 | 147 | USER = py3compat.str_to_unicode(os.environ.get("USER",'')) |
|
148 | 148 | HOSTNAME = py3compat.str_to_unicode(socket.gethostname()) |
|
149 | 149 | HOSTNAME_SHORT = HOSTNAME.split(".")[0] |
|
150 | ROOT_SYMBOL = "#" if (os.name=='nt' or os.getuid()==0) else "$" | |
|
150 | ||
|
151 | ROOT_SYMBOL = "#" if (os.name=='nt' or sys.platform=='cli' or os.getuid()==0) else "$" | |
|
151 | 152 | |
|
152 | 153 | prompt_abbreviations = { |
|
153 | 154 | # Prompt/history count |
@@ -18,6 +18,8 b' try:' | |||
|
18 | 18 | import ctypes |
|
19 | 19 | except ImportError: |
|
20 | 20 | ctypes = None |
|
21 | except SystemError: | |
|
22 | ctypes = None | |
|
21 | 23 | import os |
|
22 | 24 | import sys |
|
23 | 25 | from distutils.version import LooseVersion as V |
@@ -81,7 +81,7 b' class IOStream:' | |||
|
81 | 81 | pass |
|
82 | 82 | |
|
83 | 83 | # setup stdin/stdout/stderr to sys.stdin/sys.stdout/sys.stderr |
|
84 |
devnull = open(os.devnull, ' |
|
|
84 | devnull = open(os.devnull, 'w') | |
|
85 | 85 | stdin = IOStream(sys.stdin, fallback=devnull) |
|
86 | 86 | stdout = IOStream(sys.stdout, fallback=devnull) |
|
87 | 87 | stderr = IOStream(sys.stderr, fallback=devnull) |
@@ -22,11 +22,12 b' import shlex' | |||
|
22 | 22 | |
|
23 | 23 | # Our own |
|
24 | 24 | if sys.platform == 'win32': |
|
25 |
from ._process_win32 import _find_cmd, system, getoutput, |
|
|
25 | from ._process_win32 import _find_cmd, system, getoutput, arg_split | |
|
26 | elif sys.platform == 'cli': | |
|
27 | from ._process_cli import _find_cmd, system, getoutput, arg_split | |
|
26 | 28 | else: |
|
27 | 29 | from ._process_posix import _find_cmd, system, getoutput, arg_split |
|
28 | 30 | |
|
29 | ||
|
30 | 31 | from ._process_common import getoutputerror, get_output_error_code, process_handler |
|
31 | 32 | from . import py3compat |
|
32 | 33 |
General Comments 0
You need to be logged in to leave comments.
Login now