annotate sh-replay @ 0:685cb4aa66f7 draft

Init
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 09 Sep 2013 10:21:03 -0400
parents
children d5300f96f9a2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
1 #!/usr/bin/env python
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
2
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
3 import os,sys,subprocess
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
4 from colors import yellow, blue, magenta
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
5 from sh import hg, cd
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
6
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
7 def getch():
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
8 import sys, tty, termios
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
9 fd = sys.stdin.fileno()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
10 old_settings = termios.tcgetattr(fd)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
11 try:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
12 tty.setraw(sys.stdin.fileno())
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
13 ch = sys.stdin.read(1)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
14 finally:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
15 termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
16 if ord(ch) == 3:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
17 sys.exit(0)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
18 return ch
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
19
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
20 def get_hg_id():
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
21 try:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
22 book = hg.id(B=True).strip()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
23 except:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
24 book = False
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
25
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
26 if book:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
27 return book
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
28
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
29 try:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
30 branch = hg.branch().strip()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
31 except:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
32 return ""
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
33
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
34 return branch
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
35
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
36 def print_prompt():
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
37 cwd = os.getcwd()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
38 if cwd == "/home/jordi":
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
39 cwd = "~"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
40 else:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
41 cwd = os.path.split(cwd)[-1]
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
42
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
43 hg_id = get_hg_id()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
44
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
45 sys.stdout.write(yellow("jordi@Iris", style="bold") + ":"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
46 + blue(cwd, style="bold") + " "
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
47 + magenta(hg_id, style="bold") + "$ ")
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
48
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
49 def main():
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
50 with open(sys.argv[1]) as f:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
51 cmds = [cmd.strip() for cmd in f.readlines()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
52 if cmd.strip() and not cmd.strip().startswith("#")]
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
53
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
54
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
55 for cmd in cmds:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
56 print_prompt()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
57 for c in cmd:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
58 key = getch()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
59 sys.stdout.write(c)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
60 sys.stdout.flush()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
61
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
62 while True:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
63 key = getch()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
64 if ord(key) == 13:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
65 break
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
66 if cmd.startswith("cd "):
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
67 cd(cmd[3:])
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
68 else:
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
69 subprocess.call(cmd, shell=True, executable="/bin/bash")
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
70
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
71 sys.stdout.write("\n")
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
72 sys.stdout.flush()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
73
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
74 if __name__ == "__main__":
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
75 main()
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
76