1 # git-gui desktop icon creators
2 # Copyright (C) 2006, 2007 Shawn Pearce
4 proc do_windows_shortcut
{} {
5 set fn
[tk_getSaveFile \
7 -title [append "[appname] ([reponame]): " [mc
"Create Desktop Icon"]] \
8 -initialfile "Git [reponame].lnk"]
10 if {[file extension
$fn] ne
{.lnk
}} {
14 win32_create_lnk
$fn [list \
15 [info nameofexecutable
] \
16 [file normalize
$::argv0] \
18 [file dirname
[file normalize
[gitdir
]]]
20 error_popup
[strcat
[mc
"Cannot write shortcut:"] "\n\n$err"]
25 proc do_cygwin_shortcut
{} {
29 set desktop
[exec cygpath
\
37 set fn
[tk_getSaveFile \
39 -title [append "[appname] ([reponame]): " [mc
"Create Desktop Icon"]] \
40 -initialdir $desktop \
41 -initialfile "Git [reponame].lnk"]
43 if {[file extension
$fn] ne
{.lnk
}} {
47 set sh
[exec cygpath
\
51 set me
[exec cygpath
\
55 win32_create_lnk
$fn [list \
57 "CHERE_INVOKING=1 source /etc/profile;[sq $me] &" \
59 [file dirname
[file normalize
[gitdir
]]]
61 error_popup
[strcat
[mc
"Cannot write shortcut:"] "\n\n$err"]
66 proc do_macosx_app
{} {
69 set fn
[tk_getSaveFile \
71 -title [append "[appname] ([reponame]): " [mc
"Create Desktop Icon"]] \
72 -initialdir [file join $env(HOME
) Desktop
] \
73 -initialfile "Git [reponame].app"]
75 if {[file extension
$fn] ne
{.app
}} {
79 set Contents
[file join $fn Contents
]
80 set MacOS
[file join $Contents MacOS
]
81 set exe
[file join $MacOS git-gui
]
85 set fd
[open [file join $Contents Info.plist
] w
]
86 puts $fd {<?xml version
="1.0" encoding="UTF-8"?
>
87 <!DOCTYPE plist PUBLIC
"-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
90 <key
>CFBundleDevelopmentRegion
</key
>
91 <string>English
</string>
92 <key
>CFBundleExecutable
</key
>
93 <string>git-gui
</string>
94 <key
>CFBundleIdentifier
</key
>
95 <string>org.spearce.git-gui
</string>
96 <key
>CFBundleInfoDictionaryVersion
</key
>
98 <key
>CFBundlePackageType
</key
>
100 <key
>CFBundleSignature
</key
>
101 <string>????
</string>
102 <key
>CFBundleVersion
</key
>
104 <key
>NSPrincipalClass
</key
>
105 <string>NSApplication
</string>
112 foreach name
[lsort [array names env
]] {
113 set value
$env($name)
115 GIT_DIR
{ set value
[file normalize
[gitdir
]] }
118 switch -glob -- $name {
121 puts $fd "if test \"z\$$name\" = z; then"
122 puts $fd " export $name=[sq $value]"
127 puts $fd "export PATH=[sq [file dirname $::_git]]:\$PATH &&"
128 puts $fd "cd [sq [file normalize [pwd]]] &&"
130 puts $fd " [sq [info nameofexecutable]] \\"
131 puts $fd " [sq [file normalize $argv0]]"
134 file attributes
$exe -permissions u
+x
,g
+x
,o
+x
136 error_popup
[strcat
[mc
"Cannot write icon:"] "\n\n$err"]