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.
141 lines
3.5 KiB
141 lines
3.5 KiB
# git-gui desktop icon creators |
|
# Copyright (C) 2006, 2007 Shawn Pearce |
|
|
|
proc do_windows_shortcut {} { |
|
global argv0 |
|
|
|
set fn [tk_getSaveFile \ |
|
-parent . \ |
|
-title "[appname] ([reponame]): Create Desktop Icon" \ |
|
-initialfile "Git [reponame].bat"] |
|
if {$fn != {}} { |
|
if {[catch { |
|
set fd [open $fn w] |
|
puts $fd "@ECHO Entering [reponame]" |
|
puts $fd "@ECHO Starting git-gui... please wait..." |
|
puts $fd "@SET PATH=[file normalize [gitexec]];%PATH%" |
|
puts $fd "@SET GIT_DIR=[file normalize [gitdir]]" |
|
puts -nonewline $fd "@\"[info nameofexecutable]\"" |
|
puts $fd " \"[file normalize $argv0]\"" |
|
close $fd |
|
} err]} { |
|
error_popup "Cannot write script:\n\n$err" |
|
} |
|
} |
|
} |
|
|
|
proc do_cygwin_shortcut {} { |
|
global argv0 |
|
|
|
if {[catch { |
|
set desktop [exec cygpath \ |
|
--windows \ |
|
--absolute \ |
|
--long-name \ |
|
--desktop] |
|
}]} { |
|
set desktop . |
|
} |
|
set fn [tk_getSaveFile \ |
|
-parent . \ |
|
-title "[appname] ([reponame]): Create Desktop Icon" \ |
|
-initialdir $desktop \ |
|
-initialfile "Git [reponame].bat"] |
|
if {$fn != {}} { |
|
if {[catch { |
|
set fd [open $fn w] |
|
set sh [exec cygpath \ |
|
--windows \ |
|
--absolute \ |
|
/bin/sh] |
|
set me [exec cygpath \ |
|
--unix \ |
|
--absolute \ |
|
$argv0] |
|
set gd [exec cygpath \ |
|
--unix \ |
|
--absolute \ |
|
[gitdir]] |
|
set gw [exec cygpath \ |
|
--windows \ |
|
--absolute \ |
|
[file dirname [gitdir]]] |
|
regsub -all ' $me "'\\''" me |
|
regsub -all ' $gd "'\\''" gd |
|
puts $fd "@ECHO Entering $gw" |
|
puts $fd "@ECHO Starting git-gui... please wait..." |
|
puts -nonewline $fd "@\"$sh\" --login -c \"" |
|
puts -nonewline $fd "GIT_DIR='$gd'" |
|
puts -nonewline $fd " '$me'" |
|
puts $fd "&\"" |
|
close $fd |
|
} err]} { |
|
error_popup "Cannot write script:\n\n$err" |
|
} |
|
} |
|
} |
|
|
|
proc do_macosx_app {} { |
|
global argv0 env |
|
|
|
set fn [tk_getSaveFile \ |
|
-parent . \ |
|
-title "[appname] ([reponame]): Create Desktop Icon" \ |
|
-initialdir [file join $env(HOME) Desktop] \ |
|
-initialfile "Git [reponame].app"] |
|
if {$fn != {}} { |
|
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] |
|
set gd [file normalize [gitdir]] |
|
set ep [file normalize [gitexec]] |
|
regsub -all ' $gd "'\\''" gd |
|
regsub -all ' $ep "'\\''" ep |
|
puts $fd "#!/bin/sh" |
|
foreach name [array names env] { |
|
if {[string match GIT_* $name]} { |
|
regsub -all ' $env($name) "'\\''" v |
|
puts $fd "export $name='$v'" |
|
} |
|
} |
|
puts $fd "export PATH='$ep':\$PATH" |
|
puts $fd "export GIT_DIR='$gd'" |
|
puts $fd "exec [file normalize $argv0]" |
|
close $fd |
|
|
|
file attributes $exe -permissions u+x,g+x,o+x |
|
} err]} { |
|
error_popup "Cannot write icon:\n\n$err" |
|
} |
|
} |
|
}
|
|
|