Spaces:
Running
Running
# 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"] | |
} | |
} | |
} | |