annotate util/generate_benchsite.py @ 550:6f216c1ab6b1

bake: Add a flag to know which record entries got collapsed from last run. This makes it possible to find entries for things that were actually baked during the current run, as opposed to skipped because they were "clean".
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 04 Aug 2015 21:22:30 -0700
parents 4a9047850657
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
468
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import io
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 import os
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 import os.path
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 import string
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 import random
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 import datetime
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 import argparse
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 def generateWord(min_len=1, max_len=10):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 length = random.randint(min_len, max_len)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 word = ''.join(random.choice(string.ascii_letters) for _ in range(length))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 return word
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 def generateSentence(words):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 return ' '.join([generateWord() for i in range(words)])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 def generateDate():
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 year = random.choice(range(1995, 2015))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 month = random.choice(range(1, 13))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 day = random.choice(range(1, 29))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24 hours = random.choice(range(0, 24))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 minutes = random.choice(range(0, 60))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 seconds = random.choice(range(0, 60))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 return datetime.datetime(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 year, month, day, hours, minutes, seconds)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 def generateTitleAndSlug():
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 title = generateSentence(8)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 slug = title.replace(' ', '-').lower()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 slug = ''.join(c for c in slug if c.isalnum() or c == '-')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 return title, slug
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 class BenchmarkSiteGenerator(object):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 def __init__(self, out_dir):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40 self.out_dir = out_dir
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41 self.all_tags = []
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 def generatePost(self):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
44 post_info = {}
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
45 title, slug = generateTitleAndSlug()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 post_info.update({
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47 'title': title,
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
48 'slug': slug})
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
49 post_info['description'] = generateSentence(20)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 post_info['tags'] = random.choice(self.all_tags)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51 post_info['datetime'] = generateDate()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
53 buf = io.StringIO()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 with buf:
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
55 para_count = random.randint(5, 10)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56 for i in range(para_count):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
57 buf.write(generateSentence(random.randint(50, 100)))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
58 buf.write('\n\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
59 post_info['text'] = buf.getvalue()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
60
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
61 self.writePost(post_info)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
62
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
63 def initialize(self):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
64 pass
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
65
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
66 def writePost(self, post_info):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
67 raise NotImplementedError()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
68
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
69
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
70 class PieCrustBechmarkSiteGenerator(BenchmarkSiteGenerator):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
71 def initialize(self):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
72 posts_dir = os.path.join(self.out_dir, 'posts')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
73 if not os.path.isdir(posts_dir):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
74 os.makedirs(posts_dir)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
75
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
76 def writePost(self, post_info):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
77 out_dir = os.path.join(self.out_dir, 'posts')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
78 slug = post_info['slug']
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 dtstr = post_info['datetime'].strftime('%Y-%m-%d')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80 with open('%s/%s_%s.md' % (out_dir, dtstr, slug), 'w',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81 encoding='utf8') as f:
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82 f.write('---\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 f.write('title: %s\n' % post_info['title'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 f.write('description: %s\n' % post_info['description'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 f.write('tags: [%s]\n' % post_info['tags'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 f.write('---\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
88 para_count = random.randint(5, 10)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 for i in range(para_count):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
90 f.write(generateSentence(random.randint(50, 100)))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91 f.write('\n\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
92
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
93
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
94 class OctopressBenchmarkSiteGenerator(BenchmarkSiteGenerator):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95 def initialize(self):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
96 posts_dir = os.path.join(self.out_dir, 'source', '_posts')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
97 if not os.path.isdir(posts_dir):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
98 os.makedirs(posts_dir)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100 def writePost(self, post_info):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101 out_dir = os.path.join(self.out_dir, 'source', '_posts')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
102 slug = post_info['slug']
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103 dtstr = post_info['datetime'].strftime('%Y-%m-%d')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 with open('%s/%s-%s.markdown' % (out_dir, dtstr, slug), 'w',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 encoding='utf8') as f:
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
106 f.write('---\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107 f.write('layout: post\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 f.write('title: %s\n' % post_info['title'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 f.write('date: %s 12:00\n' % dtstr)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 f.write('comments: false\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111 f.write('categories: [%s]\n' % post_info['tags'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 f.write('---\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114 para_count = random.randint(5, 10)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115 for i in range(para_count):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
116 f.write(generateSentence(random.randint(50, 100)))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117 f.write('\n\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
118
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
119
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
120 class MiddlemanBenchmarkSiteGenerator(BenchmarkSiteGenerator):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
121 def initialize(self):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
122 posts_dir = os.path.join(self.out_dir, 'source')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
123 if not os.path.isdir(posts_dir):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
124 os.makedirs(posts_dir)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
125
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
126 def writePost(self, post_info):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
127 out_dir = os.path.join(self.out_dir, 'source')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
128 slug = post_info['slug']
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
129 dtstr = post_info['datetime'].strftime('%Y-%m-%d')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
130 with open('%s/%s-%s.html.markdown' % (out_dir, dtstr, slug), 'w',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
131 encoding='utf8') as f:
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
132 f.write('---\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
133 f.write('title: %s\n' % post_info['title'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
134 f.write('date: %s\n' % post_info['datetime'].strftime('%Y/%m/%d'))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
135 f.write('tags: %s\n' % post_info['tags'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
136 f.write('---\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
137
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
138 para_count = random.randint(5, 10)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139 for i in range(para_count):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
140 f.write(generateSentence(random.randint(50, 100)))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
141 f.write('\n\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
142
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
143
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
144 class HugoBenchmarkSiteGenerator(BenchmarkSiteGenerator):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
145 def initialize(self):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
146 posts_dir = os.path.join(self.out_dir, 'content', 'post')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
147 if not os.path.isdir(posts_dir):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
148 os.makedirs(posts_dir)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
149
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
150 def writePost(self, post_info):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
151 out_dir = os.path.join(self.out_dir, 'content', 'post')
490
4a9047850657 cm: Fix benchmark website generation on Windows.
Ludovic Chabant <ludovic@chabant.com>
parents: 468
diff changeset
152 dtstr = post_info['datetime'].strftime('%Y-%m-%d_%H-%M-%S')
4a9047850657 cm: Fix benchmark website generation on Windows.
Ludovic Chabant <ludovic@chabant.com>
parents: 468
diff changeset
153 post_path = os.path.join(out_dir, '%s.md' % dtstr)
4a9047850657 cm: Fix benchmark website generation on Windows.
Ludovic Chabant <ludovic@chabant.com>
parents: 468
diff changeset
154 with open(post_path, 'w', encoding='utf8') as f:
468
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
155 f.write('+++\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
156 f.write('title = "%s"\n' % post_info['title'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
157 f.write('description = "%s"\n' % post_info['description'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
158 f.write('categories = [\n "%s"\n]\n' % post_info['tags'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
159 f.write('date = "%s"\n' % post_info['datetime'].strftime(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
160 "%Y-%m-%d %H:%M:%S-00:00"))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
161 f.write('slug ="%s"\n' % post_info['slug'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
162 f.write('+++\n')
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
163 f.write(post_info['text'])
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
164
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
165
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
166 generators = {
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
167 'piecrust': PieCrustBechmarkSiteGenerator,
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
168 'octopress': OctopressBenchmarkSiteGenerator,
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
169 'middleman': MiddlemanBenchmarkSiteGenerator,
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
170 'hugo': HugoBenchmarkSiteGenerator
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
171 }
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
172
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
173
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
174 def main():
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
175 parser = argparse.ArgumentParser(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
176 prog='generate_benchsite',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
177 description=("Generates a benchmark website with placeholder "
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
178 "content suitable for testing."))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
179 parser.add_argument(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
180 'engine',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
181 help="The engine to generate the site for.",
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
182 choices=list(generators.keys()))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
183 parser.add_argument(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
184 'out_dir',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
185 help="The target directory for the website.")
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
186 parser.add_argument(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
187 '-c', '--post-count',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
188 help="The number of posts to create.",
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
189 type=int,
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
190 default=100)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
191 parser.add_argument(
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
192 '--tag-count',
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
193 help="The number of tags to use.",
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
194 type=int,
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
195 default=30)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
196
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
197 result = parser.parse_args()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
198
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
199 print("Generating %d posts in %s..." % (
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
200 result.post_count, result.out_dir))
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
201
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
202 if not os.path.exists(result.out_dir):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
203 os.makedirs(result.out_dir)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
204
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
205 gen = generators[result.engine](result.out_dir)
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
206 gen.all_tags = [generateWord(3, 12) for _ in range(result.tag_count)]
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
207 gen.initialize()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
208
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
209 for i in range(result.post_count):
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
210 gen.generatePost()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
211
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
212
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
213 if __name__ == '__main__':
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
214 main()
1038dba7b46e cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
215