コード例 #1
0
ファイル: base_plugin.py プロジェクト: taliamax/krait
 def render_file(self):
     if self.file_location:
         self.main_file = kf.File(f'{self.file_location}/{self.file_name}')
     else:
         self.main_file = kf.File(
             f'src/{self.project_name.replace("-","_")}/{self.file_name}')
     self.rendered_file = \
         self.env.get_template(
             f'{self.name}-{self.file_name}.jinja2'
         ).render(**self.rendering_params)
     self.main_file.add_content(self.rendered_file)
     self.main_file.add_content('')  # Newline at end of file
     self.file_renderer.add_file(self.main_file)
コード例 #2
0
ファイル: vcs.py プロジェクト: taliamax/krait
 def render_ignorefile(self, ignore_file_name: str, **render_params: Any):
     self.file_renderer.output(f'Adding {ignore_file_name}...')
     self.ignore_file = kf.File(ignore_file_name)
     contents = self.env.get_template(f'{ignore_file_name}.jinja2').render(
         **render_params)
     self.ignore_file.add_content(contents)
     self.file_renderer.add_file(self.ignore_file)
コード例 #3
0
def create(
    project_name: str,
    author: str,
    email: str,
    linter: klint.BaseLinter,
    type_checker: ktype.BaseTypeChecker,
    automation: kauto.BaseAutomation,
    test_framework: ktest.BaseTestFramework,
    project_framework: kproj.BaseProjectFramework,
    directories: rndr.DirectoryRenderer,
    files: rndr.FileRenderer,
):
    '''
    Create a new python project with the specified options
    '''
    readme_file = kf.File('README.md', f'# {project_name}')
    setup_script = kf.SetupScript(project_name, author, email,
                                  project_framework, linter, type_checker,
                                  test_framework)
    setup_config = kf.SetupConfig(
        project_framework,
        linter,
        type_checker,
        test_framework,
    )
    manifest_file = kf.File('MANIFEST.in', 'graft src')
    makefile = kf.MakeFile(
        project_framework,
        linter,
        type_checker,
        test_framework,
    )

    files.add_file(readme_file)
    files.add_file(setup_script)
    files.add_file(setup_config)
    files.add_file(makefile)
    files.add_file(manifest_file)

    project_framework.render_file()
    test_framework.render_file()
    automation.render_file()

    directories.create_all()
    files.write_all()
コード例 #4
0
ファイル: test_frameworks.py プロジェクト: taliamax/krait
 def __init__(
     self,
     project_name: str,
     project_framework: pf.BaseProjectFramework,
     file_renderer: rndr.FileRenderer,
     dir_renderer: rndr.DirectoryRenderer
 ):
     super().__init__(project_name, file_renderer, dir_renderer)
     self.project_framework = project_framework
     self.name = ''
     self.rendering_params = {'project_name': project_name}
     dir_renderer.add_directory(Path('tests'))
     file_renderer.add_file(kf.File('tests/__init__.py'))
コード例 #5
0
 def __init__(
     self,
     project_name: str,
     file_renderer: rndr.FileRenderer,
     dir_renderer: rndr.DirectoryRenderer
 ):
     self.file_name = 'main.py'
     self.test_file = ''
     package_dir = Path(f'src/{project_name.replace("-", "_")}')
     module_init = kf.File(
         package_dir / '__init__.py'
     )
     dir_renderer.add_directories(
         Path('src'),
         package_dir
     )
     file_renderer.add_file(module_init)
     self.project_type = ''
     super().__init__(project_name, file_renderer, dir_renderer)
コード例 #6
0
    def render_file(self):
        super().render_file()

        package_root = f'src/{self.project_name.replace("-","_")}'

        app_config = kf.File(
            f'{package_root}/config.py',
            self._get_template(
                'config.py',
            )
        )

        self.dir_renderer.add_directories(
            Path(f'{package_root}/routes'),
            Path('scripts'),
            Path('docker'),
        )

        init_route = kf.File(
            f'{package_root}/routes/__init__.py',
            self._get_template(
                'routes.py',
                project_name=self.project_name,
            )
        )

        root_route = kf.File(
            f'{package_root}/routes/root.py',
            self._get_template(
                'root.py',
                project_name=self.project_name,
            )
        )

        api_route = kf.File(
            f'{package_root}/routes/api.py',
            self._get_template(
                'api.py',
                project_name=self.project_name,
            )
        )

        env_contents = self._get_template(
            '.env.example',
        )

        env_file = kf.File(
            '.env',
            env_contents,
        )
        env_example_file = kf.File(
            '.env.example',
            env_contents
        )

        run_script = kf.File(
            'scripts/run.sh',
            self._get_template(
                'run.sh',
                project_name=self.project_name,
            ),
            executable=True,
        )

        requirements_file = kf.File(
            'requirements.txt',
            *self.packages
        )

        dockerfile = kf.File(
            'docker/Dockerfile',
            self._get_template(
                'dockerfile',
                version=f'{sys.version_info.major}.{sys.version_info.minor}'
            )
        )

        compose_file = kf.File(
            'docker/docker-compose.yaml',
            self._get_template(
                'docker-compose.yaml',
                project_name=self.project_name,
            )
        )

        readme_file = kf.File(
            'README.md',
            self._get_template(
                'readme',
                project_name=self.project_name
            )
        )

        self.file_renderer.add_files(
            app_config,
            run_script,
            init_route,
            root_route,
            api_route,
            env_file,
            env_example_file,
            requirements_file,
            dockerfile,
            compose_file,
            readme_file
        )