| #!/usr/bin/env python |
| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import json |
| |
| from textwrap import TextWrapper |
| from grit.format.policy_templates.writers import template_writer |
| |
| |
| TEMPLATE_HEADER="""\ |
| // Policy template for Linux. |
| // Uncomment the policies you wish to activate and change their values to |
| // something useful for your case. The provided values are for reference only |
| // and do not provide meaningful defaults! |
| {""" |
| |
| |
| HEADER_DELIMETER="""\ |
| //-------------------------------------------------------------------------""" |
| |
| |
| def GetWriter(config): |
| '''Factory method for creating JsonWriter objects. |
| See the constructor of TemplateWriter for description of |
| arguments. |
| ''' |
| return JsonWriter(['linux'], config) |
| |
| |
| class JsonWriter(template_writer.TemplateWriter): |
| '''Class for generating policy files in JSON format (for Linux). The |
| generated files will define all the supported policies with example values |
| set for them. This class is used by PolicyTemplateGenerator to write .json |
| files. |
| ''' |
| |
| def PreprocessPolicies(self, policy_list): |
| return self.FlattenGroupsAndSortPolicies(policy_list) |
| |
| def WritePolicy(self, policy): |
| if policy['type'] == 'external': |
| # This type can only be set through cloud policy. |
| return |
| example_value_str = json.dumps(policy['example_value'], sort_keys=True) |
| |
| # Add comma to the end of the previous line. |
| if not self._first_written: |
| self._out[-2] += ',' |
| |
| line = ' // %s' % policy['caption'] |
| self._out.append(line) |
| self._out.append(HEADER_DELIMETER) |
| description = self._text_wrapper.wrap(policy['desc']) |
| self._out += description; |
| line = ' //"%s": %s' % (policy['name'], example_value_str) |
| self._out.append('') |
| self._out.append(line) |
| self._out.append('') |
| |
| self._first_written = False |
| |
| def BeginTemplate(self): |
| self._out.append(TEMPLATE_HEADER) |
| |
| def EndTemplate(self): |
| self._out.append('}') |
| |
| def Init(self): |
| self._out = [] |
| # The following boolean member is true until the first policy is written. |
| self._first_written = True |
| # Create the TextWrapper object once. |
| self._text_wrapper = TextWrapper( |
| initial_indent = ' // ', |
| subsequent_indent = ' // ', |
| break_long_words = False, |
| width = 80) |
| |
| def GetTemplateText(self): |
| return '\n'.join(self._out) |