# coding: utf-8 # Copyright: (c) 2019, Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # Make coding more python3-ish from __future__ import (absolute_import, division, print_function) __metaclass__ = type from jinja2 import Environment, DictLoader # Pylint doesn't understand Python3 namespace modules. from ..commands import Command # pylint: disable=relative-beyond-top-level PORTING_GUIDE_TEMPLATE = """ .. _porting_{{ ver }}_guide_core: ******************************* Ansible-core {{ ver }} Porting Guide ******************************* This section discusses the behavioral changes between ``ansible-core`` {{ prev_ver }} and ``ansible-core`` {{ ver }}. It is intended to assist in updating your playbooks, plugins and other parts of your Ansible infrastructure so they will work with this version of Ansible. We suggest you read this page along with `ansible-core Changelog for {{ ver }} `_ to understand what updates you may need to make. This document is part of a collection on porting. The complete list of porting guides can be found at :ref:`porting guides `. .. contents:: Topics Playbook ======== No notable changes Command Line ============ No notable changes Deprecated ========== No notable changes Modules ======= No notable changes Modules removed --------------- The following modules no longer exist: * No notable changes Deprecation notices ------------------- No notable changes Noteworthy module changes ------------------------- No notable changes Plugins ======= No notable changes Porting custom scripts ====================== No notable changes Networking ========== No notable changes """ # noqa for E501 (line length). # jinja2 is horrid about getting rid of extra newlines so we have to have a single line per # paragraph for proper wrapping to occur JINJA_ENV = Environment( loader=DictLoader({'porting_guide': PORTING_GUIDE_TEMPLATE, }), extensions=['jinja2.ext.i18n'], trim_blocks=True, lstrip_blocks=True, ) def generate_porting_guide(version): template = JINJA_ENV.get_template('porting_guide') version_list = version.split('.') version_list[-1] = str(int(version_list[-1]) - 1) previous_version = '.'.join(version_list) content = template.render(ver=version, prev_ver=previous_version) return content def write_guide(version, guide_content): filename = 'docs/docsite/rst/porting_guides/porting_guide_core_{0}.rst'.format(version) with open(filename, 'w') as out_file: out_file.write(guide_content) class PortingGuideCommand(Command): name = 'porting-guide' @classmethod def init_parser(cls, add_parser): parser = add_parser(cls.name, description="Generate a fresh porting guide template") parser.add_argument("--version", dest="version", type=str, required=True, action='store', help="Version of Ansible to write the porting guide for") @staticmethod def main(args): guide_content = generate_porting_guide(args.version) write_guide(args.version, guide_content) return 0