X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=commitid.scad.pl;h=053bcc32f91fe6f7d5051cd26edfb4fed785df08;hb=d9f979afb3faa0ba92f86d5c5221a59f0dd8a89f;hp=9a7667dc82c9b4f1339451522e11bb6b0dc60529;hpb=37ee8edb162304dbd4db9a91b951ac2602c116ef;p=reprap-play.git diff --git a/commitid.scad.pl b/commitid.scad.pl index 9a7667d..053bcc3 100755 --- a/commitid.scad.pl +++ b/commitid.scad.pl @@ -52,64 +52,47 @@ $SIG{__WARN__} = sub { die @_; }; # # We can generate these forms: # -# Small3: -# Small4: -# Small5: -# Small6: -# Small7: -# Small8: -# Small9: -# Small10: +# In each case: +# if tree is dirty, * is suffixed or prefixed to count or commitid +# if tree has untracked files, + is added +# (where it is added depends on the Form; in any case it does not +# change the size, but steals space from digits) +# +# Small2 Small3 ... Small10: # git rev-list --first-parent --count HEAD # typically 3-4 characters but we allow for up to 6 # padded with zeroes; if too long we reduce mod 10^n -# eg -# Small4 1070 -# If tree is dirty, + or * is suffixed, reducing number of -# digits by 1. +# eg if the count is 123456 +# Small5 3456* +# Small8 __123456 (where _ are spaces) # -# Small4S: -# Small6S: Small6T: -# Small8S: Small9T: -# Small10S: +# Small2S Small4S ... Small10S: +# Small3T Small9T: # same but split into two lines (S) or three lines (T) eg -# Small4S 10 Small6t 1 -# 70 07 -# 0* +# Small4S 45 Small6T _3 +# 6* 45 +# 6* # -# Git4 Git4S -# Git6 Git6S Git6T -# Git8 Git8S -# Git9 Git9T -# Git10 Git10S +# Git2 Git3 ... Git10: +# Git4S Git6S ... Git10S: +# Git6T Git9T: # git-rev-parse HEAD (prefix of requested length) -# eg -# Git6 82f2a2 -# If tree is dirty, + or * is suffixed to commitid, -# reducing number of hex digits by 1. - -# Full3 -# Full4 -# Full5 -# Full6 -# Full7 -# Full8 -# Full9 -# Full10 +# eg if the commitid is abcdef0123... +# Git5 abcd* + +# Full4 Full6 ... Full10: # git-rev-list --first-parent --count HEAD # git-rev-parse HEAD # eg -# Full6 82f2a2 -# 1070 -# If tree is dirty, + or * is suffixed to count (but not to -# commitid) reducing number of digits by 1. +# Full6 abcdef Full8 abcdef01 +# 23456* _123456* # -# Full6T -# Full9T -# Full12T -# Full15T -# As Full but commit is split over two lines for a 3-line message; -# dirty marker is in commitid. +# Full6T Full9T ... Full30T +# as Full but commit is split over two lines +# for a 3-line message; eg +# Full9T abc +# de* +# 456 # # FontDemo # @@ -140,9 +123,9 @@ our $gtm_demo_i = -1; our $gtm_demo_j; our @gtm_demo_o; -sub gentextmodule_demo_start_batch ($;$) { - ($gtm_demo_i, $gtm_demo_j) = @_; - $gtm_demo_j //= 0; +sub gentextmodule_demo_start_batch () { + $gtm_demo_j = 0; + $gtm_demo_i++; } sub gentextmodule ($@) { @@ -264,16 +247,21 @@ our $do_git; # contains may chars 'c' (count) and/or 'o' (object) our $do_git_untracked = 1; our $argcounter; -sub rjustt ($$) { # right justify and truncate (ie, pad and truncate at left) - my ($sz, $whole) = @_; +sub rjustt ($$;$) { # right justify and truncate (ie, pad and truncate at left) + # always includes prefix + my ($sz, $whole, $prefix) = @_; + $prefix //= ''; my $lw = length $whole; - return $lw > $sz - ? substr($whole, $lw-$sz) - : sprintf "%${sz}s", $whole; + my $spare = $sz - $lw - (length $prefix); + return + ($spare > 0 ? (' ' x $spare) : ''). + $prefix. + substr($whole, ($spare < 0 ? -$spare : 0)); } -sub ljustt ($$$) { # always includes $suffix +sub ljustt ($$;$) { my ($sz, $whole, $suffix) = @_; + $suffix //= ''; $sz -= length $suffix; return sprintf "%-${sz}.${sz}s%s", $whole, $suffix; } @@ -349,10 +337,10 @@ sub do_git () { $git_object = gitoutput qw(rev-parse HEAD); } - foreach my $sz (3..10) { - gentextmodule_demo_start_batch($sz-3); + foreach my $sz (2..10) { + gentextmodule_demo_start_batch(); - gentextmodule_plusq("Small$sz", rjustt($sz, $git_count.$git_dirty)) + gentextmodule_plusq("Small$sz", rjustt($sz, $git_count, $git_dirty)) if defined $git_count; gentextmodule_plusq("Git$sz", ljustt($sz, $git_object, $git_dirty)) @@ -360,16 +348,14 @@ sub do_git () { if (defined $git_count && defined $git_object) { gentextmodule("Full$sz", - ljustt($sz, $git_object, ''), - rjustt($sz, $git_count.$git_dirty)); - - if (!($sz % 2)) { - my $e = $sz/2; - gentextmodule("Full".($e*3)."T", - ljustt($e*2, $git_object, $git_dirty) - =~ m/.{$e}/g, - rjustt($e, $git_count)); - } + ljustt($sz, $git_object), + rjustt($sz, $git_count, $git_dirty)); + + my $e = $sz; + gentextmodule("Full".($e*3)."T", + ljustt($e*2, $git_object, $git_dirty) + =~ m/.{$e}/g, + rjustt($e, $git_count)); } } } @@ -398,7 +384,7 @@ while (@ARGV) { $do_git //= defined($argcounter) ? '' : 'co'; -gentextmodule_demo_start_batch(-1); +gentextmodule_demo_start_batch(); gentextmodule('FontDemo', @demo); do_git();