Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
executable file
·
116 lines (89 loc) · 3.79 KB

File metadata and controls

executable file
·
116 lines (89 loc) · 3.79 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env python3
# This is free and unencumbered software released into the public
# domain.
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a
# compiled binary, for any purpose, commercial or non-commercial, and
# by any means.
# In jurisdictions that recognize copyright laws, the author or
# authors of this software dedicate any and all copyright interest in
# the software to the public domain. We make this dedication for the
# benefit of the public at large and to the detriment of our heirs
# and successors. We intend this dedication to be an overt act of
# relinquishment in perpetuity of all present and future rights to
# this software under copyright law.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# For more information, please refer to <http://unlicense.org>
"""Generate basics/README.md and advanced/README.md."""
import os
import posixpath
import common
BEGINNING = """\
[comment]: # (This file is automatically generated. Don't edit this)
[comment]: # (file manually, run update-readmes.py instead.)
"""
def get_contents():
"""Read descriptions and contents lists from README.
Return a {chaptername: content} dictionary.
"""
result = {}
current_section = None
with open('README.md', 'r') as f:
# move to where the content list starts
while f.readline().strip() != "## List of contents":
pass
for line in f:
if line.startswith('### '):
# new section
current_section = common.header_link(line.lstrip('#').strip())
result[current_section] = line[2:] # one # instead of 3
elif line.startswith('## '):
# end of content lists
break
elif current_section is not None:
# we are currently in a section
result[current_section] += line
return result
def update_file(filename, content):
"""Make sure that a file contains the content.
Return True if the file changed and False if it didn't.
"""
try:
with open(filename, 'r') as f:
# ignore the end
old_content = f.read().split('\n***\n')[0].rstrip()
if old_content == content:
print("Has correct content:", filename)
return False
except FileNotFoundError:
# the file doesn't exist yet, we'll create it
pass
print("Writing new content:", filename)
with open(filename, 'w') as f:
print(content, file=f)
return True
def main():
something_changed = False
for directory, content in sorted(get_contents().items()):
if not os.path.exists(directory):
# something else under the list of contents than a chapter
# list, doesn't have a separate subdirectory
print("Not a directory:", directory)
continue
# the links that point to the subdir must now point to the
# current directory, so we fix that
content = BEGINNING + content.replace(directory + '/', '').rstrip()
path = os.path.join(directory, 'README.md')
this_changed = update_file(path, content)
something_changed = something_changed or this_changed
if something_changed:
print()
print("Run update-ends.py now so the files will have correct ends.")
if __name__ == '__main__':
main()
Morty Proxy This is a proxified and sanitized view of the page, visit original site.