summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Nichols <nichoj@gentoo.org>2006-09-14 01:33:20 +0000
committerJoshua Nichols <nichoj@gentoo.org>2006-09-14 01:33:20 +0000
commit1abb3d6512ccff4a661556bbdc08ff3d1cdcf877 (patch)
treeb446625503945db27646f30793c03eb00401acbc
parentTweaked chroot-execute, to make sure lv gets mounted properly when executing ... (diff)
downloadnichoj-1abb3d6512ccff4a661556bbdc08ff3d1cdcf877.tar.gz
nichoj-1abb3d6512ccff4a661556bbdc08ff3d1cdcf877.tar.bz2
nichoj-1abb3d6512ccff4a661556bbdc08ff3d1cdcf877.zip
Removed eshowkw, using adjutrix instead. Uses repoman directory instead of wrapper around it. Added check to use qualudis. Other cleanups.
svn path=/; revision=71
-rwxr-xr-xprojects/gentoolkit-nichoj/trunk/changelog.rb26
-rwxr-xr-xprojects/gentoolkit-nichoj/trunk/eshowkw352
-rwxr-xr-xprojects/gentoolkit-nichoj/trunk/repoman.rb13
-rwxr-xr-xprojects/gentoolkit-nichoj/trunk/rubycommit.rb108
4 files changed, 84 insertions, 415 deletions
diff --git a/projects/gentoolkit-nichoj/trunk/changelog.rb b/projects/gentoolkit-nichoj/trunk/changelog.rb
deleted file mode 100755
index 4eeb5d3..0000000
--- a/projects/gentoolkit-nichoj/trunk/changelog.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/ruby -w
-module ChangeLog
- def ChangeLog.getLastEntry()
- f = File.new('ChangeLog')
- entry=''
-
- while line = f.gets
- # TODO parametize this
- if(line.match(/nichoj@gentoo.org/))
-
- while ! line.match(/:$/)
- line = f.gets
- end
-
- while (line = f.gets) && line.strip != ''
- entry += line.strip + ' '
- end
-
- break
- end
- end
-
- f.close
- return entry.rstrip
- end
-end
diff --git a/projects/gentoolkit-nichoj/trunk/eshowkw b/projects/gentoolkit-nichoj/trunk/eshowkw
deleted file mode 100755
index c174939..0000000
--- a/projects/gentoolkit-nichoj/trunk/eshowkw
+++ /dev/null
@@ -1,352 +0,0 @@
-#!/bin/bash
-# vim: set sw=4 sts=4 et tw=80 :
-
-# Author: Ciaran McCreesh <ciaranm@gentoo.org>
-# Purpose: Display ebuild keywords in a graphical form
-# Invocation: eshowkw [ packagename ] (defaults to current directory if no
-# packagename is provided)
-
-shopt -s extglob
-
-PID_TO_KILL=$$
-
-die() {
- echo "$@" 1>&2
- kill $PID_TO_KILL
-}
-
-trap 'exit 250' 15
-
-get_portage_dir() {
- local dir
- if [[ -z ${portage_dir_cache} ]] ; then
- for dir in "${HOME}/cvs/gentoo-x86" "/usr/portage" ; do
- [[ -d ${dir}/profiles ]] && portage_dir_cache=${dir} && break
- done
- fi
- [[ -z ${portage_dir_cache} ]] && portage_dir_cache=$(portageq portdir )
- export portage_dir_cache
- echo ${portage_dir_cache}
-}
-
-version_sort() {
- local items= left=0
- items=( $@ )
-
- while [[ ${left} -lt ${#items[@]} ]] ; do
- local lowest_idx=${left}
- local idx=$(( ${lowest_idx} + 1 ))
- while [[ ${idx} -lt ${#items[@]} ]] ; do
- version_compare "${items[${lowest_idx}]}" "${items[${idx}]}"
- [[ $? -eq 3 ]] && lowest_idx=${idx}
- idx=$(( ${idx} + 1 ))
- done
- local tmp=${items[${lowest_idx}]}
- items[${lowest_idx}]=${items[${left}]}
- items[${left}]=${tmp}
- left=$(( ${left} + 1 ))
- done
- echo ${items[@]}
-}
-
-version_compare() {
- local ver_a=${1} ver_b=${2} parts_a parts_b cur_idx_a=0 cur_idx_b=0
- parts_a=( $(get_all_version_components "${ver_a}" ) )
- parts_b=( $(get_all_version_components "${ver_b}" ) )
-
- ### compare number parts.
- local inf_loop=0
- while true ; do
- # grab the current number components
- local cur_tok_a=${parts_a[${cur_idx_a}]}
- local cur_tok_b=${parts_b[${cur_idx_b}]}
-
- # number?
- if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]] ; then
- cur_idx_a=$(( ${cur_idx_a} + 1 ))
- [[ ${parts_a[${cur_idx_a}]} == "." ]] \
- && cur_idx_a=$(( ${cur_idx_a} + 1 ))
- else
- cur_tok_a=""
- fi
-
- if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]] ; then
- cur_idx_b=$(( ${cur_idx_b} + 1 ))
- [[ ${parts_b[${cur_idx_b}]} == "." ]] \
- && cur_idx_b=$(( ${cur_idx_b} + 1 ))
- else
- cur_tok_b=""
- fi
-
- # done with number components?
- [[ -z ${cur_tok_a} ]] && [[ -z ${cur_tok_b} ]] && break
-
- # to avoid going into octal mode, strip any leading zeros. otherwise
- # bash will throw a hissy fit on versions like 6.3.068.
- cur_tok_a=${cur_tok_a##+(0)}
- cur_tok_b=${cur_tok_b##+(0)}
-
- # if a component is blank, make it zero.
- [[ -z ${cur_tok_a} ]] && cur_tok_a=0
- [[ -z ${cur_tok_b} ]] && cur_tok_b=0
-
- # compare
- [[ ${cur_tok_a} -lt ${cur_tok_b} ]] && return 1
- [[ ${cur_tok_a} -gt ${cur_tok_b} ]] && return 3
- done
-
- ### number parts equal. compare letter parts.
- local letter_a=
- letter_a=${parts_a[${cur_idx_a}]}
- if [[ ${#letter_a} -eq 1 ]] && [[ -z ${letter_a/[a-z]} ]] ; then
- cur_idx_a=$(( ${cur_idx_a} + 1 ))
- else
- letter_a="@"
- fi
-
- local letter_b=
- letter_b=${parts_b[${cur_idx_b}]}
- if [[ ${#letter_b} -eq 1 ]] && [[ -z ${letter_b/[a-z]} ]] ; then
- cur_idx_b=$(( ${cur_idx_b} + 1 ))
- else
- letter_b="@"
- fi
-
- # compare
- [[ ${letter_a} < ${letter_b} ]] && return 1
- [[ ${letter_a} > ${letter_b} ]] && return 3
-
- ### letter parts equal. compare suffixes in order.
- local suffix rule part r_lt r_gt
- for rule in "alpha=1" "beta=1" "pre=1" "rc=1" "p=3" "r=3" ; do
- suffix=${rule%%=*}
- r_lt=${rule##*=}
- [[ ${r_lt} -eq 1 ]] && r_gt=3 || r_gt=1
-
- local suffix_a=
- for part in ${parts_a[@]} ; do
- [[ ${part#${suffix}} != ${part} ]] && \
- [[ -z ${part##${suffix}*([[:digit:]])} ]] && \
- suffix_a=${part#${suffix}}0
- done
-
- local suffix_b=
- for part in ${parts_b[@]} ; do
- [[ ${part#${suffix}} != ${part} ]] && \
- [[ -z ${part##${suffix}*([[:digit:]])} ]] && \
- suffix_b=${part#${suffix}}0
- done
-
- [[ -z ${suffix_a} ]] && [[ -z ${suffix_b} ]] && continue
-
- [[ -z ${suffix_a} ]] && return ${r_gt}
- [[ -z ${suffix_b} ]] && return ${r_lt}
-
- # avoid octal problems
- suffix_a=${suffix_a##+(0)} ; suffix_a=${suffix_a:-0}
- suffix_b=${suffix_b##+(0)} ; suffix_b=${suffix_b:-0}
-
- [[ ${suffix_a} -lt ${suffix_b} ]] && return 1
- [[ ${suffix_a} -gt ${suffix_b} ]] && return 3
- done
-
- ### no differences.
- return 2
-}
-
-get_all_version_components() {
- local ver_str=${1} result result_idx=0
- result=( )
-
- while [[ -n "$ver_str" ]] ; do
- case "${ver_str:0:1}" in
- # number: parse whilst we have a number
- [[:digit:]])
- result[$result_idx]="${ver_str%%[^[:digit:]]*}"
- ver_str="${ver_str##+([[:digit:]])}"
- result_idx=$(($result_idx + 1))
- ;;
-
- # separator: single character
- [-_.])
- result[$result_idx]="${ver_str:0:1}"
- ver_str="${ver_str:1}"
- result_idx=$(($result_idx + 1))
- ;;
-
- # letter: grab the letters plus any following numbers
- [[:alpha:]])
- local not_match="${ver_str##+([[:alpha:]])*([[:digit:]])}"
- result[$result_idx]=${ver_str:0:$((${#ver_str} - ${#not_match}))}
- ver_str="${not_match}"
- result_idx=$(($result_idx + 1))
- ;;
-
- # huh?
- *)
- result[$result_idx]="${ver_str:0:1}"
- ver_str="${ver_str:1}"
- result_idx=$(($result_idx + 1))
- ;;
- esac
- done
-
- echo ${result[@]}
-}
-
-get_package_dir() {
- if [[ -z ${1} ]] ; then
- pwd
- return 0
- fi
-
- if [[ -d ${1} ]] ; then
- readlink -f ${1}
- return 0
- fi
-
- get_portage_dir 1>/dev/null
- if [[ ${1/\/} != ${1} ]] ; then
- local d=$(get_portage_dir )/${1}
- if [[ -d ${d} ]] ; then
- echo ${d}
- return 0
- fi
- else
- local d
- d=( $(echo $(get_portage_dir )/*-*/${1} ) )
- if [[ ${#d[@]} -gt 1 ]] ; then
- die "${1} is ambiguous"
- elif [[ -d ${d[0]} ]] ; then
- echo ${d[0]}
- return 0
- fi
- fi
-
- return 1
-}
-
-repeat() {
- local i
- for (( i=0 ; i < ${1} ; i=$(( ${i} + 1 )) )) ; do
- echo -n "${2}"
- done
-}
-
-get_keywords() {
- (
- inherit() { :; }
- source ${1} 2>/dev/null
- echo ${KEYWORDS}
- )
-}
-
-colorarch() {
- case "${1}" in
- amd64)
- echo -n -e "\033[0;33m${2}\033[0;0m"
- ;;
- x86)
- echo -n -e "\033[0;31m${2}\033[0;0m"
- ;;
- *)
- echo -n "${2}"
- ;;
- esac
-}
-
-colourise() {
- case "${1}" in
- \*)
- echo -n -e "\033[0;31m*\033[0;0m"
- ;;
- +)
- echo -n -e "\033[0;32m+\033[0;0m"
- ;;
- -)
- echo -n -e "\033[0;31m-\033[0;0m"
- ;;
- \~)
- echo -n -e "\033[0;33m~\033[0;0m"
- ;;
- *)
- echo -n "${1}"
- ;;
- esac
-}
-
-show_keyword_diagram() {
- echo -n -e "Keywords for \033[1;34m"
- local title=$(readlink -f $(pwd ) )
- title=${title#$(readlink -f ../.. )/*( )}
- echo -n "${title}"
- echo -e "\033[0;0m:"
- echo
-
- local archs= arch_length=0 arch=
- archs=( $(< $(get_portage_dir )/profiles/arch.list ) )
- for arch in "${archs[@]}" ; do
- [[ ${#arch} -gt ${arch_length} ]] && arch_length=${#arch}
- done
-
- local versions= pkgname= version_length=0 version=
- pkgname=$(basename $(readlink -f ./ ) )
- versions=( $(for e in $(echo *.ebuild ) ; do \
- [[ -f ${e} ]] && echo ${e} | sed -e 's/\.ebuild$//g' \
- -e "s/^${pkgname}-//g" ; \
- done ) )
- versions=( $(version_sort ${versions[@]} ) )
- for version in "${versions[@]}" ; do
- [[ ${#version} -gt ${version_length} ]] && version_length=${#version}
- done
-
- local i=0 archletter=
- for (( i = 0 ; i < ${arch_length} ; i=$(( ${i} + 1 )) )) ; do
- repeat ${version_length} " "
- echo -n " | "
- for arch in "${archs[@]}" ; do
- archletter="${arch:${i}:1}"
- echo -n "$(colorarch "${arch}" "${archletter:- }" ) "
- done
- echo
- done
-
- repeat ${version_length} "-"
- echo -n "-+"
- repeat ${#archs[@]} "--"
- echo
-
- for version in "${versions[@]}" ; do
- echo -n "${version}"
- repeat $(( ${version_length} - ${#version} )) " "
- echo -n " | "
-
- local keyword keywords
- keywords=( $(get_keywords "${pkgname}-${version}.ebuild" ) )
- for arch in "${archs[@]}" ; do
- local display=" "
- [[ ${keywords[@]/-\*} != ${keywords[@]} ]] && display="*"
- for keyword in "${keywords[@]}" ; do
- [[ ${arch} == "${keyword#[~-]}" ]] && \
- display=${keyword:0:1} && \
- break;
- done
- [[ -z ${display#[~ *-]} ]] || display="+"
- echo -n "$(colourise "${display}" ) "
- done
-
- echo
- done
-}
-
-main() {
- local dir=$(get_package_dir "${1}" )
- [[ -z ${dir} ]] && die "Couldn't find '${1}'"
- cd ${dir}
- [[ $(echo *.ebuild ) != "*.ebuild" ]] || die "No ebuilds in ${dir}"
- show_keyword_diagram
- true
-}
-
-main "$@"
-
diff --git a/projects/gentoolkit-nichoj/trunk/repoman.rb b/projects/gentoolkit-nichoj/trunk/repoman.rb
deleted file mode 100755
index 280ba92..0000000
--- a/projects/gentoolkit-nichoj/trunk/repoman.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/ruby -w
-
-module Repoman
- def Repoman.scan()
- system "repoman scan"
- end
- def Repoman.full()
- system "repoman full"
- end
- def Repoman.commit(commitmsg)
- system "repoman commit --commitmsg \"#{commitmsg}\""
- end
-end
diff --git a/projects/gentoolkit-nichoj/trunk/rubycommit.rb b/projects/gentoolkit-nichoj/trunk/rubycommit.rb
index c79c964..d28897b 100755
--- a/projects/gentoolkit-nichoj/trunk/rubycommit.rb
+++ b/projects/gentoolkit-nichoj/trunk/rubycommit.rb
@@ -1,13 +1,39 @@
#!/usr/bin/ruby -w
$: << File.dirname(__FILE__)
-require 'changelog'
-require 'repoman'
+
+module ChangeLog
+ def ChangeLog.getLastEntry()
+ f = File.new('ChangeLog')
+ entry=''
+
+ while line = f.gets
+ # TODO parametize this
+ if(line.match(/nichoj@gentoo.org/))
+ while ! line.match(/:$/)
+ line = f.gets
+ end
+
+ while (line = f.gets) && line.strip != ''
+ entry += line.strip + ' '
+ end
+ break
+ end
+ end
+
+ f.close
+ return entry.rstrip
+ end
+end
def isSvn
File.directory? '.svn'
end
+def isCvs
+ File.directory? 'CVS'
+end
+
def display_heading(message)
max = 80
filler = '#######################'
@@ -21,41 +47,75 @@ def hr
puts '#' * max
end
-display_heading('eshowkw')
-system('eshowkw')
-display_heading('diff')
-if isSvn:
- system('svn diff')
-else
- system('cvs diff')
+
+def show_keywords()
+ display_heading('Keywords')
+ system('adjutrix --keyword-graph 2>/dev/null')
+end
+
+def show_diff()
+ if isSvn or isCvs
+ display_heading('diff')
+ if isSvn
+ system('svn diff')
+ elsif isCvs
+ system('cvs diff')
+ end
+ puts 'Exit status: ' + $?.to_s
+ return $?
+ end
end
-puts 'Exit status: ' + $?.to_s
-$? == 2 && exit()
-display_heading 'repoman full'
-Repoman.full()
-puts 'Exit status: ' + $?.to_s
-$? != 0 && exit()
+def show_repoman
+ display_heading 'repoman full'
+ system('repoman full')
+ puts 'Exit status: ' + $?.to_s
+ return $?
+end
+def show_qualudis
+ display_heading 'qualudis'
+ system('qualudis')
+ puts 'Exit status: ' + $?.to_s
+ return $?
+end
+
+def get_logentry()
# use log entry from command line
-logentry = ARGV[0]
-# or default to your last ChangeLog entry
-if File.file?('ChangeLog') && logentry.nil? :
- logentry = ChangeLog.getLastEntry()
+ logentry = ARGV[0]
+ # or default to your last ChangeLog entry
+ if logentry.nil? and File.file?('ChangeLog')
+ logentry = ChangeLog.getLastEntry()
+ end
+ return logentry
+end
+
+def show_logentry(logentry)
+ display_heading('ChangeLog')
+ puts logentry
+ display_heading('Continue? (yes/no)')
end
+show_keywords
+show_diff or exit 1
+show_qualudis or exit 1
+show_repoman or exit 1
+
+
+logentry = get_logentry()
+
# escape the log entry
escaped = logentry.gsub("'") { "\\'" }
-display_heading('ChangeLog')
-puts logentry
-display_heading('Continue? (yes/no)')
+show_logentry(logentry)
+
-if gets.match(/y|yes/i)
+line = gets
+if line.match(/y|yes/i)
display_heading('Committing...')
if isSvn
system("svn commit -m \"#{escaped}\"")
else
- Repoman.commit(escaped)
+ system("repoman commit -m \"#{escaped}\"")
end
end