Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: tools/pretty_sln.py

Issue 1454433002: Python 3 compatibility Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: Rebase with master (4ec6c4e3a94bd04a6da2858163d40b2429b8aad1) Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2012 Google Inc. All rights reserved. 3 # Copyright (c) 2012 Google Inc. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Prints the information in a sln file in a diffable way. 7 """Prints the information in a sln file in a diffable way.
8 8
9 It first outputs each projects in alphabetical order with their 9 It first outputs each projects in alphabetical order with their
10 dependencies. 10 dependencies.
11 11
12 Then it outputs a possible build order. 12 Then it outputs a possible build order.
13 """ 13 """
14 14
15 from __future__ import print_function
16
15 __author__ = 'nsylvain (Nicolas Sylvain)' 17 __author__ = 'nsylvain (Nicolas Sylvain)'
16 18
17 import os 19 import os
18 import re 20 import re
19 import sys 21 import sys
20 import pretty_vcproj 22 import pretty_vcproj
21 23
22 def BuildProject(project, built, projects, deps): 24 def BuildProject(project, built, projects, deps):
23 # if all dependencies are done, we can build it, otherwise we try to build the 25 # if all dependencies are done, we can build it, otherwise we try to build the
24 # dependency. 26 # dependency.
25 # This is not infinite-recursion proof. 27 # This is not infinite-recursion proof.
26 for dep in deps[project]: 28 for dep in deps[project]:
27 if dep not in built: 29 if dep not in built:
28 BuildProject(dep, built, projects, deps) 30 BuildProject(dep, built, projects, deps)
29 print project 31 print(project)
30 built.append(project) 32 built.append(project)
31 33
32 def ParseSolution(solution_file): 34 def ParseSolution(solution_file):
33 # All projects, their clsid and paths. 35 # All projects, their clsid and paths.
34 projects = dict() 36 projects = dict()
35 37
36 # A list of dependencies associated with a project. 38 # A list of dependencies associated with a project.
37 dependencies = dict() 39 dependencies = dict()
38 40
39 # Regular expressions that matches the SLN format. 41 # Regular expressions that matches the SLN format.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 for dep in dependencies[project]: 95 for dep in dependencies[project]:
94 # Look for the project name matching this cldis 96 # Look for the project name matching this cldis
95 for project_info in projects: 97 for project_info in projects:
96 if projects[project_info][1] == dep: 98 if projects[project_info][1] == dep:
97 new_dep_array.append(project_info) 99 new_dep_array.append(project_info)
98 dependencies[project] = sorted(new_dep_array) 100 dependencies[project] = sorted(new_dep_array)
99 101
100 return (projects, dependencies) 102 return (projects, dependencies)
101 103
102 def PrintDependencies(projects, deps): 104 def PrintDependencies(projects, deps):
103 print "---------------------------------------" 105 print("---------------------------------------")
104 print "Dependencies for all projects" 106 print("Dependencies for all projects")
105 print "---------------------------------------" 107 print("---------------------------------------")
106 print "-- --" 108 print("-- --")
107 109
108 for (project, dep_list) in sorted(deps.items()): 110 for (project, dep_list) in sorted(deps.items()):
109 print "Project : %s" % project 111 print("Project : %s" % project)
110 print "Path : %s" % projects[project][0] 112 print("Path : %s" % projects[project][0])
111 if dep_list: 113 if dep_list:
112 for dep in dep_list: 114 for dep in dep_list:
113 print " - %s" % dep 115 print(" - %s" % dep)
114 print "" 116 print("")
115 117
116 print "-- --" 118 print("-- --")
117 119
118 def PrintBuildOrder(projects, deps): 120 def PrintBuildOrder(projects, deps):
119 print "---------------------------------------" 121 print("---------------------------------------")
120 print "Build order " 122 print("Build order ")
121 print "---------------------------------------" 123 print("---------------------------------------")
122 print "-- --" 124 print("-- --")
123 125
124 built = [] 126 built = []
125 for (project, _) in sorted(deps.items()): 127 for (project, _) in sorted(deps.items()):
126 if project not in built: 128 if project not in built:
127 BuildProject(project, built, projects, deps) 129 BuildProject(project, built, projects, deps)
128 130
129 print "-- --" 131 print("-- --")
130 132
131 def PrintVCProj(projects): 133 def PrintVCProj(projects):
132 134
133 for project in projects: 135 for project in projects:
134 print "-------------------------------------" 136 print("-------------------------------------")
135 print "-------------------------------------" 137 print("-------------------------------------")
136 print project 138 print(project)
137 print project 139 print(project)
138 print project 140 print(project)
139 print "-------------------------------------" 141 print("-------------------------------------")
140 print "-------------------------------------" 142 print("-------------------------------------")
141 143
142 project_path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[1]), 144 project_path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[1]),
143 projects[project][2])) 145 projects[project][2]))
144 146
145 pretty = pretty_vcproj 147 pretty = pretty_vcproj
146 argv = [ '', 148 argv = [ '',
147 project_path, 149 project_path,
148 '$(SolutionDir)=%s\\' % os.path.dirname(sys.argv[1]), 150 '$(SolutionDir)=%s\\' % os.path.dirname(sys.argv[1]),
149 ] 151 ]
150 argv.extend(sys.argv[3:]) 152 argv.extend(sys.argv[3:])
151 pretty.main(argv) 153 pretty.main(argv)
152 154
153 def main(): 155 def main():
154 # check if we have exactly 1 parameter. 156 # check if we have exactly 1 parameter.
155 if len(sys.argv) < 2: 157 if len(sys.argv) < 2:
156 print 'Usage: %s "c:\\path\\to\\project.sln"' % sys.argv[0] 158 print('Usage: %s "c:\\path\\to\\project.sln"' % sys.argv[0])
157 return 1 159 return 1
158 160
159 (projects, deps) = ParseSolution(sys.argv[1]) 161 (projects, deps) = ParseSolution(sys.argv[1])
160 PrintDependencies(projects, deps) 162 PrintDependencies(projects, deps)
161 PrintBuildOrder(projects, deps) 163 PrintBuildOrder(projects, deps)
162 164
163 if '--recursive' in sys.argv: 165 if '--recursive' in sys.argv:
164 PrintVCProj(projects) 166 PrintVCProj(projects)
165 return 0 167 return 0
166 168
167 169
168 if __name__ == '__main__': 170 if __name__ == '__main__':
169 sys.exit(main()) 171 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698