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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f3878c2f7032 add neglected import
Jeff Hammel <jhammel@mozilla.com>
parents: 31
diff changeset
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
920afc079905 add the relocator package
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
48 'relocator',
36
2aa78e65d882 add svgsitemap to deps
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
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
693f209fdbaa notes to self
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
58
693f209fdbaa notes to self
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
59 # TODO: this should all go in a `pip` requirements file
693f209fdbaa notes to self
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
60
693f209fdbaa notes to self
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
61 # base webapps and dependencies
31
f6b768417d27 now listing kinda works
Jeff Hammel <jhammel@mozilla.com>
parents: 30
diff changeset
62 self.sources = {'hg': ['%s/%s' % (self.HG, package)
41
38aa1d47c461 add a source
Jeff Hammel <jhammel@mozilla.com>
parents: 39
diff changeset
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
693f209fdbaa notes to self
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
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
693f209fdbaa notes to self
Jeff Hammel <jhammel@mozilla.com>
parents: 42
diff changeset
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