-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmira.nu
64 lines (49 loc) · 1.82 KB
/
mira.nu
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
def get-user-color [] {
let user_color = {
attr: b,
fg: (if (is-admin) { 'red' } else { 'green' }),
}
return $user_color
}
export def prompt-command [] {
let user_color = get-user-color
let ssh_indicator = (if 'SSH_CONNECTION' in $env {
$"(ansi $user_color)[ SSH](ansi reset)"
} else {
$"(ansi $user_color)[LOCAL](ansi reset)"
})
let user_host = $"(ansi $user_color)(whoami)@(uname | get nodename)(ansi reset)"
let user_directory_color = { fg: blue, attr: b }
let directory = $"(ansi $user_directory_color)(pwd | str replace $env.HOME "~")(ansi reset)"
let git_line = (try {
let git_branch = (git branch --show-current err> /dev/null | str trim)
let git_dirty = (git status --porcelain=v1 err> /dev/null | wc -l | into int) > 0
$"($git_branch)(if $git_dirty { "*" } else { "" })"
} catch {
""
})
let vcs_color = { fg: yellow }
# This is a bit unnecessary, but if I decide to support other VCSs in the future
# it should be relatively easy to tack on
let vcs_line = (if $git_line != "" { $git_line } else { "" })
let vcs_line = (if $vcs_line != "" {
$"(ansi $vcs_color)‹($vcs_line)› (ansi reset)"
} else {
""
})
return $"($ssh_indicator) ($user_host) ($directory) ($vcs_line)\n\n"
}
export def prompt-command-right [] {
return (if $env.LAST_EXIT_CODE == 0 {
""
} else {
$"(ansi { fg: red, attr: b })($env.LAST_EXIT_CODE) ↵ (ansi reset)"
})
}
export def prompt-indicator [] {
let user_color = get-user-color
let curr_date = (date now | format date '%H:%M')
let symbol = (if (is-admin) { "#" } else { "$" })
return $"(ansi $user_color)[($curr_date)](ansi reset) ($symbol) "
}
export def multiline-indicator [] { return "" }