mirror of https://github.com/nirenjan/dotfiles.git
56 lines
1.5 KiB
Ruby
Executable File
56 lines
1.5 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# -*- ruby -*-
|
|
# Script to smartly chop off portions of the current working directory for
|
|
# use in the shell prompt
|
|
|
|
# Constants used to decide when to start chopping
|
|
DIRLIM = 5
|
|
DIR_L = 3
|
|
DIR_R = 2
|
|
PWDLEN = 14
|
|
|
|
def smartwd
|
|
username = ENV['USER']
|
|
homedir = ENV['HOME']
|
|
pwd = ENV['PWD']
|
|
|
|
path = pwd.split('/')
|
|
|
|
# Ignore the root path
|
|
if (path.length > 0)
|
|
index = path.index(username)
|
|
if index
|
|
prefix = path.shift(index + 1)
|
|
|
|
# We need to map additional paths in environments where the user
|
|
# may have more than one available folder in his/her name.
|
|
if prefix.join('/') == homedir
|
|
path.unshift('~')
|
|
else
|
|
# The first entry in the prefix array is the empty string
|
|
pre = prefix[1].split('').shift(4).join('') + '~'
|
|
path.unshift(pre)
|
|
end
|
|
else
|
|
# Replace the first two entries in the array with /<entry1>
|
|
# (because the first entry is always empty string)
|
|
prefix = path.shift(2).join('/')
|
|
path.unshift(prefix)
|
|
end
|
|
|
|
# Check to make sure that both the DIRLIM and PWDLEN constraints
|
|
# are met before splitting
|
|
pwd = path.join('/')
|
|
if path.length > DIRLIM and pwd.length > PWDLEN
|
|
pwd_l = path.shift(DIR_L).join('/')
|
|
pwd_r = path.pop(DIR_R).join('/')
|
|
pwd = pwd_l + '/.../' + pwd_r
|
|
end
|
|
end
|
|
|
|
print pwd
|
|
end
|
|
|
|
smartwd
|
|
|