28 input("Press enter to continue...") # secok |
28 input("Press enter to continue...") # secok |
29 |
29 |
30 sys.exit(rcode) |
30 sys.exit(rcode) |
31 |
31 |
32 |
32 |
33 def pipInstall(packageName): |
33 def pipInstall(packageName, proxy): |
34 """ |
34 """ |
35 Install the given package via pip. |
35 Install the given package via pip. |
36 |
36 |
37 @param packageName name of the package to be installed |
37 @param packageName name of the package to be installed |
38 @type str |
38 @type str |
|
39 @param proxy URL of a network proxy to be used |
|
40 @type str |
39 @return flag indicating a successful installation |
41 @return flag indicating a successful installation |
40 @rtype bool |
42 @rtype bool |
41 """ |
43 """ |
42 ok = False |
44 ok = False |
43 exitCode = subprocess.run( # secok |
45 args = [ |
44 [ |
46 sys.executable, |
45 sys.executable, |
47 "-m", |
46 "-m", |
48 "pip", |
47 "pip", |
49 "install", |
48 "install", |
50 "--prefer-binary", |
49 "--prefer-binary", |
51 "--upgrade", |
50 "--upgrade", |
52 ] |
51 packageName, |
53 if proxy: |
52 ] |
54 args.append(proxy) |
53 ).returncode |
55 args.append(packageName) |
|
56 exitCode = subprocess.run(args).returncode # secok |
54 ok = exitCode == 0 |
57 ok = exitCode == 0 |
55 |
58 |
56 return ok |
59 return ok |
57 |
60 |
58 |
61 |
90 "pyenchant", |
93 "pyenchant", |
91 "wheel", |
94 "wheel", |
92 "esprima", |
95 "esprima", |
93 ) |
96 ) |
94 |
97 |
|
98 if "--proxy" in sys.argv: |
|
99 proxyIndex = sys.argv.index("--proxy") |
|
100 proxy = sys.argv[proxyIndex + 1] |
|
101 del sys.argv[proxyIndex : proxyIndex + 2] |
|
102 else: |
|
103 proxy = None |
|
104 |
95 packages = [] |
105 packages = [] |
96 if len(sys.argv) == 2: |
106 if len(sys.argv) == 2: |
97 if sys.argv[1] == "--all": |
107 if sys.argv[1] == "--all": |
98 packages = requiredPackages + optionalPackages |
108 packages = requiredPackages + optionalPackages |
99 elif sys.argv[1] == "--required": |
109 elif sys.argv[1] == "--required": |
101 elif sys.argv[1] == "--optional": |
111 elif sys.argv[1] == "--optional": |
102 packages = optionalPackages |
112 packages = optionalPackages |
103 |
113 |
104 if not packages: |
114 if not packages: |
105 print("Usage:") |
115 print("Usage:") |
106 print(" install-dependencies --all | --optional | --required") |
116 print(" install-dependencies [--proxy url] --all | --optional | --required") |
107 print("where:") |
117 print("where:") |
108 print(" --all install all dependencies") |
118 print(" --all install all dependencies") |
109 print(" --optional install all optional dependencies") |
119 print(" --optional install all optional dependencies") |
110 print(" --required install all required dependencies") |
120 print(" --required install all required dependencies") |
111 |
121 |
112 exit(42) |
122 exit(42) |
113 |
123 |
114 failedPackages = [] |
124 failedPackages = [] |
115 for package in packages: |
125 for package in packages: |
116 ok = pipInstall(package) |
126 ok = pipInstall(package, proxy) |
117 if not ok: |
127 if not ok: |
118 failedPackages.append(package) |
128 failedPackages.append(package) |
119 |
129 |
120 print() |
130 print() |
121 print("Installation Summary") |
131 print("Installation Summary") |