Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dummyhttpserver
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Yoshiharu Hirose
dummyhttpserver
Commits
c1a8aa7e
Commit
c1a8aa7e
authored
Mar 25, 2016
by
Yoshiharu Hirose
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add activator
parent
2002efe5
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
565 additions
and
0 deletions
+565
-0
activator
activator
+334
-0
activator-launch-1.3.7.jar
activator-launch-1.3.7.jar
+0
-0
activator.bat
activator.bat
+231
-0
No files found.
activator
0 → 100644
View file @
c1a8aa7e
#!/usr/bin/env bash
### ------------------------------- ###
### Helper methods for BASH scripts ###
### ------------------------------- ###
realpath
()
{
(
TARGET_FILE
=
"
$1
"
cd
"
$(
dirname
"
$TARGET_FILE
"
)
"
TARGET_FILE
=
$(
basename
"
$TARGET_FILE
"
)
COUNT
=
0
while
[
-L
"
$TARGET_FILE
"
-a
$COUNT
-lt
100
]
do
TARGET_FILE
=
$(
readlink
"
$TARGET_FILE
"
)
cd
"
$(
dirname
"
$TARGET_FILE
"
)
"
TARGET_FILE
=
$(
basename
"
$TARGET_FILE
"
)
COUNT
=
$((
$COUNT
+
1
))
done
if
[
"
$TARGET_FILE
"
==
"."
-o
"
$TARGET_FILE
"
==
".."
]
;
then
cd
"
$TARGET_FILE
"
TARGET_FILEPATH
=
else
TARGET_FILEPATH
=
/
$TARGET_FILE
fi
# make sure we grab the actual windows path, instead of cygwin's path.
if
!
is_cygwin
;
then
echo
"
$(
pwd
-P
)
/
$TARGET_FILE
"
else
echo
$(
cygwinpath
"
$(
pwd
-P
)
/
$TARGET_FILE
"
)
fi
)
}
# TODO - Do we need to detect msys?
# Uses uname to detect if we're in the odd cygwin environment.
is_cygwin
()
{
local
os
=
$(
uname
-s
)
case
"
$os
"
in
CYGWIN
*
)
return
0
;;
*
)
return
1
;;
esac
}
# This can fix cygwin style /cygdrive paths so we get the
# windows style paths.
cygwinpath
()
{
local
file
=
"
$1
"
if
is_cygwin
;
then
echo
$(
cygpath
-w
$file
)
else
echo
$file
fi
}
# Make something URI friendly
make_url
()
{
url
=
"
$1
"
local
nospaces
=
${
url
// /%20
}
if
is_cygwin
;
then
echo
"/
${
nospaces
//\\//
}
"
else
echo
"
$nospaces
"
fi
}
# Detect if we should use JAVA_HOME or just try PATH.
get_java_cmd
()
{
if
[[
-n
"
$JAVA_HOME
"
]]
&&
[[
-x
"
$JAVA_HOME
/bin/java"
]]
;
then
echo
"
$JAVA_HOME
/bin/java"
else
echo
"java"
fi
}
echoerr
()
{
echo
1>&2
"
$@
"
}
vlog
()
{
[[
$verbose
||
$debug
]]
&&
echoerr
"
$@
"
}
dlog
()
{
[[
$debug
]]
&&
echoerr
"
$@
"
}
execRunner
()
{
# print the arguments one to a line, quoting any containing spaces
[[
$verbose
||
$debug
]]
&&
echo
"# Executing command line:"
&&
{
for
arg
;
do
if
printf
"%s
\n
"
"
$arg
"
|
grep
-q
' '
;
then
printf
"
\"
%s
\"\n
"
"
$arg
"
else
printf
"%s
\n
"
"
$arg
"
fi
done
echo
""
}
exec
"
$@
"
}
addJava
()
{
dlog
"[addJava] arg = '
$1
'"
java_args
=(
"
${
java_args
[@]
}
"
"
$1
"
)
}
addApp
()
{
dlog
"[addApp] arg = '
$1
'"
sbt_commands
=(
"
${
app_commands
[@]
}
"
"
$1
"
)
}
addResidual
()
{
dlog
"[residual] arg = '
$1
'"
residual_args
=(
"
${
residual_args
[@]
}
"
"
$1
"
)
}
addDebugger
()
{
addJava
"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=
$1
"
}
addConfigOpts
()
{
dlog
"[addConfigOpts] arg = '
$*
'"
for
item
in
$*
do
addJava
"
$item
"
done
}
# a ham-fisted attempt to move some memory settings in concert
# so they need not be messed around with individually.
get_mem_opts
()
{
local
mem
=
${
1
:-
1024
}
local
meta
=
$((
$mem
/
4
))
((
$meta
>
256
))
||
meta
=
256
((
$meta
< 1024
))
||
meta
=
1024
# default is to set memory options but this can be overridden by code section below
memopts
=
"-Xms
${
mem
}
m -Xmx
${
mem
}
m"
if
[[
"
${
java_version
}
"
>
"1.8"
]]
;
then
extmemopts
=
"-XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=
${
meta
}
m"
else
extmemopts
=
"-XX:PermSize=64m -XX:MaxPermSize=
${
meta
}
m"
fi
if
[[
"
${
java_opts
}
"
==
*
-Xmx
*
]]
||
[[
"
${
java_opts
}
"
==
*
-Xms
*
]]
||
[[
"
${
java_opts
}
"
==
*
-XX
:MaxPermSize
*
]]
||
[[
"
${
java_opts
}
"
==
*
-XX
:ReservedCodeCacheSize
*
]]
||
[[
"
${
java_opts
}
"
==
*
-XX
:MaxMetaspaceSize
*
]]
;
then
# if we detect any of these settings in ${java_opts} we need to NOT output our settings.
# The reason is the Xms/Xmx, if they don't line up, cause errors.
memopts
=
""
extmemopts
=
""
fi
echo
"
${
memopts
}
${
extmemopts
}
"
}
require_arg
()
{
local type
=
"
$1
"
local
opt
=
"
$2
"
local
arg
=
"
$3
"
if
[[
-z
"
$arg
"
]]
||
[[
"
${
arg
:0:1
}
"
==
"-"
]]
;
then
die
"
$opt
requires <
$type
> argument"
fi
}
is_function_defined
()
{
declare
-f
"
$1
"
>
/dev/null
}
# If we're *not* running in a terminal, and we don't have any arguments, then we need to add the 'ui' parameter
detect_terminal_for_ui
()
{
[[
!
-t
0
]]
&&
[[
"
${#
residual_args
}
"
==
"0"
]]
&&
{
addResidual
"ui"
}
# SPECIAL TEST FOR MAC
[[
"
$(
uname
)
"
==
"Darwin"
]]
&&
[[
"
$HOME
"
==
"
$PWD
"
]]
&&
[[
"
${#
residual_args
}
"
==
"0"
]]
&&
{
echo
"Detected MAC OSX launched script...."
echo
"Swapping to UI"
addResidual
"ui"
}
}
# Processes incoming arguments and places them in appropriate global variables. called by the run method.
process_args
()
{
while
[[
$#
-gt
0
]]
;
do
case
"
$1
"
in
-h
|
-help
)
usage
;
exit
1
;;
-v
|
-verbose
)
verbose
=
1
&&
shift
;;
-d
|
-debug
)
debug
=
1
&&
shift
;;
-mem
)
require_arg integer
"
$1
"
"
$2
"
&&
app_mem
=
"
$2
"
&&
shift
2
;;
-jvm-debug
)
if
echo
"
$2
"
|
grep
-E
^[0-9]+
$
>
/dev/null
;
then
addDebugger
"
$2
"
&&
shift
else
addDebugger 9999
fi
shift
;;
-java-home
)
require_arg path
"
$1
"
"
$2
"
&&
java_cmd
=
"
$2
/bin/java"
&&
shift
2
;;
-D
*
)
addJava
"
$1
"
&&
shift
;;
-J
*
)
addJava
"
${
1
:2
}
"
&&
shift
;;
*
)
addResidual
"
$1
"
&&
shift
;;
esac
done
is_function_defined process_my_args
&&
{
myargs
=(
"
${
residual_args
[@]
}
"
)
residual_args
=()
process_my_args
"
${
myargs
[@]
}
"
}
}
# Actually runs the script.
run
()
{
# TODO - check for sane environment
# process the combined args, then reset "$@" to the residuals
process_args
"
$@
"
detect_terminal_for_ui
set
--
"
${
residual_args
[@]
}
"
argumentCount
=
$#
#check for jline terminal fixes on cygwin
if
is_cygwin
;
then
stty
-icanon
min 1
-echo
>
/dev/null 2>&1
addJava
"-Djline.terminal=jline.UnixTerminal"
addJava
"-Dsbt.cygwin=true"
fi
# run sbt
execRunner
"
$java_cmd
"
\
"-Dactivator.home=
$(
make_url
"
$activator_home
"
)
"
\
$(
get_mem_opts
$app_mem
)
\
${
java_opts
[@]
}
\
${
java_args
[@]
}
\
-jar
"
$app_launcher
"
\
"
${
app_commands
[@]
}
"
\
"
${
residual_args
[@]
}
"
local
exit_code
=
$?
if
is_cygwin
;
then
stty
icanon
echo
>
/dev/null 2>&1
fi
exit
$exit_code
}
# Loads a configuration file full of default command line options for this script.
loadConfigFile
()
{
cat
"
$1
"
|
sed
'/^\#/d'
}
### ------------------------------- ###
### Start of customized settings ###
### ------------------------------- ###
usage
()
{
cat
<<
EOM
Usage:
$script_name
<command> [options]
Command:
ui Start the Activator UI
new [name] [template-id] Create a new project with [name] using template [template-id]
list-templates Print all available template names
-h | -help Print this message
Options:
-v | -verbose Make this runner chattier
-d | -debug Set sbt log level to debug
-mem <integer> Set memory options (default:
$sbt_mem
, which is
$(
get_mem_opts
$sbt_mem
)
)
-jvm-debug <port> Turn on JVM debugging, open at the given port.
# java version (default: java from PATH, currently
$(
java
-version
2>&1 |
grep
version
)
)
-java-home <path> Alternate JAVA_HOME
# jvm options and output control
-Dkey=val Pass -Dkey=val directly to the java runtime
-J-X Pass option -X directly to the java runtime
(-J is stripped)
# environment variables (read from context)
JAVA_OPTS Environment variable, if unset uses ""
SBT_OPTS Environment variable, if unset uses ""
ACTIVATOR_OPTS Environment variable, if unset uses ""
In the case of duplicated or conflicting options, the order above
shows precedence: environment variables lowest, command line options highest.
EOM
}
### ------------------------------- ###
### Main script ###
### ------------------------------- ###
declare
-a
residual_args
declare
-a
java_args
declare
-a
app_commands
declare
-r
real_script_path
=
"
$(
realpath
"
$0
"
)
"
declare
-r
activator_home
=
"
$(
realpath
"
$(
dirname
"
$real_script_path
"
)
"
)
"
declare
-r
app_version
=
"1.3.7"
declare
-r
app_launcher
=
"
${
activator_home
}
/activator-launch-
${
app_version
}
.jar"
declare
-r
script_name
=
activator
java_cmd
=
$(
get_java_cmd
)
declare
-r
java_opts
=(
"
${
ACTIVATOR_OPTS
[@]
}
"
"
${
SBT_OPTS
[@]
}
"
"
${
JAVA_OPTS
[@]
}
"
"
${
java_opts
[@]
}
"
)
userhome
=
"
$HOME
"
if
is_cygwin
;
then
# cygwin sets home to something f-d up, set to real windows homedir
userhome
=
"
$USERPROFILE
"
fi
declare
-r
activator_user_home_dir
=
"
${
userhome
}
/.activator"
declare
-r
java_opts_config_home
=
"
${
activator_user_home_dir
}
/activatorconfig.txt"
declare
-r
java_opts_config_version
=
"
${
activator_user_home_dir
}
/
${
app_version
}
/activatorconfig.txt"
# Now check to see if it's a good enough version
declare
-r
java_version
=
$(
"
$java_cmd
"
-version
2>&1 |
awk
-F
'"'
'/version/ {print $2}'
)
if
[[
"
$java_version
"
==
""
]]
;
then
echo
echo
No java installations was detected.
echo
Please go to http://www.java.com/getjava/ and download
echo
exit
1
elif
[[
!
"
$java_version
"
>
"1.6"
]]
;
then
echo
echo
The java installation you have is not up to
date
echo
Activator requires at least version 1.6+, you have
echo
version
$java_version
echo
echo
Please go to http://www.java.com/getjava/ and download
echo
a valid Java Runtime and
install
before running Activator.
echo
exit
1
fi
# if configuration files exist, prepend their contents to the java args so it can be processed by this runner
# a "versioned" config trumps one on the top level
if
[[
-f
"
$java_opts_config_version
"
]]
;
then
addConfigOpts
$(
loadConfigFile
"
$java_opts_config_version
"
)
elif
[[
-f
"
$java_opts_config_home
"
]]
;
then
addConfigOpts
$(
loadConfigFile
"
$java_opts_config_home
"
)
fi
run
"
$@
"
activator-launch-1.3.7.jar
0 → 100644
View file @
c1a8aa7e
File added
activator.bat
0 → 100644
View file @
c1a8aa7e
@REM activator launcher script
@REM
@REM Environment:
@REM In order for Activator to work you must have Java available on the classpath
@REM JAVA_HOME - location of a JDK home dir (optional if java on path)
@REM CFG_OPTS - JVM options (optional)
@REM Configuration:
@REM activatorconfig.txt found in the ACTIVATOR_HOME or ACTIVATOR_HOME/ACTIVATOR_VERSION
@setlocal enabledelayedexpansion
@echo off
set "var1=%~1"
if defined var1 (
if "%var1%"=="help" (
echo.
echo Usage activator [options] [command]
echo.
echo Commands:
echo ui Start the Activator UI
echo new [name] [template-id] Create a new project with [name] using template [template-id]
echo list-templates Print all available template names
echo help Print this message
echo.
echo Options:
echo -jvm-debug [port] Turn on JVM debugging, open at the given port. Defaults to 9999 if no port given.
echo.
echo Environment variables ^(read from context^):
echo JAVA_OPTS Environment variable, if unset uses ""
echo SBT_OPTS Environment variable, if unset uses ""
echo ACTIVATOR_OPTS Environment variable, if unset uses ""
echo.
echo Please note that in order for Activator to work you must have Java available on the classpath
echo.
goto :end
)
)
if "%ACTIVATOR_HOME%"=="" (
set "ACTIVATOR_HOME=%~dp0"
@REM remove trailing "\" from path
set ACTIVATOR_HOME=!ACTIVATOR_HOME:~0,-1!
)
set ERROR_CODE=0
set APP_VERSION=1.3.7
set ACTIVATOR_LAUNCH_JAR=activator-launch-%APP_VERSION%.jar
rem Detect if we were double clicked, although theoretically A user could
rem manually run cmd /c
for %%x in (%cmdcmdline%) do if %%~x==/c set DOUBLECLICKED=1
rem FIRST we load a config file of extra options (if there is one)
set "CFG_FILE_HOME=%UserProfile%\.activator\activatorconfig.txt"
set "CFG_FILE_VERSION=%UserProfile%\.activator\%APP_VERSION%\activatorconfig.txt"
set CFG_OPTS=
if exist %CFG_FILE_VERSION% (
FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%CFG_FILE_VERSION%") DO (
set DO_NOT_REUSE_ME=%%i
rem ZOMG (Part #2) WE use !! here to delay the expansion of
rem CFG_OPTS, otherwise it remains "" for this loop.
set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME!
)
)
if "%CFG_OPTS%"=="" (
if exist %CFG_FILE_HOME% (
FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%CFG_FILE_HOME%") DO (
set DO_NOT_REUSE_ME=%%i
rem ZOMG (Part #2) WE use !! here to delay the expansion of
rem CFG_OPTS, otherwise it remains "" for this loop.
set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME!
)
)
)
rem We use the value of the JAVACMD environment variable if defined
set _JAVACMD=%JAVACMD%
if "%_JAVACMD%"=="" (
if not "%JAVA_HOME%"=="" (
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
rem if there is a java home set we make sure it is the first picked up when invoking 'java'
SET "PATH=%JAVA_HOME%\bin;%PATH%"
)
)
if "%_JAVACMD%"=="" set _JAVACMD=java
rem Detect if this java is ok to use.
for /F %%j in ('"%_JAVACMD%" -version 2^>^&1') do (
if %%~j==java set JAVAINSTALLED=1
if %%~j==openjdk set JAVAINSTALLED=1
)
rem Detect the same thing about javac
if "%_JAVACCMD%"=="" (
if not "%JAVA_HOME%"=="" (
if exist "%JAVA_HOME%\bin\javac.exe" set "_JAVACCMD=%JAVA_HOME%\bin\javac.exe"
)
)
if "%_JAVACCMD%"=="" set _JAVACCMD=javac
for /F %%j in ('"%_JAVACCMD%" -version 2^>^&1') do (
if %%~j==javac set JAVACINSTALLED=1
)
rem BAT has no logical or, so we do it OLD SCHOOL! Oppan Redmond Style
set JAVAOK=true
if not defined JAVAINSTALLED set JAVAOK=false
if not defined JAVACINSTALLED set JAVAOK=false
if "%JAVAOK%"=="false" (
echo.
echo A Java JDK is not installed or can't be found.
if not "%JAVA_HOME%"=="" (
echo JAVA_HOME = "%JAVA_HOME%"
)
echo.
echo Please go to
echo http://www.oracle.com/technetwork/java/javase/downloads/index.html
echo and download a valid Java JDK and install before running Activator.
echo.
echo If you think this message is in error, please check
echo your environment variables to see if "java.exe" and "javac.exe" are
echo available via JAVA_HOME or PATH.
echo.
if defined DOUBLECLICKED pause
exit /B 1
)
rem Check what Java version is being used to determine what memory options to use
for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do (
set JAVA_VERSION=%%g
)
rem Strips away the " characters
set JAVA_VERSION=%JAVA_VERSION:"=%
rem TODO Check if there are existing mem settings in JAVA_OPTS/CFG_OPTS and use those instead of the below
for /f "delims=. tokens=1-3" %%v in ("%JAVA_VERSION%") do (
set MAJOR=%%v
set MINOR=%%w
set BUILD=%%x
set META_SIZE=-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=256M
if "!MINOR!" LSS "8" (
set META_SIZE=-XX:PermSize=64M -XX:MaxPermSize=256M
)
set MEM_OPTS=!META_SIZE!
)
rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config.
set _JAVA_OPTS=%JAVA_OPTS%
if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS%
set DEBUG_OPTS=
rem Loop through the arguments, building remaining args in args variable
set args=
:argsloop
if not "%~1"=="" (
rem Checks if the argument contains "-D" and if true, adds argument 1 with 2 and puts an equal sign between them.
rem This is done since batch considers "=" to be a delimiter so we need to circumvent this behavior with a small hack.
set arg1=%~1
if "!arg1:~0,2!"=="-D" (
set "args=%args% "%~1"="%~2""
shift
shift
goto argsloop
)
if "%~1"=="-jvm-debug" (
if not "%~2"=="" (
rem This piece of magic somehow checks that an argument is a number
for /F "delims=0123456789" %%i in ("%~2") do (
set var="%%i"
)
if defined var (
rem Not a number, assume no argument given and default to 9999
set JPDA_PORT=9999
) else (
rem Port was given, shift arguments
set JPDA_PORT=%~2
shift
)
) else (
set JPDA_PORT=9999
)
shift
set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=!JPDA_PORT!
goto argsloop
)
rem else
set "args=%args% "%~1""
shift
goto argsloop
)
:run
if "!args!"=="" (
if defined DOUBLECLICKED (
set CMDS="ui"
) else set CMDS=!args!
) else set CMDS=!args!
rem We add a / in front, so we get file:///C: instead of file://C:
rem Java considers the later a UNC path.
rem We also attempt a solid effort at making it URI friendly.
rem We don't even bother with UNC paths.
set JAVA_FRIENDLY_HOME_1=/!ACTIVATOR_HOME:\=/!
set JAVA_FRIENDLY_HOME=/!JAVA_FRIENDLY_HOME_1: =%%20!
rem Checks if the command contains spaces to know if it should be wrapped in quotes or not
set NON_SPACED_CMD=%_JAVACMD: =%
if "%_JAVACMD%"=="%NON_SPACED_CMD%" %_JAVACMD% %DEBUG_OPTS% %MEM_OPTS% %ACTIVATOR_OPTS% %SBT_OPTS% %_JAVA_OPTS% "-Dactivator.home=%JAVA_FRIENDLY_HOME%" -jar "%ACTIVATOR_HOME%\%ACTIVATOR_LAUNCH_JAR%" %CMDS%
if NOT "%_JAVACMD%"=="%NON_SPACED_CMD%" "%_JAVACMD%" %DEBUG_OPTS% %MEM_OPTS% %ACTIVATOR_OPTS% %SBT_OPTS% %_JAVA_OPTS% "-Dactivator.home=%JAVA_FRIENDLY_HOME%" -jar "%ACTIVATOR_HOME%\%ACTIVATOR_LAUNCH_JAR%" %CMDS%
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal
exit /B %ERROR_CODE%
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment