Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: sitescripts/docs/bin/generate_docs.py

Issue 29345242: Noissue - Adapt quotes for compliance with our coding style in sitescripts (Closed)
Patch Set: Fixed raw string Created May 30, 2016, 8:47 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # This file is part of Adblock Plus <https://adblockplus.org/>, 3 # This file is part of Adblock Plus <https://adblockplus.org/>,
4 # Copyright (C) 2006-2016 Eyeo GmbH 4 # Copyright (C) 2006-2016 Eyeo GmbH
5 # 5 #
6 # Adblock Plus is free software: you can redistribute it and/or modify 6 # Adblock Plus is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 3 as 7 # it under the terms of the GNU General Public License version 3 as
8 # published by the Free Software Foundation. 8 # published by the Free Software Foundation.
9 # 9 #
10 # Adblock Plus is distributed in the hope that it will be useful, 10 # Adblock Plus is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details. 13 # GNU General Public License for more details.
14 # 14 #
15 # You should have received a copy of the GNU General Public License 15 # You should have received a copy of the GNU General Public License
16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
17 17
18 import os 18 import os
19 import shutil 19 import shutil
20 import subprocess 20 import subprocess
21 21
22 from sitescripts.utils import get_config 22 from sitescripts.utils import get_config
23 23
24 24
25 def read_projects(config): 25 def read_projects(config):
26 projects = {} 26 projects = {}
27 for key, value in config.items("docs"): 27 for key, value in config.items('docs'):
28 key_parts = key.split("_", 1) 28 key_parts = key.split('_', 1)
29 if len(key_parts) < 2: 29 if len(key_parts) < 2:
30 continue 30 continue
31 project_name, field_name = key_parts 31 project_name, field_name = key_parts
32 if field_name not in {"repository", "target_directory", "command"}: 32 if field_name not in {'repository', 'target_directory', 'command'}:
33 continue 33 continue
34 projects.setdefault(project_name, {})[field_name] = value 34 projects.setdefault(project_name, {})[field_name] = value
35 return projects 35 return projects
36 36
37 37
38 def sync_sources(sources_dir, repository_url): 38 def sync_sources(sources_dir, repository_url):
39 if os.path.exists(sources_dir): 39 if os.path.exists(sources_dir):
40 subprocess.check_call(["hg", "pull", "--quiet", 40 subprocess.check_call(['hg', 'pull', '--quiet',
41 "--rev", "master", 41 '--rev', 'master',
42 "--repository", sources_dir]) 42 '--repository', sources_dir])
43 subprocess.check_call(["hg", "update", "--quiet", 43 subprocess.check_call(['hg', 'update', '--quiet',
44 "--rev", "master", 44 '--rev', 'master',
45 "--repository", sources_dir]) 45 '--repository', sources_dir])
46 else: 46 else:
47 subprocess.check_call(["hg", "clone", "--quiet", 47 subprocess.check_call(['hg', 'clone', '--quiet',
48 "--updaterev", "master", 48 '--updaterev', 'master',
49 repository_url, sources_dir]) 49 repository_url, sources_dir])
50 50
51 51
52 def replace_dir(source_dir, target_dir): 52 def replace_dir(source_dir, target_dir):
53 if not os.path.exists(target_dir): 53 if not os.path.exists(target_dir):
54 parent_dir = os.path.dirname(target_dir) 54 parent_dir = os.path.dirname(target_dir)
55 try: 55 try:
56 os.makedirs(parent_dir) 56 os.makedirs(parent_dir)
57 except OSError: 57 except OSError:
58 pass 58 pass
59 os.rename(source_dir, target_dir) 59 os.rename(source_dir, target_dir)
60 else: 60 else:
61 old_target_dir = target_dir.rstrip(os.path.sep) + ".old" 61 old_target_dir = target_dir.rstrip(os.path.sep) + '.old'
62 shutil.rmtree(old_target_dir, ignore_errors=True) 62 shutil.rmtree(old_target_dir, ignore_errors=True)
63 os.rename(target_dir, old_target_dir) 63 os.rename(target_dir, old_target_dir)
64 os.rename(source_dir, target_dir) 64 os.rename(source_dir, target_dir)
65 shutil.rmtree(old_target_dir) 65 shutil.rmtree(old_target_dir)
66 66
67 67
68 def run_generation_command(command, sources_dir, output_dir): 68 def run_generation_command(command, sources_dir, output_dir):
69 shutil.rmtree(output_dir, ignore_errors=True) 69 shutil.rmtree(output_dir, ignore_errors=True)
70 command = command.format(output_dir=output_dir) 70 command = command.format(output_dir=output_dir)
71 subprocess.check_call(command, shell=True, cwd=sources_dir) 71 subprocess.check_call(command, shell=True, cwd=sources_dir)
72 72
73 73
74 def generate_docs(projects, config): 74 def generate_docs(projects, config):
75 temp_directory = config.get("docs", "temp_directory") 75 temp_directory = config.get('docs', 'temp_directory')
76 try: 76 try:
77 os.makedirs(temp_directory) 77 os.makedirs(temp_directory)
78 except OSError: 78 except OSError:
79 pass 79 pass
80 80
81 for name, data in projects.iteritems(): 81 for name, data in projects.iteritems():
82 sources_dir = os.path.join(temp_directory, name) 82 sources_dir = os.path.join(temp_directory, name)
83 sync_sources(sources_dir, data["repository"]) 83 sync_sources(sources_dir, data['repository'])
84 output_dir = sources_dir.rstrip(os.path.sep) + ".docs" 84 output_dir = sources_dir.rstrip(os.path.sep) + '.docs'
85 run_generation_command(data["command"], sources_dir, output_dir) 85 run_generation_command(data['command'], sources_dir, output_dir)
86 replace_dir(output_dir, data["target_directory"]) 86 replace_dir(output_dir, data['target_directory'])
87 87
88 if __name__ == "__main__": 88 if __name__ == '__main__':
89 config = get_config() 89 config = get_config()
90 projects = read_projects(config) 90 projects = read_projects(config)
91 generate_docs(projects, config) 91 generate_docs(projects, config)
OLDNEW

Powered by Google App Engine
This is Rietveld