comparison python/install_config.py @ 408:705dc5cfd68d

make this modular
author Jeff Hammel <jhammel@mozilla.com>
date Sun, 04 Aug 2013 10:31:11 -0700
parents 06fcec56e8fe
children dc64beded724
comparison
equal deleted inserted replaced
407:a8982ae84a9b 408:705dc5cfd68d
4 installs config to a user's home directory 4 installs config to a user's home directory
5 this can be done with 5 this can be done with
6 curl http://k0s.org/hg/config/raw-file/tip/python/install_config.py | python 6 curl http://k0s.org/hg/config/raw-file/tip/python/install_config.py | python
7 """ 7 """
8 8
9 SRC='http://k0s.org/hg/config'
10
11 import imp 9 import imp
10 import optparse
12 import os 11 import os
13 import subprocess 12 import subprocess
14 import sys 13 import sys
15 14
15 # config repository
16 SRC='http://k0s.org/hg/config'
17
16 # go home 18 # go home
17 HOME=os.environ['HOME'] 19 HOME=os.environ['HOME']
18 os.chdir(HOME) 20 os.chdir(HOME)
19
20 commands = [ # make the home directory a repository
21 ['hg', 'init'],
22 ['hg', 'pull', SRC],
23 ['hg', 'update', '-C'],
24 ]
25 21
26 def execute(*commands): 22 def execute(*commands):
27 """execute a series of commands""" 23 """execute a series of commands"""
28 for command in commands: 24 for command in commands:
29 print ' '.join(command) 25 print ' '.join(command)
30 code = subprocess.call(command) 26 code = subprocess.call(command)
31 if code: 27 if code:
32 sys.exit(code) 28 sys.exit(code)
29
30 class Step(object):
31 @classmethod
32 def check(cls):
33 """checks if the step may be run"""
34 def __call__(self):
35 execute(*self.commands)
36
37 class InitializeRepository(Step):
38 """make the home directory a repository"""
39
40 commands = [
41 ['hg', 'init'],
42 ['hg', 'pull', SRC],
43 ['hg', 'update', '-C'],
44 ]
33 45
34 execute(*commands) 46 execute(*commands)
35 47
36 48
37 # get the which command 49 # get the which command
83 execute(*postinstall_commands) 95 execute(*postinstall_commands)
84 else: 96 else:
85 print "git not installed" 97 print "git not installed"
86 98
87 # - ubuntu packages to install: 99 # - ubuntu packages to install:
88 PACKAGES="mercurial unison fluxbox antiword xclip graphviz python-dev python-lxml curl arandr git emacs irssi" 100 PACKAGES=["mercurial", "unison", "fluxbox", "antiword", "xclip",
101 "graphviz", "python-dev", "python-lxml", "curl", "arandr",
102 "git", "emacs", "irssi"]
89 print "Ensure the following packages are installed:" 103 print "Ensure the following packages are installed:"
90 print "sudo apt-get install %s" % PACKAGES 104 print "sudo apt-get install %s" % ' '.join(PACKAGES)
105
106 def main(args=sys.argv[1:]):
107 usage = '%prog [options]'
108 parser = optparse.OptionParser(usage=usage, description=__doc__)
109 options, args = parser.parse_args()
110
111 steps = [InitializeRepository]
112
113 if __name__ == '__main__':
114 main()