-
Notifications
You must be signed in to change notification settings - Fork 0
/
launch.bat
133 lines (99 loc) · 2.45 KB
/
launch.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
:: Do not use "echo off" to not affect any child calls.
@setlocal
::——————————————————— fix ctrl c ———————————————————
@set allargs=
@if ("%initialized%")==("1") (
@if "%~1"=="-fix_ctrl_c" (
@call:rest %* allargs
) else (
@call <nul %0 "-fix_ctrl_c" %*
@goto :eof
)
)
::——————————————————————————————————————————————————
:start
:: check if started from bin folder
@if not exist plugins (
@cd ..
)
@if exist server.cloud9.js (
@set fname="server.cloud9.js"
) else (
@set fname="server.js"
)
@if ("%initialized%")==("1") (
@call cmd /c node %fname% %allargs%
@goto eof
)
:: add git to path
@set c9GitPath=
@call:where git c9GitPath
@if "x!c9GitPath!"=="x" (
@echo missing git directory rem todo: better message
@goto eof
)
:: @echo %c9GitPath%
@CALL :resolve "%c9GitPath%\..\..\bin" c9GitPath
@set PATH=%c9GitPath%;%PATH%
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
@set initialized=1
@cmd /K node %fname% %allargs%
@goto eof
:end
::—————————————————————————————————————————————————————————
::—— Functions http://www.dostips.com/ ——
::—————————————————————————————————————————————————————————
:where
@SETLOCAL enableextensions enabledelayedexpansion
@set result=
@goto :wherestart
:: Function to find and print a file in the path.
:find_it
@for %%i in (%1) do @set fullspec=%%~$PATH:i
@if not "x!fullspec!"=="x" @set result=!fullspec!
@goto :eof
:wherestart
:: First try the unadorned filenmame.
@set fullspec=
@call :find_it
:: Then try all adorned filenames in order.
@set mypathext=!pathext!
:loop1
:: Stop if found or out of extensions.
@if "x!mypathext!"=="x" goto :loop1end
:: Get the next extension and try it.
@for /f "delims=;" %%j in ("!mypathext!") do @set myext=%%j
@call :find_it %1!myext!
:: Remove the extension (not overly efficient but it works).
:loop2
@if not "x!myext!"=="x" (
@set myext=!myext:~1!
@set mypathext=!mypathext:~1!
@goto :loop2
)
@if not "x!mypathext!"=="x" set mypathext=!mypathext:~1!
@goto :loop1
:loop1end
::
@ENDLOCAL&@set %~2=%result%
:endwhere
@goto :eof
:resolve
@set %2=%~f1
@goto :eof
:rest
:: array outResult
@SETLOCAL enableextensions enabledelayedexpansion
@set result=
@shift
:rest-loop1
@if not "%2"=="" (
@set result=%result% %1
@shift
)
::
@ENDLOCAL&@set %~2=%result%
:rest-end
@goto :eof
:eof