Mercurial > piecrust2
annotate garcon/benchsite.py @ 1151:0d699f04968c
cm: Update dependencies and fix imports of Flask plugins.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 03 Nov 2018 19:42:02 -0700 |
parents | 22cf13b86cc3 |
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 |
990
22cf13b86cc3
cm: Upgrade Garcon tasks to the latest PyInvoke version.
Ludovic Chabant <ludovic@chabant.com>
parents:
642
diff
changeset
|
76 config_path = os.path.join(self.out_dir, 'config.yml') |
22cf13b86cc3
cm: Upgrade Garcon tasks to the latest PyInvoke version.
Ludovic Chabant <ludovic@chabant.com>
parents:
642
diff
changeset
|
77 if not os.path.exists(config_path): |
22cf13b86cc3
cm: Upgrade Garcon tasks to the latest PyInvoke version.
Ludovic Chabant <ludovic@chabant.com>
parents:
642
diff
changeset
|
78 with open(config_path, 'w') as fp: |
22cf13b86cc3
cm: Upgrade Garcon tasks to the latest PyInvoke version.
Ludovic Chabant <ludovic@chabant.com>
parents:
642
diff
changeset
|
79 fp.write('\n') |
22cf13b86cc3
cm: Upgrade Garcon tasks to the latest PyInvoke version.
Ludovic Chabant <ludovic@chabant.com>
parents:
642
diff
changeset
|
80 |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
81 def writePost(self, post_info): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
82 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
|
83 slug = post_info['slug'] |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
84 dtstr = post_info['datetime'].strftime('%Y-%m-%d') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
85 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
|
86 encoding='utf8') as f: |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
87 f.write('---\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
88 f.write('title: %s\n' % post_info['title']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
89 f.write('description: %s\n' % post_info['description']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
90 f.write('tags: [%s]\n' % post_info['tags']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
91 f.write('---\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 para_count = random.randint(5, 10) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
94 for i in range(para_count): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
95 f.write(generateSentence(random.randint(50, 100))) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
96 f.write('\n\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
97 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
98 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
99 class OctopressBenchmarkSiteGenerator(BenchmarkSiteGenerator): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
100 def initialize(self): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
101 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
|
102 if not os.path.isdir(posts_dir): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
103 os.makedirs(posts_dir) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
104 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
105 def writePost(self, post_info): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
106 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
|
107 slug = post_info['slug'] |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
108 dtstr = post_info['datetime'].strftime('%Y-%m-%d') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
109 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
|
110 encoding='utf8') as f: |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
111 f.write('---\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
112 f.write('layout: post\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
113 f.write('title: %s\n' % post_info['title']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
114 f.write('date: %s 12:00\n' % dtstr) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
115 f.write('comments: false\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
116 f.write('categories: [%s]\n' % post_info['tags']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
117 f.write('---\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 para_count = random.randint(5, 10) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
120 for i in range(para_count): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
121 f.write(generateSentence(random.randint(50, 100))) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
122 f.write('\n\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
123 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
124 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
125 class MiddlemanBenchmarkSiteGenerator(BenchmarkSiteGenerator): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
126 def initialize(self): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
127 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
|
128 if not os.path.isdir(posts_dir): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
129 os.makedirs(posts_dir) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
130 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
131 def writePost(self, post_info): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
132 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
|
133 slug = post_info['slug'] |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
134 dtstr = post_info['datetime'].strftime('%Y-%m-%d') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
135 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
|
136 encoding='utf8') as f: |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
137 f.write('---\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
138 f.write('title: %s\n' % post_info['title']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
139 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
|
140 f.write('tags: %s\n' % post_info['tags']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
141 f.write('---\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 para_count = random.randint(5, 10) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
144 for i in range(para_count): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
145 f.write(generateSentence(random.randint(50, 100))) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
146 f.write('\n\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
147 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
148 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
149 class HugoBenchmarkSiteGenerator(BenchmarkSiteGenerator): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
150 def initialize(self): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
151 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
|
152 if not os.path.isdir(posts_dir): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
153 os.makedirs(posts_dir) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
154 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
155 def writePost(self, post_info): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
156 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
|
157 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
|
158 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
|
159 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
|
160 f.write('+++\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
161 f.write('title = "%s"\n' % post_info['title']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
162 f.write('description = "%s"\n' % post_info['description']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
163 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
|
164 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
|
165 "%Y-%m-%d %H:%M:%S-00:00")) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
166 f.write('slug ="%s"\n' % post_info['slug']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
167 f.write('+++\n') |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
168 f.write(post_info['text']) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
169 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
170 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
171 generators = { |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
172 'piecrust': PieCrustBechmarkSiteGenerator, |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
173 'octopress': OctopressBenchmarkSiteGenerator, |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
174 'middleman': MiddlemanBenchmarkSiteGenerator, |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
175 'hugo': HugoBenchmarkSiteGenerator |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
176 } |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
177 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
178 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
179 def main(): |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
180 parser = argparse.ArgumentParser( |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
181 prog='generate_benchsite', |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
182 description=("Generates a benchmark website with placeholder " |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
183 "content suitable for testing.")) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
184 parser.add_argument( |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
185 'engine', |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
186 help="The engine to generate the site for.", |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
187 choices=list(generators.keys())) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
188 parser.add_argument( |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
189 'out_dir', |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
190 help="The target directory for the website.") |
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 '-c', '--post-count', |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
193 help="The number of posts to create.", |
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=100) |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
196 parser.add_argument( |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
197 '--tag-count', |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
198 help="The number of tags to use.", |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
199 type=int, |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
200 default=30) |
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 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
|
203 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
|
204 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
|
205 tag_count=result.tag_count) |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
206 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
207 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
208 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
|
209 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
|
210 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
211 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
|
212 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
|
213 |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
214 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
|
215 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
|
216 gen.initialize() |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
217 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
218 for i in range(post_count): |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
219 gen.generatePost() |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
220 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
221 |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
222 if __name__ == '__main__': |
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
223 main() |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
224 else: |
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
225 from invoke import task |
468
1038dba7b46e
cm: Add script to generate benchmark websites.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
226 |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
227 @task |
990
22cf13b86cc3
cm: Upgrade Garcon tasks to the latest PyInvoke version.
Ludovic Chabant <ludovic@chabant.com>
parents:
642
diff
changeset
|
228 def genbenchsite(ctx, engine, out_dir, post_count=100, tag_count=10): |
642
79aefe82c6b6
cm: Move all scripts into a `garcon` package with `invoke` support.
Ludovic Chabant <ludovic@chabant.com>
parents:
490
diff
changeset
|
229 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
|
230 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
|
231 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
|
232 |