Mercurial > piecrust2
annotate garcon/benchsite.py @ 800:d4b9d86d3d6f
cm: Allow generating documentation from inside the virtualenv.
Hopefully it goes well...?
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 08 Sep 2016 19:28:34 -0700 |
parents | 79aefe82c6b6 |
children | 22cf13b86cc3 |
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() |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
198 generate(result.engine, result.out_dir, |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
199 post_count=result.post_count, |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
200 tag_count=result.tag_count) |
468
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 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
203 def generate(engine, out_dir, post_count=100, tag_count=10): |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
204 print("Generating %d posts in %s..." % (post_count, out_dir)) |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
205 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
206 if not os.path.exists(out_dir): |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
207 os.makedirs(out_dir) |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
208 |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
209 gen = generators[engine](out_dir) |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
210 gen.all_tags = [generateWord(3, 12) for _ in range(tag_count)] |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
211 gen.initialize() |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
212 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
213 for i in range(post_count): |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
214 gen.generatePost() |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
215 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
216 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
217 if __name__ == '__main__': |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
218 main() |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
219 else: |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
220 from invoke import task |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
221 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
222 @task |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
223 def genbenchsite(engine, out_dir, post_count=100, tag_count=10): |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
224 generate(engine, out_dir, |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
225 post_count=post_count, |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
226 tag_count=tag_count) |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
227 |