Home | History | Annotate | Download | only in csharp
      1 if ! which mvn >/dev/null; then
      2   echo -e '\033[01;31mMaven is not installed / configured.\033[00m'
      3   exit 1
      4 fi
      5 
      6 if ! which mono >/dev/null; then
      7   echo -e '\033[01;31mMono platform is not installed / configured.\033[00m'
      8   exit 1
      9 fi
     10 
     11 if ! which nuget >/dev/null; then
     12   echo -e '\033[01;31mNuGet compiler is not installed / configured.\033[00m'
     13   exit 1
     14 fi
     15 
     16 if ! which mcs >/dev/null; then
     17   echo -e '\033[01;31mC# compiler is not installed / configured.\033[00m'
     18   exit 1
     19 fi
     20 
     21 rm -rf build
     22 mkdir build
     23 cd build
     24 
     25 #-------------------------------------------------------------------------------
     26 
     27 echo -e '\033[01;33mFetching Sharpen sources.\033[00m'
     28 
     29 git clone https://github.com/stanislaw89/sharpen.git
     30 cd sharpen
     31 git checkout 4f609ed42862a1f9aab1be00374ff86534a5e6d6 || exit 1
     32 
     33 #-------------------------------------------------------------------------------
     34 
     35 echo -e '\n\033[01;33mCompiling Sharpen.\033[00m'
     36 
     37 mvn clean package -DskipTests
     38 mvn dependency:copy -Dartifact=junit:junit:4.12 -DoutputDirectory=..
     39 cd ..
     40 cp sharpen/target/sharpencore-0.0.1-SNAPSHOT-jar-with-dependencies.jar ./sharpen.jar
     41 
     42 #-------------------------------------------------------------------------------
     43 
     44 echo -e '\n\033[01;33mTranspiling.\033[00m'
     45 
     46 cd ..
     47 java -jar build/sharpen.jar ../java/org/brotli/dec/ -cp build/junit-4.12.jar @sharpen.cfg
     48 
     49 #-------------------------------------------------------------------------------
     50 
     51 echo -e '\n\033[01;33mPatching.\033[00m'
     52 
     53 # TODO: detect "dead" files, that are not generated by sharpen anymore.
     54 cp -r build/generated/* ./
     55 
     56 # Reflection does not work without Sharpen.cs
     57 rm org/brotli/dec/EnumTest.cs
     58 
     59 PATTERN='\/\/ \<\{\[INJECTED CODE\]\}\>'
     60 CODE=$(<org/brotli/dec/BrotliInputStream.cs)
     61 REPLACEMENT=$(<injected_code.txt)
     62 echo "${CODE//$PATTERN/$REPLACEMENT}" > org/brotli/dec/BrotliInputStream.cs
     63 
     64 #-------------------------------------------------------------------------------
     65 
     66 echo -e '\n\033[01;33mDowloading dependencies.\033[00m'
     67 
     68 cd build
     69 nuget install NUnit -Version 3.6.1
     70 nuget install NUnit.ConsoleRunner -Version 3.6.1
     71 cd ..
     72 
     73 #-------------------------------------------------------------------------------
     74 
     75 echo -e '\n\033[01;33mCompiling generated code.\033[00m'
     76 
     77 SOURCES=`find org/brotli -type file ! -path "*Test.cs"`
     78 TESTS_SOURCES=`find org/brotli -type file -path "*Test.cs"`
     79 
     80 mcs $SOURCES -target:library -out:build/brotlidec.dll
     81 mcs $SOURCES $TESTS_SOURCES -target:library -out:build/brotlidec_test.dll -r:build/NUnit.3.6.1/lib/net45/nunit.framework.dll
     82 
     83 #-------------------------------------------------------------------------------
     84 
     85 echo -e '\n\033[01;33mRunning tests.\033[00m'
     86 
     87 export MONO_PATH=$MONO_PATH:`pwd`/build/NUnit.3.6.1/lib/net45
     88 mono --debug build/NUnit.ConsoleRunner.3.6.1/tools/nunit3-console.exe build/brotlidec_test.dll
     89 
     90 #-------------------------------------------------------------------------------
     91 
     92 echo -e '\n\033[01;33mCleanup.\033[00m'
     93 rm TestResult.xml
     94 rm -rf build
     95