1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- # 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."""
- from gyp import easy_xml
- class Writer:
- """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"
- )
|