Mercurial > hg > buttercup
annotate buttercup/buttercup.py @ 50:0c66ca55e336
reflect move to http://k0s.org/hg/toolbox/
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 11 May 2014 09:10:29 -0700 |
parents | e3770a2530ff |
children | b717de8b384f |
rev | line source |
---|---|
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
1 """ |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
2 the flower blooming to k0s.org |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
3 """ |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
4 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
5 import os |
33 | 6 import source |
48
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
7 from subprocess import check_call as call |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
8 |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
9 |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
10 __all__ = ['Buttercup', 'SetupError'] |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
11 |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
12 |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
13 class SetupError(Exception): |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
14 """error during setup""" |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
15 |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
16 def __init__(self, message, directory, uri=None): |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
17 self.directory = os.path.abspath(directory) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
18 self.uri = uri |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
19 _message = "Error setting up '{}'".format(directory) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
20 if uri: |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
21 _message += " (from {})".format(uri) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
22 _message += "\n {}".format(message) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
23 Exception.__init__(self, _message) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
24 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
25 |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
26 class Buttercup(object): |
50
0c66ca55e336
reflect move to http://k0s.org/hg/toolbox/
Jeff Hammel <k0scist@gmail.com>
parents:
49
diff
changeset
|
27 """k0sware software""" |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
28 |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
29 HG='http://k0s.org/hg' |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
30 PACKAGES=['bitsyapps', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
31 'bitsyauth', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
32 'bitsyblog', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
33 'bitsytweet', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
34 'buttercup', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
35 'clwapp', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
36 'commentator', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
37 'contenttransformer', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
38 'cropresize', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
39 'decoupage', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
40 'emaildispatcher', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
41 'genshi_view', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
42 'hgpaste', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
43 'lxmlmiddleware', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
44 'martINI', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
45 'montage', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
46 'pyloader', |
46
cee8bf9cc5a2
starting down the road towards flowerbed
Jeff Hammel <jhammel@mozilla.com>
parents:
44
diff
changeset
|
47 'redirector', |
39 | 48 'relocator', |
36 | 49 'svgsitemap', |
50
0c66ca55e336
reflect move to http://k0s.org/hg/toolbox/
Jeff Hammel <k0scist@gmail.com>
parents:
49
diff
changeset
|
50 'toolbox', |
38
1744fe69a129
add uploader to requirements
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
51 'uploader', |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
52 'webob_view', |
37
8d67dbd068cd
add wsgintegrate to required software
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
53 'wordstream', |
8d67dbd068cd
add wsgintegrate to required software
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
54 'wsgintegrate'] |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
55 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
56 def __init__(self, srcdir): |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
57 self.srcdir = srcdir |
44 | 58 |
59 # TODO: this should all go in a `pip` requirements file | |
60 | |
61 # base webapps and dependencies | |
31 | 62 self.sources = {'hg': ['%s/%s' % (self.HG, package) |
41 | 63 for package in self.PACKAGES ]} |
50
0c66ca55e336
reflect move to http://k0s.org/hg/toolbox/
Jeff Hammel <k0scist@gmail.com>
parents:
49
diff
changeset
|
64 self.sources['git'] = [] |
44 | 65 |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
66 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
67 def install(self): |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
68 """install all software needed for this flower""" |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
69 source_objs = source.sources(self.sources, srcdir=self.srcdir) |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
70 for source_obj in source_objs: |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
71 source_obj() # clone/update the software |
25
a54543838686
add test for source demunging
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
72 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
73 def setup(self, source_objs=None): |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
74 """setup python packages for development""" |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
75 if source_objs is None: |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
76 source_objs = source.sources(self.sources, srcdir=self.srcdir) |
44 | 77 for source_obj in source_objs: |
49
e3770a2530ff
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
48
diff
changeset
|
78 directory = source_obj.directory() |
e3770a2530ff
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
48
diff
changeset
|
79 if os.path.exists(os.path.join(directory, 'setup.py')): |
48
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
80 try: |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
81 call(['python', 'setup.py', 'develop'], cwd=source_obj.directory()) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
82 except Exception as e: |
49
e3770a2530ff
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
48
diff
changeset
|
83 raise SetupError(str(e), directory, source_obj.uri) |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
84 |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
85 def deploy(self): |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
86 self.install() |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
87 self.setup() |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
88 |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
89 __call__ = deploy |