annotate buttercup/buttercup.py @ 53:af4155b0a260 default tip

add --prefix option
author Jeff Hammel <k0scist@gmail.com>
date Tue, 03 Nov 2020 07:59:36 -0800
parents b717de8b384f
children
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
53
af4155b0a260 add --prefix option
Jeff Hammel <k0scist@gmail.com>
parents: 52
diff changeset
5 # TODO: this should all go in a `pip` requirements file
af4155b0a260 add --prefix option
Jeff Hammel <k0scist@gmail.com>
parents: 52
diff changeset
6
30
6089d6ec745a should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
7 import os
48
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
8 from subprocess import check_call as call
52
Jeff Hammel <k0scist@gmail.com>
parents: 50
diff changeset
9 from . import source
48
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
10
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
11 __all__ = ['Buttercup', 'SetupError']
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
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
14 class SetupError(Exception):
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
15 """error during setup"""
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
16
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
17 def __init__(self, message, directory, uri=None):
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
18 self.directory = os.path.abspath(directory)
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
19 self.uri = uri
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
20 _message = "Error setting up '{}'".format(directory)
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
21 if uri:
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
22 _message += " (from {})".format(uri)
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
23 _message += "\n {}".format(message)
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
24 Exception.__init__(self, _message)
c99fbe84c3c2 STUB: buttercup/buttercup.py
Jeff Hammel <k0scist@gmail.com>
parents: 46
diff changeset
25
30
6089d6ec745a should now have a working flower; will test when i get internets again
Jeff Hammel <jhammel@mozilla.com>
parents: 25
diff changeset
26
18
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
27 class Buttercup(object):
50
0c66ca55e336 reflect move to http://k0s.org/hg/toolbox/
Jeff Hammel <k0scist@gmail.com>
parents: 49
diff changeset
28 """k0sware software"""
18
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
29
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
30 HG='http://k0s.org/hg'
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
31 PACKAGES=['bitsyapps',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
32 'bitsyauth',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
33 'bitsyblog',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
34 'bitsytweet',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
35 'buttercup',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
36 'clwapp',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
37 'commentator',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
38 'contenttransformer',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
39 'cropresize',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
40 'decoupage',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
41 'emaildispatcher',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
42 'genshi_view',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
43 'hgpaste',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
44 'lxmlmiddleware',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
45 'martINI',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
46 'montage',
151862a0a711 begin restructuring to something more modular and extensible
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
47 'pyloader',
46
cee8bf9cc5a2 starting down the road towards flowerbed
Jeff Hammel <jhammel@mozilla.com>
parents: 44
diff changeset
48 'redirector',
39
920afc079905 add the relocator package
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
49 'relocator',
36
2aa78e65d882 add svgsitemap to deps
Jeff Hammel <jhammel@mozilla.com>
parents: 33
diff changeset
50 'svgsitemap',
50
0c66ca55e336 reflect move to http://k0s.org/hg/toolbox/
Jeff Hammel <k0scist@gmail.com>
parents: 49
diff changeset
51 'toolbox',
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
53
af4155b0a260 add --prefix option
Jeff Hammel <k0scist@gmail.com>
parents: 52
diff changeset
57 def __init__(self, srcdir, prefix=None):
30
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
53
af4155b0a260 add --prefix option
Jeff Hammel <k0scist@gmail.com>
parents: 52
diff changeset
59 self.prefix = prefix or self.HG
44
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
53
af4155b0a260 add --prefix option
Jeff Hammel <k0scist@gmail.com>
parents: 52
diff changeset
62 self.sources = {'hg': ['%s/%s' % (self.prefix, 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