Mercurial > treepkg
annotate bin/publishstaticweb.py @ 344:f06f707d9fda
merged branches/scratchbox into trunk
#### IMPORTANT FOR ALL TREEPKGS #####
pbuilderrc config variable name changed to builderconfig
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Fri, 23 Apr 2010 07:43:29 +0000 |
parents | 28df50b267f6 |
children | ef87d30468b6 |
rev | line source |
---|---|
287
1fcdffbeb9de
Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents:
158
diff
changeset
|
1 #! /usr/bin/python |
1fcdffbeb9de
Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents:
158
diff
changeset
|
2 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
3 # Authors: |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
4 # Bernhard Herzog <bh@intevation.de> |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
5 # |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
6 # This program is free software under the GPL (>=v2) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
7 # Read the file COPYING coming with the software for details. |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
8 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
9 """Publishes a static web-site with a status report""" |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
10 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
11 import sys |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
12 import os |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
13 from optparse import OptionParser |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
14 from ConfigParser import SafeConfigParser |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
15 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
16 import treepkgcmd |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
17 from treepkg.readconfig import read_config_section |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
18 from treepkg.run import call |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
19 from treepkg.cmdexpand import cmdexpand |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
20 from treepkg.util import ensure_directory |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
21 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
22 def remove_trailing_slashes(s): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
23 return s.rstrip("/") |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
24 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
25 def expand_filename(filename): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
26 """ |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
27 Applies os.path.expanduser and os.path.expandvars to filename |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
28 """ |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
29 return os.path.expandvars(os.path.expanduser(filename)) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
30 |
158
8ec9ed76d67b
Make the template used by bin/publishstaticweb.py configurable.
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
31 staticweb_desc = ["build_user", "build_host", "build_create", "build_template", |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
32 ("build_dir", remove_trailing_slashes), |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
33 "publish_user", "publish_host", |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
34 ("publish_dir", remove_trailing_slashes), |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
35 ("cachedir", |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
36 lambda s: expand_filename(remove_trailing_slashes(s)))] |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
37 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
38 def read_config(filename): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
39 parser = SafeConfigParser() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
40 parser.read([filename]) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
41 return read_config_section(parser, "staticweb", staticweb_desc) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
42 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
43 def parse_commandline(): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
44 parser = OptionParser() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
45 parser.set_defaults(config_file=os.path.join(treepkgcmd.topdir, |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
46 "staticweb.cfg")) |
338
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
47 parser.set_defaults(update_cache_only=False) |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
48 parser.add_option("--config-file", |
319
dba1b6b825ec
Improve help string for --config-file option of publishstaticweb.
Bernhard Herzog <bh@intevation.de>
parents:
287
diff
changeset
|
49 help=("The configuration file. Default is staticweb.cfg")) |
338
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
50 parser.add_option("--update-cache-only", action="store_true", |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
51 help=("Stop after updating the cache." |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
52 " This omits the last step of the publishing" |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
53 " process")) |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
54 return parser.parse_args() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
55 |
338
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
56 def publish_static_site(config_filename, update_cache_only=False): |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
57 config = read_config(config_filename) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
58 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
59 # create web-page on build host |
158
8ec9ed76d67b
Make the template used by bin/publishstaticweb.py configurable.
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
60 call(cmdexpand("ssh $build_user$@$build_host $build_create" |
8ec9ed76d67b
Make the template used by bin/publishstaticweb.py configurable.
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
61 " --status-template=$build_template $build_dir", |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
62 **config)) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
63 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
64 # rsync the new web-pages to the local cache |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
65 ensure_directory(config["cachedir"]) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
66 call(cmdexpand("rsync -rL --delete $build_user$@$build_host:$build_dir/" |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
67 " $cachedir", |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
68 **config)) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
69 |
338
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
70 if not update_cache_only: |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
71 # rsync the web pages from the local cache to the publishing host |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
72 call(cmdexpand("rsync -rL --delete $cachedir/" |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
73 " $publish_user$@$publish_host:$publish_dir", |
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
74 **config)) |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
75 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
76 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
77 def main(): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
78 options, args = parse_commandline() |
338
28df50b267f6
Expanded the pkg_revision_template dictionary to include rules revision
Andre Heinecke <aheinecke@intevation.de>
parents:
319
diff
changeset
|
79 publish_static_site(options.config_file, options.update_cache_only) |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
80 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
81 main() |