Source code for skelpy.makers.docs

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""This module defines :class:`DocMaker` class"""

from __future__ import absolute_import, print_function

import os

from . import settings
from .base import BaseMaker


[docs]class DocMaker(BaseMaker): """*Maker* class to create directories and configuration files for documentation ``DocMaker`` creates a directory named "*docs*" under the project's root directory. Below is the structure of the *docs* directory to be created:: project └── docs    ├── _build    ├── _static    ├── _templates    ├── conf.py    ├── index.rst    ├── make.bat    └── Makefile Args: projectDir (str): path of the project directory merge (bool): Whether to overlap docs directory if the directory already exists force (bool): whether to overwrite if the file with the same name already exists kwargs: extra keyword arguments """ def __init__(self, projectDir, merge, force, **kwargs): self.projectDir = projectDir self.docsDir = os.path.join(projectDir, 'docs') self.merge = merge self.force = force self.TITLE_SUFFIX = " Documentation" self._update_settings() def _update_settings(self): """update :attr:`maker.settings` dictionary""" doc_title = settings.get('projectName') + self.TITLE_SUFFIX info = { 'docsDir': self.docsDir, 'doc_title': doc_title, 'doc_title_line': '*' * len(doc_title), } settings.update(info) def _create_dirs(self): """create sub-directories""" dirs = [self.docsDir, os.path.join(self.docsDir, '_build'), os.path.join(self.docsDir, '_static'), os.path.join(self.docsDir, '_templates')] for d in dirs: if not self.create_dir(d): return False return True def _create_config_files(self): """create general configuration files""" config_files = { 'sphinx_conf': 'conf.py', 'sphinx_index': 'index.rst', 'Makefile': 'Makefile', 'make_bat': 'make.bat', } for tpl, target in config_files.items(): config_file = os.path.join(self.docsDir, target) if not self.write_file(tpl, config_file): return False return True
[docs] def generate(self): """Worker method of :class:`DocMaker` Returns: bool: True if successful, False otherwise """ if not self._create_dirs(): return False return self._create_config_files()