Mercurial > hg > buttercup
annotate buttercup/buttercup.py @ 49:e3770a2530ff
STUB: buttercup/buttercup.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sat, 25 Jan 2014 18:42:50 -0800 |
parents | c99fbe84c3c2 |
children | 0c66ca55e336 |
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): |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
27 |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
28 # k0sware software |
46
cee8bf9cc5a2
starting down the road towards flowerbed
Jeff Hammel <jhammel@mozilla.com>
parents:
44
diff
changeset
|
29 # TODO: make this a `package` (or more likely `python-package`) |
cee8bf9cc5a2
starting down the road towards flowerbed
Jeff Hammel <jhammel@mozilla.com>
parents:
44
diff
changeset
|
30 # subtype |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
31 HG='http://k0s.org/hg' |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
32 PACKAGES=['bitsyapps', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
33 'bitsyauth', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
34 'bitsyblog', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
35 'bitsytweet', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
36 'buttercup', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
37 'clwapp', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
38 'commentator', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
39 'contenttransformer', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
40 'cropresize', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
41 'decoupage', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
42 'emaildispatcher', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
43 'genshi_view', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
44 'hgpaste', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
45 'lxmlmiddleware', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
46 'martINI', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
47 'montage', |
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
48 'pyloader', |
46
cee8bf9cc5a2
starting down the road towards flowerbed
Jeff Hammel <jhammel@mozilla.com>
parents:
44
diff
changeset
|
49 'redirector', |
39 | 50 'relocator', |
36 | 51 'svgsitemap', |
38
1744fe69a129
add uploader to requirements
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
52 'uploader', |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
53 'webob_view', |
37
8d67dbd068cd
add wsgintegrate to required software
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
54 'wordstream', |
8d67dbd068cd
add wsgintegrate to required software
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
55 'wsgintegrate'] |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
56 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
57 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
|
58 self.srcdir = srcdir |
44 | 59 |
60 # TODO: this should all go in a `pip` requirements file | |
61 | |
62 # base webapps and dependencies | |
31 | 63 self.sources = {'hg': ['%s/%s' % (self.HG, package) |
41 | 64 for package in self.PACKAGES ]} |
44 | 65 self.sources['git'] = ['git://github.com/mozilla/toolbox.git'] |
66 | |
18
151862a0a711
begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
67 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
68 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
|
69 """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
|
70 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
|
71 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
|
72 source_obj() # clone/update the software |
25
a54543838686
add test for source demunging
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
73 |
30
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
74 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
|
75 """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
|
76 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
|
77 source_objs = source.sources(self.sources, srcdir=self.srcdir) |
44 | 78 for source_obj in source_objs: |
49
e3770a2530ff
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
48
diff
changeset
|
79 directory = source_obj.directory() |
e3770a2530ff
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
48
diff
changeset
|
80 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
|
81 try: |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
82 call(['python', 'setup.py', 'develop'], cwd=source_obj.directory()) |
c99fbe84c3c2
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
46
diff
changeset
|
83 except Exception as e: |
49
e3770a2530ff
STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents:
48
diff
changeset
|
84 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
|
85 |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
86 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
|
87 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
|
88 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
|
89 |
6089d6ec745a
should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
90 __call__ = deploy |