# 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 { CFBundleDevelopmentRegion English CFBundleExecutable git-gui CFBundleIdentifier org.spearce.git-gui CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.0 NSPrincipalClass NSApplication } 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"] } } }