0
|
1 import argparse
|
|
2 import logging
|
|
3 import os.path
|
|
4 from logutil import setup_logging
|
|
5 from vsutil import SolutionCache
|
|
6
|
|
7
|
|
8 logger = logging.getLogger(__name__)
|
|
9
|
|
10
|
|
11 def main(args=None):
|
|
12 parser = argparse.ArgumentParser()
|
|
13 parser.add_argument('solution',
|
|
14 help="The path to the Visual Studio solution file.")
|
|
15 parser.add_argument('-p', '--project',
|
|
16 help="Only list files in the named project.")
|
|
17 parser.add_argument('-c', '--cache',
|
|
18 help="Use a cache file to store the file list.")
|
|
19 parser.add_argument('-v', '--verbose',
|
|
20 action='store_true',
|
|
21 help="Show verbose information.")
|
|
22 args = parser.parse_args(args)
|
|
23 setup_logging(args.verbose)
|
|
24
|
|
25 cache, _ = SolutionCache.load_or_rebuild(args.solution, args.cache)
|
|
26 slnobj = cache.slnobj
|
|
27
|
|
28 projs = slnobj.projects
|
|
29 if args.project:
|
|
30 projs = [slnobj.find_project_by_name(args.project)]
|
|
31 projs = list(filter(lambda p: not p.is_folder, projs))
|
|
32
|
|
33 for p in projs:
|
|
34 ig = p.defaultitemgroup()
|
|
35 for i in ig.get_source_items():
|
|
36 file_path = os.path.abspath(os.path.join(p.absdirpath, i.include))
|
|
37 print(file_path)
|
|
38
|
|
39
|
|
40 if __name__ == '__main__':
|
|
41 main()
|