summaryrefslogtreecommitdiff
path: root/setup.py
blob: 9c4e9a58d442ce96820b559b737a3e0143516bc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/python

"""
This script creates symlinks in your home directory to your dotfiles in the
Git repository.

By default it will delete any file that stands in the way of its mission to
create a better world.

Usage: python setup.py [--nice] [--home=DIRECTORY]

  --nice               Don't trample existing dot files
  --home=DIRECTORY     Place links in DIRECTORY instead of $HOME

"""

import os, sys, getopt, socket
import string

class Usage(Exception):
    def __init__(self, msg):
        self.msg = msg

""" Create links to dotfiles """
def makeDots(home, nice):
    # First make a map of dot files to files in the repository.
    dotfiles = getMap("base/")
    
    # Get host specific overrides
    hostname = socket.getfqdn().split(".")
    for i in range(len(hostname)):
        name = string.join(hostname[-(i+1):], ".")
        dotfiles = getMap("host-overrides/" + name, dotfiles)



""" Main Method """
def main(argv=None):
    if argv is None:
        argv = sys.argv
    try:
        try:
            opts, args = getopt.getopt(argv[1:], 
                "hnd", ["help", "nice", "home"])
        except getopt.error, msg:
             raise Usage(msg)

        # Settings:
        nice = False
        home = os.environ["HOME"]

        for o, a in opts:
            if o in ("-h", "--help"):
                print __doc__
                return 0

            if o in ("-n", "--nice"):
                nice = True

            else if o in ("-d", "--home"):
                home = a

        makeDots(home, nice)

    except Usage, err:
        print >>sys.stderr, err.msg
        print >>sys.stderr, "for help use --help"
        return 2

if __name__ == "__main__":
    sys.exit(main())