Mercurial > piecrust2
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 |
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 |