blob: 97d1d7aa02686606912dd5ff7b512343083a17c0 [file] [log] [blame]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -04001# git-gui desktop icon creators
2# Copyright (C) 2006, 2007 Shawn Pearce
3
4proc do_windows_shortcut {} {
Giuseppe Bilotta3748b032010-01-23 11:03:38 +01005 global _gitworktree
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -04006 set fn [tk_getSaveFile \
7 -parent . \
Vasco Almeidaa3d97af2016-05-08 10:52:57 +00008 -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -04009 -initialfile "Git [reponame].lnk"]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040010 if {$fn != {}} {
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040011 if {[file extension $fn] ne {.lnk}} {
12 set fn ${fn}.lnk
Shawn O. Pearce47282d42007-07-05 18:39:40 -040013 }
Pat Thoytsf110c462016-10-02 22:19:47 +010014 # Use git-gui.exe if available (ie: git-for-windows)
15 set cmdLine [auto_execok git-gui.exe]
16 if {$cmdLine eq {}} {
17 set cmdLine [list [info nameofexecutable] \
18 [file normalize $::argv0]]
19 }
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040020 if {[catch {
Pat Thoytsf110c462016-10-02 22:19:47 +010021 win32_create_lnk $fn $cmdLine \
Heiko Voigta197b1e2010-02-27 21:45:51 +010022 [file normalize $_gitworktree]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040023 } err]} {
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040024 error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040025 }
26 }
27}
28
29proc do_cygwin_shortcut {} {
Giuseppe Bilotta3748b032010-01-23 11:03:38 +010030 global argv0 _gitworktree
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040031
32 if {[catch {
33 set desktop [exec cygpath \
34 --windows \
35 --absolute \
36 --long-name \
37 --desktop]
38 }]} {
39 set desktop .
40 }
41 set fn [tk_getSaveFile \
42 -parent . \
Vasco Almeidaa3d97af2016-05-08 10:52:57 +000043 -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040044 -initialdir $desktop \
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040045 -initialfile "Git [reponame].lnk"]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040046 if {$fn != {}} {
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040047 if {[file extension $fn] ne {.lnk}} {
48 set fn ${fn}.lnk
Shawn O. Pearce47282d42007-07-05 18:39:40 -040049 }
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040050 if {[catch {
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040051 set sh [exec cygpath \
52 --windows \
53 --absolute \
Shawn O. Pearce6a5955f2007-07-09 11:09:27 -040054 /bin/sh.exe]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040055 set me [exec cygpath \
56 --unix \
57 --absolute \
58 $argv0]
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040059 win32_create_lnk $fn [list \
60 $sh -c \
Phil Lawrence880fa112009-03-09 17:09:49 -050061 "CHERE_INVOKING=1 source /etc/profile;[sq $me] &" \
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040062 ] \
Heiko Voigta197b1e2010-02-27 21:45:51 +010063 [file normalize $_gitworktree]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040064 } err]} {
Shawn O. Pearce51a41ac2007-10-12 16:11:35 -040065 error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040066 }
67 }
68}
69
70proc do_macosx_app {} {
71 global argv0 env
72
73 set fn [tk_getSaveFile \
74 -parent . \
Vasco Almeidaa3d97af2016-05-08 10:52:57 +000075 -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040076 -initialdir [file join $env(HOME) Desktop] \
77 -initialfile "Git [reponame].app"]
78 if {$fn != {}} {
Shawn O. Pearce7eafa2f2007-07-09 03:28:41 -040079 if {[file extension $fn] ne {.app}} {
80 set fn ${fn}.app
81 }
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -040082 if {[catch {
83 set Contents [file join $fn Contents]
84 set MacOS [file join $Contents MacOS]
85 set exe [file join $MacOS git-gui]
86
87 file mkdir $MacOS
88
89 set fd [open [file join $Contents Info.plist] w]
90 puts $fd {<?xml version="1.0" encoding="UTF-8"?>
91<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
92<plist version="1.0">
93<dict>
94 <key>CFBundleDevelopmentRegion</key>
95 <string>English</string>
96 <key>CFBundleExecutable</key>
97 <string>git-gui</string>
98 <key>CFBundleIdentifier</key>
99 <string>org.spearce.git-gui</string>
100 <key>CFBundleInfoDictionaryVersion</key>
101 <string>6.0</string>
102 <key>CFBundlePackageType</key>
103 <string>APPL</string>
104 <key>CFBundleSignature</key>
105 <string>????</string>
106 <key>CFBundleVersion</key>
107 <string>1.0</string>
108 <key>NSPrincipalClass</key>
109 <string>NSApplication</string>
110</dict>
111</plist>}
112 close $fd
113
114 set fd [open $exe w]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -0400115 puts $fd "#!/bin/sh"
Shawn O. Pearce7eafa2f2007-07-09 03:28:41 -0400116 foreach name [lsort [array names env]] {
117 set value $env($name)
118 switch -- $name {
119 GIT_DIR { set value [file normalize [gitdir]] }
120 }
121
122 switch -glob -- $name {
123 SSH_* -
124 GIT_* {
125 puts $fd "if test \"z\$$name\" = z; then"
126 puts $fd " export $name=[sq $value]"
127 puts $fd "fi &&"
128 }
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -0400129 }
130 }
Shawn O. Pearce7eafa2f2007-07-09 03:28:41 -0400131 puts $fd "export PATH=[sq [file dirname $::_git]]:\$PATH &&"
132 puts $fd "cd [sq [file normalize [pwd]]] &&"
133 puts $fd "exec \\"
134 puts $fd " [sq [info nameofexecutable]] \\"
135 puts $fd " [sq [file normalize $argv0]]"
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -0400136 close $fd
137
138 file attributes $exe -permissions u+x,g+x,o+x
139 } err]} {
Shawn O. Pearce31bb1d12007-09-14 01:50:09 -0400140 error_popup [strcat [mc "Cannot write icon:"] "\n\n$err"]
Shawn O. Pearcef522c9b2007-05-07 23:35:48 -0400141 }
142 }
143}