Add a quiet config function
[lilypond/dscho.git] / lilycontrib.tcl
blobf35409df84a38eec1e7ba7017d2d3c11d3493528
1 #!/usr/bin/wish
3 package require Tk
5 # Helper functions
7 set lily_dir $env(HOME)/lilypond
8 cd $lily_dir
10 proc write_to_output {s} {
11 .output.text insert insert $s
12 .output.text see end
15 proc write_file_to_output {f} {
16 if {[eof $f]} {
17 global git_command
18 fconfigure $f -blocking true
19 if {[catch {close $f} err]} {
20 tk_messageBox -type ok -message "Git aborted: $err"
22 unset git_command
23 } else {
24 write_to_output [read $f 24]
28 proc git {args} {
29 global lily_dir git_command
30 file mkdir $lily_dir
31 set git_command [linsert $args 0 "|git" "--git-dir=$lily_dir/.git"]
32 set git_command "$git_command 2>@1"
33 #.output.text insert end "$git_command\n"
34 set git [open $git_command r]
35 fconfigure $git -blocking false
36 fileevent $git readable [list write_file_to_output $git]
37 vwait git_command
40 proc config {args} {
41 global lily_dir
42 set p [open [linsert $args 0 "|git" --git-dir=$lily_dir/.git config] r]
43 set result [regsub "\n\$" [read $p] ""]
44 if {[catch {close $p} err]} {
45 tk_messageBox -type ok -message "config failed: $err"
47 return $result
50 proc config_quiet {args} {
51 global lily_dir
52 set p [open [linsert $args 0 "|git" --git-dir=$lily_dir/.git config] r]
53 set result [regsub "\n\$" [read $p] ""]
54 if {[catch {close $p} err]} {
55 set result ""
57 return $result
60 proc update_lilypond {} {
61 global lily_dir
62 if {![file exists $lily_dir]} {
63 file mkdir $lily_dir
64 git init
65 git config core.bare false
66 git remote add -t master \
67 origin git://repo.or.cz/lilypond.git
68 git fetch --depth 1
69 git reset --hard origin/master
70 git config branch.master.remote origin
71 git config branch.master.merge refs/heads/master
72 .update configure -text "Update LilyPond"
73 } else {
74 git fetch origin
75 git merge origin/master
77 write_to_output "Done.\n"
80 # GUI
82 wm title . "LilyPond Contributor's GUI"
84 # Buttons
86 panedwindow .buttons
87 button .buttons.update -text "Update LilyPond" -command update_lilypond
88 if {![file exists $lily_dir]} {
89 .update configure -text "Clone LilyPond"
91 pack .buttons.update -side left
93 # Output
95 panedwindow .output
96 text .output.text -width 80 -height 15 \
97 -xscrollcommand [list .output.horizontal set] \
98 -yscrollcommand [list .output.vertical set]
99 scrollbar .output.horizontal -orient h -command [list .output.text xview]
100 scrollbar .output.vertical -orient v -command [list .output.text yview]
101 pack .output.horizontal -side bottom -fill x
102 pack .output.vertical -side right -fill y
103 pack .output.text -expand true -anchor nw -fill both
105 pack .buttons .output