 a793520380
			
		
	
	a793520380
	
	
	
		
			
			* https://github.com/prati0100/git-gui: git-gui - use mkshortcut on Cygwin git-gui - use cygstart to browse on Cygwin git-gui - remove obsolete Cygwin specific code git gui Makefile - remove Cygwin modifications Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4 Work around Tcl's default `PATH` lookup Move the `_which` function (almost) to the top Move is_<platform> functions to the beginning is_Cygwin: avoid `exec`ing anything windows: ignore empty `PATH` elements git-gui: Fix a typo in README
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
| # 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 oguilib
 | |
| 
 | |
| 	if {[catch {
 | |
| 		set desktop [exec cygpath \
 | |
| 			--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 repodir [file normalize $_gitworktree]
 | |
| 				set shargs {-c \
 | |
| 					"CHERE_INVOKING=1 \
 | |
| 					source /etc/profile; \
 | |
| 					git gui"}
 | |
| 				exec /bin/mkshortcut.exe \
 | |
| 					--arguments $shargs \
 | |
| 					--desc "git-gui on $repodir" \
 | |
| 					--icon $oguilib/git-gui.ico \
 | |
| 					--name $fn \
 | |
| 					--show min \
 | |
| 					--workingdir $repodir \
 | |
| 					/bin/sh.exe
 | |
| 			} 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"]
 | |
| 		}
 | |
| 	}
 | |
| }
 |