From 9f75a8b596a4c90903cf9fe35bcfc7cfd7cbb806 Mon Sep 17 00:00:00 2001 From: nirenjan Date: Mon, 26 May 2014 09:31:23 -0700 Subject: [PATCH] Move scripts to submodule --- .gitmodules | 3 + scripts | 1 + scripts/applygitconfig | 27 --- scripts/beep | 8 - scripts/deploy | 195 -------------------- scripts/dircolortest | 56 ------ scripts/git/git-branch-parent | 28 --- scripts/mlog | 52 ------ scripts/note | 330 ---------------------------------- scripts/settitle | 10 -- scripts/smartwd | 69 ------- scripts/stardate | 16 -- 12 files changed, 4 insertions(+), 791 deletions(-) create mode 100644 .gitmodules create mode 160000 scripts delete mode 100755 scripts/applygitconfig delete mode 100755 scripts/beep delete mode 100755 scripts/deploy delete mode 100755 scripts/dircolortest delete mode 100755 scripts/git/git-branch-parent delete mode 100755 scripts/mlog delete mode 100755 scripts/note delete mode 100755 scripts/settitle delete mode 100755 scripts/smartwd delete mode 100755 scripts/stardate diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..dd239c3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "scripts"] + path = scripts + url = git@github.com:nirenjan/scripts diff --git a/scripts b/scripts new file mode 160000 index 0000000..6e000ca --- /dev/null +++ b/scripts @@ -0,0 +1 @@ +Subproject commit 6e000ca76d644e455dba0ecb30b2053bbad8c1f1 diff --git a/scripts/applygitconfig b/scripts/applygitconfig deleted file mode 100755 index dab208e..0000000 --- a/scripts/applygitconfig +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env perl -# Script to apply git configuration to global gitconfig - -my $section = 'unknown'; -my $variable; -my $value; -my $command; - -while(<>) { - chomp; - if (m/^\[(\w+)\]$/) { - $section = $1; - #print "Section: $section\n"; - } elsif (m/^\[(\w+) +"(\w+)"\]/) { - $section = "$1.$2"; - #print "Section: $section\n"; - } elsif (m/(\w+) += +(.+)$/) { - $variable = $1; - $value = $2; - - $value =~ s/"/\\"/g; - #print "\t$section.$variable = \"$value\"\n"; - $command = "git config --global $section.$variable \"$value\""; - print "$command\n"; - system($command); - } -} diff --git a/scripts/beep b/scripts/beep deleted file mode 100755 index dd6a6ce..0000000 --- a/scripts/beep +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -if [[ $# -gt 0 ]] -then - eval "$@" -fi - -echo -e "\007" diff --git a/scripts/deploy b/scripts/deploy deleted file mode 100755 index fb16888..0000000 --- a/scripts/deploy +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/bash -# Script to copy files from a Git repository to a destination -# Reads deployment instructions from a file and acts accordingly -# -# File Format -# =========== -# -# Comments begin with a # character and terminate at the end of the line. -# -# The keyword 'repo' specifies the path to the repository. The repository must -# be accessible locally without having to resort to ssh, https or git protocols. -# Usage: repo -# -# The keyword 'target' specifies the location to which to deploy. If omitted, it -# defaults to the current folder. Folders can be specified relative to the -# current folder, relative to the home directory, or relative to the root, using -# ./ or ../, ~/ and / as prefixes respectively. The parameter must be a valid -# directory. -# Usage: target -# -# The keyword 'file' specifies the file location relative to the root of the -# Git repository, along with the version to install and an optional rename -# argument which allows you to rename the destination file. If the version is -# omitted, it defaults to HEAD. If the rename-to parameter is omitted, the -# filename is the same as the name within the repository. -# Usage: file [version [rename-to]] - -# Default environment variables used -DEPLOY_GIT='' -DEPLOY_TGT=$(pwd) -DEPLOY_SRC='' -DEPLOY_LST='' -DEPLOY_DEBUG=false - -# Usage function will display the usage -usage() -{ - local deploy=$(basename $0) - echo "Usage: $deploy ..." - exit 0 -} - -# Die function will print the error message to stderr and abort the script -die() -{ - local exit_code=$1 - local deploy=$(basename $0) - shift - - for msg in "$@" - do - echo -e "$deploy: $msg" >&2 - done - - if [[ $exit_code != 128 && $exit_code != 0 ]] - then - echo -e "\tError in file $DEPLOY_SRC line ${BASH_LINENO[1]}" >&2 - fi - - exit $exit_code -} - -# Debug function will display all data, but only if debugs are enabled -debug() -{ - $DEPLOY_DEBUG && echo "$@" -} - -# Repo function checks if it is a valid Git repo and sets the DEPLOY_GIT -repo() -{ - if [[ $# != 1 ]] - then - die 4 "Invalid usage of repo command" "Usage: repo " - fi - - if [[ -d "$1" ]] - then - cd "$1" - local gtl=$(git rev-parse --show-toplevel 2>/dev/null) - - if [[ -z $gtl ]] - then - die 3 "Path $1 is not a valid Git repository!" - else - debug "Using repository $gtl" - DEPLOY_GIT="$gtl" - fi - else - die 1 "Path $1 does not exist!" - fi -} - -# Target function checks if it is a valid directory and sets the DEPLOY_TGT -target() -{ - if [[ $# != 1 ]] - then - die 4 "Invalid usage of target command" "Usage: target " - fi - - if [[ -d "$1" ]] - then - debug "Target folder $1" - DEPLOY_TGT="$1" - else - die 1 "Path $1 does not exist!" - fi -} - -# File command selects a file to deploy -file() -{ - if [[ $# == 0 || $# > 3 ]] - then - die 4 "Invalid usage of file command" \ - "Usage: file [ [] ]" - fi - - if [[ -z $DEPLOY_GIT ]] - then - die 2 "Must specify repo before file!" - fi - - if [[ -z $DEPLOY_TGT ]] - then - die 2 "Must specify target before file!" - fi - - local file=$1 - local ver=$2 - local rename=$3 - - debug "file $@" - - # Sanity check on ver - [[ -z $ver ]] && ver=HEAD - - # Sanity check on rename - [[ -z $rename ]] && rename=$(basename $file) - - cd $DEPLOY_GIT - - # Check to make sure that version is a sane version - git rev-parse $ver &>/dev/null - - if [[ $? != 0 ]] - then - die 3 "Version $ver does not exist in the repository $DEPLOY_GIT" - fi - - local vercheck=$(git rev-parse $ver 2>/dev/null) - debug "Using version $vercheck" - - # Check to make sure that the file is valid in the specified version - git show $vercheck:$file &>/dev/null - - if [[ $? != 0 ]] - then - die 3 "File $file does not exist in version $ver of the repo $DEPLOY_GIT" - else - debug "Using file $file" - # Build the commands to extract the file and set the - # executable permissions bit in the deployed file. - local cmd="cd $DEPLOY_GIT" - cmd="$cmd; git show $vercheck:$file > $DEPLOY_TGT/$rename" - cmd="$cmd; chmod +x $DEPLOY_TGT/$rename;" - DEPLOY_LST="$DEPLOY_LST $cmd" - fi - -} - -if [[ $# == 0 ]] -then - usage -else - for i in "$@" - do - if [[ -f $i && -r $i ]] - then - DEPLOY_SRC=$i - source $i - else - die 128 "Deploy file $i does not exist or is not readable!" - fi - done -fi - -if [[ ! -z $DEPLOY_LST ]] -then - eval $DEPLOY_LST -else - die 0 "No files to deploy!" -fi - diff --git a/scripts/dircolortest b/scripts/dircolortest deleted file mode 100755 index d79d412..0000000 --- a/scripts/dircolortest +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/perl -# A utility script to test out dircolors settings without reloading -# Usage: dircolortest - -if ($#ARGV < 0) { - die "Usage: $0 \n"; -} - -if ($#ARGV > 0) { - warn "Ignoring additional command line arguments\n"; -} - -# Open the file and get the handle -open DCFILE, $ARGV[0] or - die "Cannot open dircolors file $ARGV[0]! $!\n"; - -$line_counter = 0; - -while ($line = ) { - chomp $line; - - # Strip off any comments - $line =~ s/#.*$//; - - # Strip off leading and trailing whitespace - $line =~ s/^\s*//; - $line =~ s/\s*$//; - - if ($line ne '') { - ($type, $format) = split /\s+/, $line; - - # Ignore the following lines, we don't care about them here - next if (($type eq 'TERM') || ($type eq 'COLOR') || - ($type eq 'OPTIONS') || ($type eq 'EIGHTBIT')); - - # Just a little enhancement, if the type begins with a . - if ($type =~ m/^\./) { - $type = "*$type"; - } - - print "\033[${format}m$type\033[m"; - - $line_counter = $line_counter + 1; - - if ($line_counter == 8) { - print "\n"; - $line_counter = 0; - } else { - print "\t"; - } - } -} - -print "\n" if ($line_counter != 0); - -close DCFILE; diff --git a/scripts/git/git-branch-parent b/scripts/git/git-branch-parent deleted file mode 100755 index f83767f..0000000 --- a/scripts/git/git-branch-parent +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -# Support script to find the commit from which the given branch was spawned. -# Takes one or two arguments, the first argument is mandatory and specifies -# the child branch while the second argument is optional and specifies the -# parent branch. If omitted, the parent branch defaults to 'master' - -CHILD=$1 -PARENT=$2 - -USAGE="Usage: $0 " - -if [ "$CHILD" == "" ] -then - echo $USAGE - exit -fi - -if [ "$PARENT" == "" ] -then - PARENT="master" -fi - -PCOMMIT=`diff -u <(git rev-list --first-parent $CHILD) \ - <(git rev-list --first-parent $PARENT) | sed -ne 's/^ //p' | head -1` - -git show --pretty="%H %an | %s" $PCOMMIT | head -1 - diff --git a/scripts/mlog b/scripts/mlog deleted file mode 100755 index b9e3444..0000000 --- a/scripts/mlog +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# Monthly logging script -# Call mlog and it will update a log file - -# Set the default mlog folder -[[ -z $MLOG_FOLDER ]] && MLOG_FOLDER="$HOME/mlog" - -# Make sure that the folder exists -[[ ! -d $MLOG_FOLDER ]] && mkdir -pv $MLOG_FOLDER - -# Make sure that we have a valid TMPDIR -[[ -z $TMPDIR ]] && TMPDIR='/tmp' - -# Make sure that we have a valid EDITOR -[[ -z $EDITOR ]] && EDITOR=vim - -MLOG_HDR='' -MLOG_TS="[$(date)]" -MLOG_LOG="$MLOG_FOLDER/$(date +%Y-%m)" -MLOG_FILE="$TMPDIR/mlog-tmp-$$" - -if [[ -x $HOME/bin/stardate ]] -then - [[ -z $MLOG_RANK ]] && MLOG_RANK='Chief Engineer' - - MLOG_HDR=`echo "$MLOG_RANK's log, Stardate $($HOME/bin/stardate)" | sed 's/.$//'` - - if [[ -e $MLOG_LOG ]] - then - MLOG_LAST=$(grep Stardate $MLOG_LOG | tail -1) - - if [[ "$MLOG_LAST" == "$MLOG_HDR" ]] - then - MLOG_HDR="$MLOG_RANK's log, supplemental" - fi - fi -fi - -$EDITOR $MLOG_FILE - -[[ ! -s $MLOG_FILE ]] && rm -f $MLOG_FILE && exit 0 - - -echo "$MLOG_HDR" >> $MLOG_LOG -echo "$MLOG_TS" >> $MLOG_LOG -echo >> $MLOG_LOG # Empty line -cat $MLOG_FILE >> $MLOG_LOG -echo -en "\n----------------------------------------" >> $MLOG_LOG -echo -e "----------------------------------------\n" >> $MLOG_LOG - -rm -f $MLOG_FILE - diff --git a/scripts/note b/scripts/note deleted file mode 100755 index c398315..0000000 --- a/scripts/note +++ /dev/null @@ -1,330 +0,0 @@ -#!/bin/bash -# Notes manager for the command line - -NOTES_VER="0.1a" -NOTES_DIR="$HOME/.notes" - -# Initialize with the default editor -[ -z "$EDITOR" ] && EDITOR="/usr/bin/vim" - -dprint() { - if [ ! -z $NOTES_DEBUG ]; then - echo $* - fi -} - -notes_init() { - # Check if the notes folder exists, if not, create it - if [ ! -d $NOTES_DIR ] - then - echo -n "Creating notes folder..." - mkdir -p $NOTES_DIR - cd $NOTES_DIR - echo "done." - - git init . - else - echo "Notes has already been initialized." - fi -} - -make_title() { - echo "$*" | sed 's/[^A-Za-z0-9_]\+/-/g' | \ - sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' -} - -title_to_name() { - note_file=$NOTES_DIR/$(make_title $note_arg) -} - -check_arg() { - if [ -z "$note_arg" ] - then - echo "Must specify a note title!" - exit - fi -} - -note_exists() { - [[ -f "$note_file" ]] -} - -check_md5() { - if [[ "$note_old_md5" == "$note_new_md5" ]] - then - echo "No changes to '$note_arg'" - - if [[ ! -z "$1" ]] - then - rm -f $1 - fi - - exit - fi -} - -check_empty() { - if [[ ! -s "$note_file" ]] - then - if [[ "$1" == "restore" ]] - then - cd "$NOTES_DIR" - gitfile=$(basename "$note_file") - git checkout $gitfile - echo "Restored empty note '$note_arg'" - elif [[ "$1" == "delete" ]] - then - rm -f $note_file - echo "Deleted empty note '$note_arg'" - fi - - exit - fi -} - -check_dir() { - if [[ ! -d "$NOTES_DIR" ]] - then - echo "Notes not initialized. Run init first!" - exit - fi -} - -md5_sum() { - openssl dgst -md5 $* -} - -help_cmd() { - echo ' -Notes Manager for the Command Line -================================== - -This is a bash script that lets you take notes which are maintained in a -Git repository. You can run this script by typing the following command -at the command line: - -Usage: note - -Commands --------- -You can use the first letter of each command as a shortcut key. - - Command Usage - ------- ----- - new Follow this with the note name to create a new note - edit Follow this with the note name to edit an existing note - show Follow this with the note name to display an existing note - delete Follow this with the note name to delete a note - find Prints the list of available notes - log Displays the note history - grep Finds all notes with the specified keyword in the text - init Run this the very first time to set up the folders - help Prints this help message - version Prints the version information -' -} - -version_info() { - echo "Notes Manager version $NOTES_VER" -} - -note_new() { - check_dir - check_arg - title_to_name - - if note_exists - then - echo "Note '$note_arg' already exists! Use edit instead." - exit - fi - - echo "$note_arg" > $note_file - note_old_md5=$(md5_sum $note_file) - - $EDITOR $note_file - - note_new_title=$(head -1 $note_file) - note_new_md5=$(md5_sum $note_file) - note_new_file=$NOTES_DIR/$(make_title $note_new_title) - check_md5 $note_file - check_empty delete - - dprint "Original filename = " $note_file - dprint "New filename = " $note_new_file - - # Check for a title rename - if [[ "$note_file" != "$note_new_file" ]] - then - mv -f $note_file $note_new_file - fi - - cd $NOTES_DIR - gitfile=$(basename $note_new_file) - - git add $gitfile - git commit -m "Create note '$note_new_title'" - echo "Created note '$note_new_title'" -} - -note_edit() { - check_dir - check_arg - title_to_name - if ! note_exists - then - echo "Cannot find note '$note_arg'!" - exit - fi - - note_old_title=$(head -1 $note_file) - note_old_md5=$(md5_sum $note_file) - - $EDITOR $note_file - - note_new_title=$(head -1 $note_file) - note_new_md5=$(md5_sum $note_file) - - check_md5 - check_empty restore - - cd $NOTES_DIR - gitfile=$(basename $note_file) - commit_msg="Update note '$note_new_title'" - if [[ "$note_old_title" != "$note_new_title" ]] - then - note_new_file=$(make_title $note_new_title) - - git mv $gitfile $note_new_file - git add $note_new_file - commit_msg="$commit_msg. Rename from '$note_old_title'" - else - git add $gitfile - fi - - git commit -m "$commit_msg" - echo "Updated note '$note_new_title'" -} - -note_show() { - check_dir - check_arg - title_to_name - if ! note_exists - then - echo "Cannot find note '$note_arg'!" - exit - fi - - less -R $note_file -} - -note_delete() { - check_dir - check_arg - title_to_name - if ! note_exists - then - echo "Cannot find note '$note_arg'!" - exit - fi - - cd $NOTES_DIR - gitfile=$(basename $note_file) - git rm $gitfile - git commit -m "Delete note '$note_arg'" - echo "Deleted note '$note_arg'" -} - -note_history() { - check_dir - cd $NOTES_DIR - git log --pretty=format:'%ai - %s' -- $note_arg -} - -note_list() { - check_dir - cd $NOTES_DIR - if [[ -z "$1" ]] - then - ls -1 - else - ls -1 | grep -i $1 - fi -} - -note_search() { - check_dir - - if [[ -z "$1" ]]; then - echo "Must specify a pattern to search titles!" - exit - fi - - cd $NOTES_DIR - for file in * - do - grep --color=always -il "$1" $file - grep --color=always -inhT -m2 -C1 "$1" $file - done -} - -parse_args() { - note_cmd=$1 - shift - note_arg="$*" - - case "$note_cmd" in - "h" | "help") - help_cmd - ;; - - "n" | "new") - note_new - ;; - - "e" | "edit") - note_edit - ;; - - "s" | "show") - note_show - ;; - - "d" | "delete") - note_delete - ;; - - "l" | "log") - note_history - ;; - - "i" | "init") - notes_init - ;; - - "f" | "find") - note_list $1 - ;; - - "g" | "grep") - note_search $1 - ;; - - "v" | "version") - version_info - ;; - - *) - echo "Unrecognized command '$note_cmd'. Use help." - ;; - esac -} - -if [[ $# -lt 1 ]] -then - echo "Usage: note " - echo "Type 'note help' for detailed help" -else - parse_args $* -fi diff --git a/scripts/settitle b/scripts/settitle deleted file mode 100755 index 8cbaa10..0000000 --- a/scripts/settitle +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Set the Xterm/Tmux pane title - -if [[ -z $TMUX ]] -then - echo -e "\033]0;$*\007" -else - echo -e "\033k$*\033\\" -fi - diff --git a/scripts/smartwd b/scripts/smartwd deleted file mode 100755 index 4365752..0000000 --- a/scripts/smartwd +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env ruby -# -*- ruby -*- -# Script to smartly chop off portions of the current working directory for -# use in the shell prompt - -# Some of the methods don't work with Ruby versions older than 1.8.7 -min_release = "1.8.7 (2008-08-11)" -ruby_release = "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE})" - -# Constants used to decide when to start chopping -DIRLIM = 5 -DIR_L = 3 -DIR_R = 2 -PWDLEN = 14 - -def backslash_w - homedir = ENV['HOME'] - pwd = ENV['PWD'] - print pwd.gsub(homedir, '~') -end - -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 / - # (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 - -if (ruby_release < min_release) - backslash_w -else - smartwd -end - diff --git a/scripts/stardate b/scripts/stardate deleted file mode 100755 index c1a7c37..0000000 --- a/scripts/stardate +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env python -""" Calculate the Julian Date """ - -import time -import math - -t = time.time() - -""" Technically, we should be adding 2440587.5, - however, since we are trying to stick to the stardate - concept, we add only 40587.5""" -jd = (t / 86400.0 + 40587.5) - -# Use the idea that 1 Julian day is equal to 1 stardate -print ("%05.9f" % jd)[:-7] -