-
-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathmake.py
More file actions
89 lines (73 loc) · 2.7 KB
/
make.py
File metadata and controls
89 lines (73 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Makes an organized git repo of a book folder
"""
from __future__ import print_function
import codecs
import os
from os.path import abspath, dirname
import jinja2
import sh
from .parameters import GITHUB_ORG
class NewFilesHandler():
""" NewFilesHandler - templates and copies additional files to book repos
"""
README_FILENAME = 'README.rst'
def __init__(self, book):
self.book = book
package_loader = jinja2.PackageLoader('gitenberg', 'templates')
self.env = jinja2.Environment(loader=package_loader)
def add_new_files(self):
self.template_readme()
self.travis_files()
self.copy_files()
def template_readme(self):
template = self.env.get_template('README.rst.j2')
readme_text = template.render(
authors=self.book.meta.authors_short(),
**self.book.meta.metadata
)
readme_path = "{0}/{1}".format(
self.book.local_path,
self.README_FILENAME
)
with codecs.open(readme_path, 'w', 'utf-8') as readme_file:
readme_file.write(readme_text)
def travis_files(self):
template = self.env.get_template('.travis.yml')
travis_key = self.book.github_repo.travis_key()
travis_text = template.render({
'epub_title': 'book',
'encrypted_key': travis_key,
'repo_name': self.book.meta._repo,
'repo_owner': GITHUB_ORG
})
fpath = os.path.join(self.book.local_path, ".travis.yml")
with open(fpath, 'w') as f:
f.write(travis_text)
if self.book.github_repo.travis_key():
fpath = os.path.join(self.book.local_path, ".travis.deploy.api_key.txt")
with open(fpath, 'w') as f:
f.write(travis_key)
def copy_files(self):
""" Copy the LICENSE and CONTRIBUTING files to each folder repo
Generate covers if needed. Dump the metadata.
"""
files = [u'LICENSE', u'CONTRIBUTING.rst']
this_dir = dirname(abspath(__file__))
for _file in files:
sh.cp(
'{0}/templates/{1}'.format(this_dir, _file),
'{0}/'.format(self.book.local_path)
)
# copy metadata rdf file
sh.cp(
self.book.meta.rdf_path,
'{0}/'.format(self.book.local_path)
)
if 'GITenberg' not in self.book.meta.subjects:
self.book.meta.metadata['subjects'].append('GITenberg')
if not self.book.meta._version:
self.book.meta.matadata["_version"] = "0.0.1"
self.book.meta.dump_file(os.path.join(self.book.local_path, 'metadata.yaml'))