move tsv updating manual
This commit is contained in:
10
rc
10
rc
@@ -17,20 +17,12 @@ function _self_update() {
|
|||||||
pushd "$TOOLSPATH" > /dev/null
|
pushd "$TOOLSPATH" > /dev/null
|
||||||
[[ "$1" = "-u" ]] && {
|
[[ "$1" = "-u" ]] && {
|
||||||
hg pull -u https://bitbucket.org/MoonQ/tools
|
hg pull -u https://bitbucket.org/MoonQ/tools
|
||||||
_update_tsvkit
|
|
||||||
} || {
|
} || {
|
||||||
timeout 5 hg pull -u hg pull https://bitbucket.org/MoonQ/tools > /dev/null 2>&1
|
timeout 5 hg pull -u hg pull https://bitbucket.org/MoonQ/tools > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
function _update_tsvkit() {
|
|
||||||
mkdir -p "$TOOLSPATH"/tsv/lib
|
|
||||||
wget -qO "$TOOLSPATH"/tsv/tsvkit.sh https://bitbucket.org/anduril-dev/anduril/raw/anduril2/lang/bash/tsvkit.sh
|
|
||||||
wget -qO "$TOOLSPATH"/tsv/lib/tsvhead https://bitbucket.org/anduril-dev/anduril/raw/anduril2/lang/bash/lib/tsvhead
|
|
||||||
wget -qO "$TOOLSPATH"/tsv/lib/tsvtail https://bitbucket.org/anduril-dev/anduril/raw/anduril2/lang/bash/lib/tsvtail
|
|
||||||
}
|
|
||||||
|
|
||||||
function _change_hg_repo() {
|
function _change_hg_repo() {
|
||||||
[[ -w "$TOOLSPATH"/.hg ]] || return
|
[[ -w "$TOOLSPATH"/.hg ]] || return
|
||||||
[[ -w "$TOOLSPATH"/.hg/hgrc ]] || return
|
[[ -w "$TOOLSPATH"/.hg/hgrc ]] || return
|
||||||
@@ -67,6 +59,6 @@ unset -f _change_hg_repo
|
|||||||
TOOLS_LASTUPDATE=$(( $( date +%s ) - $( stat -c %Y "$TOOLSPATH"/.lastupdate ) ))
|
TOOLS_LASTUPDATE=$(( $( date +%s ) - $( stat -c %Y "$TOOLSPATH"/.lastupdate ) ))
|
||||||
[[ "$TOOLS_LASTUPDATE" -gt 604800 ]] && _self_update
|
[[ "$TOOLS_LASTUPDATE" -gt 604800 ]] && _self_update
|
||||||
unset TOOLS_LASTUPDATE
|
unset TOOLS_LASTUPDATE
|
||||||
unset -f _self_update _update_tsvkit
|
unset -f _self_update
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
95
tsv/tsvhead
95
tsv/tsvhead
@@ -1,95 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright 2015 Ville Rantanen
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU Lesser General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
'''simple head for tsv/csv files.'''
|
|
||||||
|
|
||||||
__author__ = "Ville Rantanen <ville.q.rantanen@gmail.com>"
|
|
||||||
|
|
||||||
__version__ = "0.1"
|
|
||||||
|
|
||||||
import sys,os,argparse
|
|
||||||
from argparse import ArgumentParser
|
|
||||||
|
|
||||||
def setup_options():
|
|
||||||
''' Create command line options '''
|
|
||||||
usage='''
|
|
||||||
Simple implementation of head that keeps the header row.
|
|
||||||
|
|
||||||
'''
|
|
||||||
|
|
||||||
parser=ArgumentParser(description=usage,
|
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
||||||
epilog="\n".join(["Version: "+__version__,__author__]))
|
|
||||||
common_group=parser.add_argument_group('common', 'Common options')
|
|
||||||
common_group.add_argument("-v","--version",action="version",version=__version__)
|
|
||||||
common_group.add_argument("-n",type=int,dest="lines",default=False,
|
|
||||||
help="Lines to show from beginning of file. Negative value to show lines but the number. Default: 10")
|
|
||||||
parser.add_argument("file",type=str, nargs='*',
|
|
||||||
help="File(s) to be headed")
|
|
||||||
opts=parser.parse_args()
|
|
||||||
if not opts.lines:
|
|
||||||
try:
|
|
||||||
int(opts.file[0])
|
|
||||||
opts.lines=int(opts.file.pop(0))
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
if not opts.lines:
|
|
||||||
opts.lines=10
|
|
||||||
return opts
|
|
||||||
|
|
||||||
def behead(fileob,opts):
|
|
||||||
|
|
||||||
header=fileob.readline()
|
|
||||||
sys.stdout.write(header)
|
|
||||||
if opts.lines>=0:
|
|
||||||
head_ordinary(fileob, opts.lines)
|
|
||||||
else:
|
|
||||||
head_allbutlast(fileob, opts.lines)
|
|
||||||
|
|
||||||
def head_ordinary(fileob, lines):
|
|
||||||
for i,row in enumerate(fileob):
|
|
||||||
if i>lines-1:
|
|
||||||
break
|
|
||||||
sys.stdout.write(row)
|
|
||||||
|
|
||||||
def head_allbutlast(fileob, lines):
|
|
||||||
lines=-lines
|
|
||||||
buf=[]
|
|
||||||
for row in fileob:
|
|
||||||
buf.append(row)
|
|
||||||
if len(buf)>lines:
|
|
||||||
sys.stdout.write(buf.pop(0))
|
|
||||||
|
|
||||||
def main():
|
|
||||||
opts=setup_options()
|
|
||||||
try:
|
|
||||||
if (not sys.stdin.isatty()):
|
|
||||||
behead(sys.stdin, opts)
|
|
||||||
for fi in opts.file:
|
|
||||||
behead(open(fi,'r'), opts)
|
|
||||||
except IOError as (n,e):
|
|
||||||
if n==32:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
import traceback
|
|
||||||
print traceback.format_exc()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
99
tsv/tsvtail
99
tsv/tsvtail
@@ -1,99 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright 2015 Ville Rantanen
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU Lesser General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
'''simple tail for tsv/csv files.'''
|
|
||||||
|
|
||||||
__author__ = "Ville Rantanen <ville.q.rantanen@gmail.com>"
|
|
||||||
|
|
||||||
__version__ = "0.1"
|
|
||||||
|
|
||||||
import sys,os,argparse
|
|
||||||
from argparse import ArgumentParser
|
|
||||||
|
|
||||||
def setup_options():
|
|
||||||
''' Create command line options '''
|
|
||||||
usage='''
|
|
||||||
simple implementation of tail, keeping the header row
|
|
||||||
|
|
||||||
'''
|
|
||||||
|
|
||||||
parser=ArgumentParser(description=usage,
|
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
||||||
epilog="\n".join(["Version: "+__version__,__author__]))
|
|
||||||
common_group=parser.add_argument_group('common', 'Common options')
|
|
||||||
common_group.add_argument("-v","--version",action="version",version=__version__)
|
|
||||||
common_group.add_argument("-n",type=str,dest="lines",default=False,
|
|
||||||
help="Lines to show from end of file. +K to start output from the Kth. Default: 10")
|
|
||||||
parser.add_argument("file",type=str, nargs='*',
|
|
||||||
help="File(s) to be headed")
|
|
||||||
opts=parser.parse_args()
|
|
||||||
if not opts.lines:
|
|
||||||
try:
|
|
||||||
int(opts.file[0])
|
|
||||||
opts.lines=opts.file.pop(0)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
if not opts.lines:
|
|
||||||
opts.lines="10"
|
|
||||||
if opts.lines.startswith("+"):
|
|
||||||
opts.lines=-int(opts.lines)
|
|
||||||
else:
|
|
||||||
opts.lines=int(opts.lines)
|
|
||||||
return opts
|
|
||||||
|
|
||||||
def tail(fileob,opts):
|
|
||||||
|
|
||||||
header=fileob.readline()
|
|
||||||
sys.stdout.write(header)
|
|
||||||
if opts.lines>=0:
|
|
||||||
tail_ordinary(fileob, opts.lines)
|
|
||||||
else:
|
|
||||||
tail_allbutfirst(fileob, -opts.lines)
|
|
||||||
|
|
||||||
def tail_allbutfirst(fileob, lines):
|
|
||||||
for i,row in enumerate(fileob):
|
|
||||||
if i<lines-1:
|
|
||||||
continue
|
|
||||||
sys.stdout.write(row)
|
|
||||||
|
|
||||||
def tail_ordinary(fileob, lines):
|
|
||||||
buf=[]
|
|
||||||
for row in fileob:
|
|
||||||
buf.append(row)
|
|
||||||
if len(buf)>lines:
|
|
||||||
buf.pop(0)
|
|
||||||
[sys.stdout.write(l) for l in buf]
|
|
||||||
|
|
||||||
def main():
|
|
||||||
opts=setup_options()
|
|
||||||
try:
|
|
||||||
if (not sys.stdin.isatty()):
|
|
||||||
tail(sys.stdin, opts)
|
|
||||||
for fi in opts.file:
|
|
||||||
tail(open(fi,'r'), opts)
|
|
||||||
except IOError as (n,e):
|
|
||||||
if n==32:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
import traceback
|
|
||||||
print traceback.format_exc()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
Reference in New Issue
Block a user