You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.4 KiB
140 lines
3.4 KiB
# git-gui desktop icon creators |
|
# Copyright (C) 2006, 2007 Shawn Pearce |
|
|
|
proc do_windows_shortcut {} { |
|
global _gitworktree |
|
set fn [tk_getSaveFile \ |
|
-parent . \ |
|
-title [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \ |
|
-initialfile "Git [reponame].lnk"] |
|
if {$fn != {}} { |
|
if {[file extension $fn] ne {.lnk}} { |
|
set fn ${fn}.lnk |
|
} |
|
if {[catch { |
|
win32_create_lnk $fn [list \ |
|
[info nameofexecutable] \ |
|
[file normalize $::argv0] \ |
|
] \ |
|
[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 [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \ |
|
-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 [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \ |
|
-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"] |
|
} |
|
} |
|
}
|
|
|