Spaces:
Runtime error
Runtime error
| # git-gui desktop icon creators | |
| # Copyright (C) 2006, 2007 Shawn Pearce | |
| proc do_windows_shortcut {} { | |
| global _gitworktree | |
| set fn [tk_getSaveFile \ | |
| -parent . \ | |
| -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ | |
| -initialfile "Git [reponame].lnk"] | |
| if {$fn != {}} { | |
| if {[file extension $fn] ne {.lnk}} { | |
| set fn ${fn}.lnk | |
| } | |
| # Use git-gui.exe if available (ie: git-for-windows) | |
| set cmdLine [auto_execok git-gui.exe] | |
| if {$cmdLine eq {}} { | |
| set cmdLine [list [info nameofexecutable] \ | |
| [file normalize $::argv0]] | |
| } | |
| if {[catch { | |
| win32_create_lnk $fn $cmdLine \ | |
| [file normalize $_gitworktree] | |
| } err]} { | |
| error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"] | |
| } | |
| } | |
| } | |
| proc do_cygwin_shortcut {} { | |
| global argv0 _gitworktree | |
| if {[catch { | |
| set desktop [exec cygpath \ | |
| --windows \ | |
| --absolute \ | |
| --long-name \ | |
| --desktop] | |
| }]} { | |
| set desktop . | |
| } | |
| set fn [tk_getSaveFile \ | |
| -parent . \ | |
| -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ | |
| -initialdir $desktop \ | |
| -initialfile "Git [reponame].lnk"] | |
| if {$fn != {}} { | |
| if {[file extension $fn] ne {.lnk}} { | |
| set fn ${fn}.lnk | |
| } | |
| if {[catch { | |
| set sh [exec cygpath \ | |
| --windows \ | |
| --absolute \ | |
| /bin/sh.exe] | |
| set me [exec cygpath \ | |
| --unix \ | |
| --absolute \ | |
| $argv0] | |
| win32_create_lnk $fn [list \ | |
| $sh -c \ | |
| "CHERE_INVOKING=1 source /etc/profile;[sq $me] &" \ | |
| ] \ | |
| [file normalize $_gitworktree] | |
| } err]} { | |
| error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"] | |
| } | |
| } | |
| } | |
| proc do_macosx_app {} { | |
| global argv0 env | |
| set fn [tk_getSaveFile \ | |
| -parent . \ | |
| -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ | |
| -initialdir [file join $env(HOME) Desktop] \ | |
| -initialfile "Git [reponame].app"] | |
| if {$fn != {}} { | |
| if {[file extension $fn] ne {.app}} { | |
| set fn ${fn}.app | |
| } | |
| if {[catch { | |
| set Contents [file join $fn Contents] | |
| set MacOS [file join $Contents MacOS] | |
| set exe [file join $MacOS git-gui] | |
| file mkdir $MacOS | |
| set fd [open [file join $Contents Info.plist] w] | |
| puts $fd {<?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0"> | |
| <dict> | |
| <key>CFBundleDevelopmentRegion</key> | |
| <string>English</string> | |
| <key>CFBundleExecutable</key> | |
| <string>git-gui</string> | |
| <key>CFBundleIdentifier</key> | |
| <string>org.spearce.git-gui</string> | |
| <key>CFBundleInfoDictionaryVersion</key> | |
| <string>6.0</string> | |
| <key>CFBundlePackageType</key> | |
| <string>APPL</string> | |
| <key>CFBundleSignature</key> | |
| <string>????</string> | |
| <key>CFBundleVersion</key> | |
| <string>1.0</string> | |
| <key>NSPrincipalClass</key> | |
| <string>NSApplication</string> | |
| </dict> | |
| </plist>} | |
| close $fd | |
| set fd [open $exe w] | |
| puts $fd "#!/bin/sh" | |
| foreach name [lsort [array names env]] { | |
| set value $env($name) | |
| switch -- $name { | |
| GIT_DIR { set value [file normalize [gitdir]] } | |
| } | |
| switch -glob -- $name { | |
| SSH_* - | |
| GIT_* { | |
| puts $fd "if test \"z\$$name\" = z; then" | |
| puts $fd " export $name=[sq $value]" | |
| puts $fd "fi &&" | |
| } | |
| } | |
| } | |
| puts $fd "export PATH=[sq [file dirname $::_git]]:\$PATH &&" | |
| puts $fd "cd [sq [file normalize [pwd]]] &&" | |
| puts $fd "exec \\" | |
| puts $fd " [sq [info nameofexecutable]] \\" | |
| puts $fd " [sq [file normalize $argv0]]" | |
| close $fd | |
| file attributes $exe -permissions u+x,g+x,o+x | |
| } err]} { | |
| error_popup [strcat [mc "Cannot write icon:"] "\n\n$err"] | |
| } | |
| } | |
| } | |