Mercurial > hg > config
comparison python/install_config.py @ 579:f894bd779943
STUB: python/install_config.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Mon, 20 Jan 2014 19:19:10 -0800 |
parents | c16238544fca |
children | b563a9c1f2b7 |
comparison
equal
deleted
inserted
replaced
578:c16238544fca | 579:f894bd779943 |
---|---|
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 # TODO: | |
10 # - dl and get ~/web/sync.ini : | |
11 # ln -s /home/jhammel/web/sync.ini /home/jhammel/.silvermirror | |
12 # - handle cases where config is autogenerated BUT you still want | |
13 # to have some base (e.g. .gkrellm2/user_config) | |
14 | |
15 # imports | |
9 import imp | 16 import imp |
10 import optparse | 17 import optparse |
11 import os | 18 import os |
12 import subprocess | 19 import subprocess |
13 import sys | 20 import sys |
14 | 21 |
15 # config repository | 22 # globals |
16 SRC='http://k0s.org/hg/config' | 23 SRC='http://k0s.org/hg/config' # config repository |
17 HOME=os.environ['HOME'] | 24 HOME=os.environ['HOME'] |
18 | 25 |
19 ### standalone functions | 26 ### standalone functions |
20 | 27 |
21 def execute(*commands): | 28 def execute(*commands): |
68 f.write(hgrc) | 75 f.write(hgrc) |
69 def __call__(self): | 76 def __call__(self): |
70 Step.__call__(self) | 77 Step.__call__(self) |
71 self.write_hgrc() | 78 self.write_hgrc() |
72 | 79 |
73 # | 80 |
74 # | |
75 #@requires(Command('git')) | 81 #@requires(Command('git')) |
76 #class GitInstall | 82 #class GitInstall |
77 | |
78 ### legacy -v | |
79 | |
80 commands = [ | |
81 ['hg', 'init'], | |
82 ['hg', 'pull', SRC], | |
83 ['hg', 'update', '-C'], | |
84 ] | |
85 | |
86 os.chdir(HOME) # go home | |
87 | |
88 execute(*commands) | |
89 | |
90 # make a (correct) .hg/hgrc file for $HOME | |
91 hgrc = """[paths] | |
92 default = http://k0s.org/hg/config | |
93 default-push = ssh://k0s.org/hg/config | |
94 """ | |
95 with file(os.path.join(HOME, '.hg/hgrc', 'w')) as f: | |
96 f.write(hgrc) | |
97 | |
98 # get the which command | |
99 sys.path.append(os.path.join(HOME, 'python')) | |
100 from which import which | |
101 | |
102 | |
103 # do git stuff | |
104 git = which('git') | |
105 if git: | |
106 # get virtual env | |
107 virtualenv_commands = [['git', 'clone', 'https://github.com/pypa/virtualenv.git'], | |
108 ['ln', '-s', HOME + '/virtualenv/virtualenv.py', HOME + '/bin/']] | |
109 execute(*virtualenv_commands) | |
110 | |
111 # setup git's global ignore, since git is silly about this | |
112 # and doesn't look for the file in the right place | |
113 execute(['git', 'config', '--global', 'core.excludesfile', os.path.join(HOME, '.gitignore')]) | |
114 | |
115 # install some python | |
116 install_develop('smartopen') | |
117 install_develop('silvermirror') # XXX this won't actually work since python-dev isn't installed; install it first | |
118 | |
119 postinstall_commands = [ ['ln', '-s', os.path.join(HOME, 'smartopen', 'bin', 'smartopen'), os.path.join(HOME, 'bin', 'smartopen') ], | |
120 ['ln', '-s', os.path.join(HOME, 'silvermirror', 'bin', 'silvermirror'), os.path.join(HOME, 'bin', 'silvermirror') ], | |
121 ] | |
122 execute(*postinstall_commands) | |
123 else: | |
124 print "git not installed" | |
125 | 83 |
126 class UbuntuPackages(Step): | 84 class UbuntuPackages(Step): |
127 """ubuntu packages to install""" | 85 """ubuntu packages to install""" |
128 | 86 |
129 PACKAGES=["mercurial", "unison", "fluxbox", "antiword", "xclip", | 87 PACKAGES=["mercurial", |
130 "graphviz", "python-dev", "python-lxml", "curl", "arandr", | 88 "unison", |
131 "git", "emacs", "irssi"] | 89 "fluxbox", |
132 print "Ensure the following packages are installed:" | 90 "antiword", |
133 print "sudo apt-get install %s" % ' '.join(PACKAGES) | 91 "xclip", |
92 "graphviz", | |
93 "python-dev", | |
94 "python-lxml", | |
95 "curl", | |
96 "arandr", | |
97 "git", | |
98 "emacs", | |
99 "irssi"] | |
100 def __call__(self): | |
101 print "Ensure the following packages are installed:" | |
102 print "sudo apt-get install %s" % ' '.join(PACKAGES) | |
134 | 103 |
135 # TODO: | 104 |
136 # - dl and get ~/web/sync.ini : | 105 ### legacy -v- |
137 # ln -s /home/jhammel/web/sync.ini /home/jhammel/.silvermirror | 106 |
138 # - handle cases where config is autogenerated BUT you still want | 107 def legacy(): |
139 # to have some base (e.g. .gkrellm2/user_config) | 108 """legacy : TO DEPRECATE!""" |
109 commands = [ | |
110 ['hg', 'init'], | |
111 ['hg', 'pull', SRC], | |
112 ['hg', 'update', '-C'], | |
113 ] | |
114 os.chdir(HOME) # go home | |
115 | |
116 execute(*commands) | |
117 | |
118 # make a (correct) .hg/hgrc file for $HOME | |
119 hgrc = """[paths] | |
120 default = http://k0s.org/hg/config | |
121 default-push = ssh://k0s.org/hg/config | |
122 """ | |
123 with file(os.path.join(HOME, '.hg/hgrc', 'w')) as f: | |
124 f.write(hgrc) | |
125 | |
126 # get the which command | |
127 sys.path.append(os.path.join(HOME, 'python')) | |
128 from which import which | |
129 | |
130 # do git stuff | |
131 git = which('git') | |
132 if git: | |
133 | |
134 # get virtual env | |
135 virtualenv_commands = [['git', 'clone', 'https://github.com/pypa/virtualenv.git'], | |
136 ['ln', '-s', HOME + '/virtualenv/virtualenv.py', HOME + '/bin/']] | |
137 execute(*virtualenv_commands) | |
138 | |
139 # setup git's global ignore, since git is silly about this | |
140 # and doesn't look for the file in the right place | |
141 execute(['git', 'config', '--global', 'core.excludesfile', os.path.join(HOME, '.gitignore')]) | |
142 | |
143 # install some python | |
144 install_develop('smartopen') | |
145 install_develop('silvermirror') # XXX this won't actually work since python-dev isn't installed; install it first | |
146 | |
147 postinstall_commands = [['ln', '-s', os.path.join(HOME, 'smartopen', 'bin', 'smartopen'), os.path.join(HOME, 'bin', 'smartopen') ], | |
148 ['ln', '-s', os.path.join(HOME, 'silvermirror', 'bin', 'silvermirror'), os.path.join(HOME, 'bin', 'silvermirror') ], | |
149 ] | |
150 execute(*postinstall_commands) | |
151 else: | |
152 print "git not installed" | |
153 | |
154 | |
140 | 155 |
141 def main(args=sys.argv[1:]): | 156 def main(args=sys.argv[1:]): |
142 | 157 |
143 # go home | 158 # go home |
144 os.chdir(HOME) | 159 os.chdir(HOME) |
148 parser = optparse.OptionParser(usage=usage, description=__doc__) | 163 parser = optparse.OptionParser(usage=usage, description=__doc__) |
149 parser.add_option('--deb', '--dpkg', '--debian-packages', | 164 parser.add_option('--deb', '--dpkg', '--debian-packages', |
150 dest='debian_packages', | 165 dest='debian_packages', |
151 action='store_true', default=False, | 166 action='store_true', default=False, |
152 help="display debian packages to install") | 167 help="display debian packages to install") |
168 parser.add_option('-l', '--list', '--list-steps', | |
169 dest='list_steps', | |
170 action='store_true', default=False, | |
171 help="list steps to be run") | |
153 options, args = parser.parse_args() | 172 options, args = parser.parse_args() |
154 | 173 |
155 # plan steps | 174 # plan steps |
156 steps = [InitializeRepository] | 175 steps = [InitializeRepository, UbuntuPackages] |
176 if options.debian_packages: | |
177 steps = [DebianPackages] | |
178 | |
179 if options.list_steps: | |
180 # list steps if specified | |
181 for step in steps: | |
182 print step | |
157 | 183 |
158 # execute steps | 184 # execute steps |
159 for step in steps: | 185 for step in steps: |
160 pass # TODO | 186 instance = step() |
187 instance() | |
161 | 188 |
162 if __name__ == '__main__': | 189 if __name__ == '__main__': |
163 main() | 190 main() |