diff options
-rwxr-xr-x | projects/gentoolkit-nichoj/trunk/changelog.rb | 26 | ||||
-rwxr-xr-x | projects/gentoolkit-nichoj/trunk/eshowkw | 352 | ||||
-rwxr-xr-x | projects/gentoolkit-nichoj/trunk/repoman.rb | 13 | ||||
-rwxr-xr-x | projects/gentoolkit-nichoj/trunk/rubycommit.rb | 108 |
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 |