| # Copyright (c) 2012 Google Inc. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Visual Studio project reader/writer.""" |
| |
| import gyp.common |
| import gyp.easy_xml as easy_xml |
| |
| |
| class Writer(object): |
| """Visual Studio XML tool file writer.""" |
| |
| def __init__(self, tool_file_path, name): |
| """Initializes the tool file. |
| |
| Args: |
| tool_file_path: Path to the tool file. |
| name: Name of the tool file. |
| """ |
| self.tool_file_path = tool_file_path |
| self.name = name |
| self.rules_section = ['Rules'] |
| |
| def AddCustomBuildRule(self, name, cmd, description, |
| additional_dependencies, |
| outputs, extensions): |
| """Adds a rule to the tool file. |
| |
| Args: |
| name: Name of the rule. |
| description: Description of the rule. |
| cmd: Command line of the rule. |
| additional_dependencies: other files which may trigger the rule. |
| outputs: outputs of the rule. |
| extensions: extensions handled by the rule. |
| """ |
| rule = ['CustomBuildRule', |
| {'Name': name, |
| 'ExecutionDescription': description, |
| 'CommandLine': cmd, |
| 'Outputs': ';'.join(outputs), |
| 'FileExtensions': ';'.join(extensions), |
| 'AdditionalDependencies': |
| ';'.join(additional_dependencies) |
| }] |
| self.rules_section.append(rule) |
| |
| def WriteIfChanged(self): |
| """Writes the tool file.""" |
| content = ['VisualStudioToolFile', |
| {'Version': '8.00', |
| 'Name': self.name |
| }, |
| self.rules_section |
| ] |
| easy_xml.WriteXmlIfChanged(content, self.tool_file_path, |
| encoding="Windows-1252") |