From 69deb0c9474cc118517d4b107de2eb19e4799c6e Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Wed, 9 Jun 2021 07:41:05 +0100 Subject: [PATCH] Copy across some config from CC:T --- .editorconfig | 3 - .github/ISSUE_TEMPLATE/bug_report.md | 3 +- .github/matchers/checkstyle.json | 17 + .github/matchers/illuaminate.json | 18 + .github/matchers/junit.json | 15 + .github/workflows/main-ci.yml | 72 +- build.gradle | 53 +- config/checkstyle/checkstyle.xml | 164 ++ config/checkstyle/suppressions.xml | 12 + config/idea/codeInspectionSettings.xml | 2491 ++++++++++++++++++++++ config/idea/codeStyleSettings.xml | 61 + config/license/api.txt | 3 + config/license/main.txt | 3 + config/pre-commit/config.yml | 48 + config/pre-commit/illuaminate-lint.sh | 16 + gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 5 +- gradlew | 53 +- gradlew.bat | 43 +- 19 files changed, 3006 insertions(+), 74 deletions(-) create mode 100644 .github/matchers/checkstyle.json create mode 100644 .github/matchers/illuaminate.json create mode 100644 .github/matchers/junit.json create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/checkstyle/suppressions.xml create mode 100644 config/idea/codeInspectionSettings.xml create mode 100644 config/idea/codeStyleSettings.xml create mode 100644 config/license/api.txt create mode 100644 config/license/main.txt create mode 100644 config/pre-commit/config.yml create mode 100755 config/pre-commit/illuaminate-lint.sh diff --git a/.editorconfig b/.editorconfig index f04c87852..779f99a12 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,3 @@ insert_final_newline = true [*.md] trim_trailing_whitespace = false - -[*.properties] -insert_final_newline = false diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 67be8726d..f9cee6d08 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,5 +11,6 @@ labels: bug ## Useful information to include: - Minecraft version - - CC: Restitched version + - CC: Tweaked version + - Logs: These will be located in the `logs/` directory of your Minecraft instance. Please upload them as a gist or directly into this editor. - Detailed reproduction steps: sometimes I can spot a bug pretty easily, but often it's much more obscure. The more information I have to help reproduce it, the quicker it'll get fixed. diff --git a/.github/matchers/checkstyle.json b/.github/matchers/checkstyle.json new file mode 100644 index 000000000..ca6e30e63 --- /dev/null +++ b/.github/matchers/checkstyle.json @@ -0,0 +1,17 @@ +{ + "problemMatcher": [ + { + "owner": "checkstyle", + "pattern": [ + { + "regexp": "^([a-z]+) ([\\w./-]+):(\\d+):(\\d+): (.*)$", + "severity": 1, + "file": 2, + "line": 3, + "column": 4, + "message": 5 + } + ] + } + ] +} diff --git a/.github/matchers/illuaminate.json b/.github/matchers/illuaminate.json new file mode 100644 index 000000000..f59036028 --- /dev/null +++ b/.github/matchers/illuaminate.json @@ -0,0 +1,18 @@ +{ + "problemMatcher": [ + { + "owner": "illuaminate", + "severity": "warning", + "pattern": [ + { + "regexp": "^([\\w./-]+):\\[(\\d+):(\\d+)\\-(?:\\d+):(?:\\d+)\\]: (.*) \\[([a-z:-]+)\\]$", + "file": 1, + "line": 2, + "column": 3, + "message": 4, + "code": 5 + } + ] + } + ] +} diff --git a/.github/matchers/junit.json b/.github/matchers/junit.json new file mode 100644 index 000000000..1655a5f66 --- /dev/null +++ b/.github/matchers/junit.json @@ -0,0 +1,15 @@ +{ + "problemMatcher": [ + { + "owner": "junit", + "pattern": [ + { + "regexp": "^## ([\\w./-]+):(\\d+): (.*)$", + "file": 1, + "line": 2, + "message": 3 + } + ] + } + ] +} diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 133c74a4c..a144e94db 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -3,33 +3,55 @@ name: Build on: [push, pull_request] jobs: - build: - name: Build - runs-on: ubuntu-latest + build: + name: Build + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Checkout submodules - run: git submodule update --init --recursive + steps: + - uses: actions/checkout@v2 - - name: Set up Java 8 - uses: actions/setup-java@v1 - with: - java-version: 8 + - name: Set up Java 8 + uses: actions/setup-java@v1 + with: + java-version: 8 - - name: Cache gradle dependencies - uses: actions/cache@v2 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- + - name: Cache gradle dependencies + uses: actions/cache@v2 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- - - name: Build with Gradle - run: ./gradlew build --no-daemon || ./gradlew build --no-daemon + - name: Disable Gradle daemon + run: | + mkdir -p ~/.gradle + echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties - - name: Upload Jar - uses: actions/upload-artifact@v1 - with: - name: cc-restiched - path: build/libs + - name: Build with Gradle + run: | + ./gradlew assemble || ./gradlew assemble + ./gradlew build + + - name: Upload Jar + uses: actions/upload-artifact@v2 + with: + name: cc-restitched + path: build/libs + + - name: Parse test reports + run: ./tools/parse-reports.py + if: ${{ failure() }} + + - name: Cache pre-commit + uses: actions/cache@v2 + with: + path: ~/.cache/pre-commit + key: ${{ runner.os }}-pre-commit-${{ hashFiles('config/pre-commit/config.yml') }} + restore-keys: | + ${{ runner.os }}-pre-commit- + + - name: Run linters + run: | + pip install pre-commit + pre-commit run --config config/pre-commit/config.yml --show-diff-on-failure --all --color=always diff --git a/build.gradle b/build.gradle index 9d847ea70..686c19c8a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,8 @@ plugins { - id 'fabric-loom' version '0.6-SNAPSHOT' + id 'fabric-loom' version '0.7-SNAPSHOT' id 'maven-publish' + id "checkstyle" + id "com.github.hierynomus.license" version "0.15.0" } sourceCompatibility = JavaVersion.VERSION_1_8 @@ -22,10 +24,12 @@ repositories { } configurations { - compile.extendsFrom shade + implementation.extendsFrom shade } dependencies { + checkstyle "com.puppycrawl.tools:checkstyle:8.25" + minecraft "com.mojang:minecraft:${mc_version}" mappings "net.fabricmc:yarn:${mc_version}+build.${mappings_version}:v2" modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}" @@ -37,7 +41,7 @@ dependencies { modImplementation "io.github.prospector:modmenu:${modmenu_version}" modImplementation "me.shedaniel.cloth.api:cloth-utils-v1:${cloth_api_version}" - compile 'com.electronwill.night-config:toml:3.6.3' + implementation 'com.electronwill.night-config:toml:3.6.3' implementation 'com.google.code.findbugs:jsr305:3.0.2' shade 'org.squiddev:Cobalt:0.5.2-SNAPSHOT' @@ -85,6 +89,49 @@ jar { from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) } } + +import com.hierynomus.gradle.license.tasks.LicenseCheck +import com.hierynomus.gradle.license.tasks.LicenseFormat + +license { + mapping("java", "SLASHSTAR_STYLE") + strictCheck true + + ext.year = Calendar.getInstance().get(Calendar.YEAR) +} + +[licenseMain, licenseFormatMain].forEach { + it.configure { + include("**/*.java") + exclude("dan200/computercraft/api/**") + header file('config/license/main.txt') + } +} + +[licenseTest, licenseFormatTest].forEach { + it.configure { + include("**/*.java") + header file('config/license/main.txt') + } +} + +gradle.projectsEvaluated { + tasks.withType(LicenseFormat) { + outputs.upToDateWhen { false } + } +} + + +task licenseAPI(type: LicenseCheck); +task licenseFormatAPI(type: LicenseFormat); +[licenseAPI, licenseFormatAPI].forEach { + it.configure { + source = sourceSets.main.java + include("dan200/computercraft/api/**") + header file('config/license/api.txt') + } +} + // configure the maven publication publishing { publications { diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 000000000..aaafdfd01 --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml new file mode 100644 index 000000000..647da4baa --- /dev/null +++ b/config/checkstyle/suppressions.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/config/idea/codeInspectionSettings.xml b/config/idea/codeInspectionSettings.xml new file mode 100644 index 000000000..57b8ed0d7 --- /dev/null +++ b/config/idea/codeInspectionSettings.xml @@ -0,0 +1,2491 @@ + + + + diff --git a/config/idea/codeStyleSettings.xml b/config/idea/codeStyleSettings.xml new file mode 100644 index 000000000..9a1e0f1d4 --- /dev/null +++ b/config/idea/codeStyleSettings.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + diff --git a/config/license/api.txt b/config/license/api.txt new file mode 100644 index 000000000..5c1d391fe --- /dev/null +++ b/config/license/api.txt @@ -0,0 +1,3 @@ +This file is part of the public ComputerCraft API - http://www.computercraft.info +Copyright Daniel Ratcliffe, 2011-${year}. This API may be redistributed unmodified and in full only. +For help using the API, and posting your mods, visit the forums at computercraft.info. diff --git a/config/license/main.txt b/config/license/main.txt new file mode 100644 index 000000000..bab494b2e --- /dev/null +++ b/config/license/main.txt @@ -0,0 +1,3 @@ +This file is part of ComputerCraft - http://www.computercraft.info +Copyright Daniel Ratcliffe, 2011-${year}. Do not distribute without permission. +Send enquiries to dratcliffe@gmail.com diff --git a/config/pre-commit/config.yml b/config/pre-commit/config.yml new file mode 100644 index 000000000..1f8ee9bcc --- /dev/null +++ b/config/pre-commit/config.yml @@ -0,0 +1,48 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.2.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-merge-conflict + + # Quick syntax checkers + - id: check-xml + - id: check-yaml + - id: check-toml + - id: check-json + exclude: "tsconfig\\.json$" + +- repo: https://github.com/editorconfig-checker/editorconfig-checker.python + rev: 2.3.5 + hooks: + - id: editorconfig-checker + args: ['-disable-indentation'] + exclude: "^(.*\\.(bat)|LICENSE)$" + +- repo: local + hooks: + - id: checkstyle + name: Check Java codestyle + files: ".*\\.java$" + language: system + entry: ./gradlew checkstyleMain checkstyleTest + pass_filenames: false + require_serial: true + - id: license + name: Check Java license headers + files: ".*\\.java$" + language: system + entry: ./gradlew licenseFormat + pass_filenames: false + require_serial: true + +exclude: | + (?x)^( + src/generated| + src/test/resources/test-rom/data/json-parsing/| + src/test/server-files/| + config/idea/ + ) diff --git a/config/pre-commit/illuaminate-lint.sh b/config/pre-commit/illuaminate-lint.sh new file mode 100755 index 000000000..ac7b762bf --- /dev/null +++ b/config/pre-commit/illuaminate-lint.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh +set -e + +test -d bin || mkdir bin +test -f bin/illuaminate || curl -s -obin/illuaminate https://squiddev.cc/illuaminate/linux-x86-64/illuaminate +chmod +x bin/illuaminate + +if [ -n ${GITHUB_ACTIONS+x} ]; then + # Register a problem matcher (see https://github.com/actions/toolkit/blob/master/docs/problem-matchers.md) + # for illuaminate. + echo "::add-matcher::.github/matchers/illuaminate.json" + trap 'echo "::remove-matcher owner=illuaminate::"' EXIT +fi + +./gradlew luaJavadoc +bin/illuaminate lint diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch delta 23334 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 delta 19998 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 z zk-S^M@O;68<`~n&39tFzMymfz7G5IrOs-n#c>9hj`}EdggTU5LvsPC%Cbt-0XlHnL z)LkQUo{(La;kl%QJLVq@OkK^D*o016XRM00bc%XV9@=0Mec^qS)w|5!(_Dn2oRXL( z?>qZn$n$B9^~5y`c6K?a8HUum7N{A{S)){9w}H7d@*h|D#ZAp8ibU7OWQuNa?Js!2 zSFmEi-mbpS2V?Ip{#~;8cS&sKiaL!g&B>=b-zAi<=sNdymbEQMVbA5Mj$4!)g?nDH zv~B22yuQ_2?&YlP?S@A`YzX_nqh}=UYg0No>bb-;;SE22%}LHslQ`ur(WLNpOZ~$@ zFU71+sh^qypJ*MZRB&uND_Rm-ShMV1r+eKE<^8n^jp;LXY}VV}lD_y@?t!NZcU+n> z+lBYL!sDXsN$e-w>!&_{^2FoIk=Q$v6%)Rn5x7`YR#0T=;I=pPODRuC!TYi__Ki

X&!w{;_lT@BHFuYE93NwLRx$o>hJ` zdCID@>t4^58~q6rF5ReVS5sqqRlJ+Q&bc}7);`#K z`(3V}U*Pr4?lZS$E=rO38#&$kjCHj0>m!@GmjylMS|@b!_+Rl`Kenpg7q)x1*+$c> zT4MQcBj-u8>KnOhS>$iYz2deBJ@~iu%i}K+Ukp9|n^fI!oWJPH!g*`wNj1yabc!ai zTx?x_$LmtX&KB>@r5B_@ORP&uiQe>ldZ@|KqN42AwY#T3Iy0NS!`|NRkRod5d{vmh5B1cujf5smJYuJ+KY>r+K zk-)9^@w{bm+OwMCn=@~I{(Sy=KEtIM(=Rl*$m)7>_Ih}DD9SqMzbpJwct?B^Bd1KW z48KL2DvN=V<00j~<1&(MQLnd#^{CWK-rC$Y)BlNY<3(*|LTUD+No8}vE4lT43k|`GemlBp8cA7wMI{0yhHe$R98&I z6kp#t-ahjSraw%2Hg)N&$Fm~0h?!0Ip1^ZZGdBF}#-_>OUHH zW{GI-9p*D!G57PTqZb1042w>$UX}Fru5NnanTvOY~3^haXt(Jmepw-+SQy)LlO^11`Gl|KnCAvmwBP$7Io-4;??*e&t@u zoOCYkR`bOh>J^JN{@~jq|Kg3K@mgM|V`>41)dUlQGZf>vPkP8tFJP_TpgGIuNb(N9 zYcf~9e>m)3t@cZB-uVwl_b)is{C>sUxBnVH==})lQTeBF+wtxSW zi;j(Ix7|ekT@zcQ+F6y(gUtMRP2bPy5C#?7y(xBmI`5=H(^-tuAkWaetq)wXL>g zLQ=Djn(^PocWr;aoRe=q*Vd~3-|yGl48;`+$sFD4FD6bDJgDUE*Vdvc85zU(h-+O@ zjf&W58EvL-^&5F4uUo8RFKB+etS9=1%Q1#)7N3j`MLgFixRdx|`+j4ojgoB}YwoUE zqCIU_=+(u9UPnu!tl*G}y!4c84nDRl0->DFBfquL_2_e@%FS|IYG{1x55^}7;H-z06m^XcS* zJ4U{Dqt>qKZS&jU>OX1Yy1o}n9CPJwxz0Ja*?{ND*+pxk${tS4z2e(l~d+H%D_ z8{_UJPw4)-Y-!-Rjux4B2Yk5Siq1LM(Udsn*^bi_tfnn{^t77G?1SZTaW1bLDIHZW zS3a=YmvW-QZC85U?61eurk}AXzA>$-SVDNszC;fhxrCdmOtN=n##b+Txz@(wdXZ#( z?o*FdUOQIIZn)U_@z@a)=M4Ku?x*d$(u!+VJGe%=T#?YLl*@cOftk1bzChi|h?ttq zk1lX4nm_rJeDxB)kX26dyC2)<>dh?QB{$PTuOo5o@~$hdmre@xy)4~(;}K8nx}S3I zK2MQeohg0QM3gyDf=^<_s?d_z4{NM_&4c6i-mcHPl|Dg`=U8>(hLes}Z2T*JJDZ2z zb9$Mne`9Z!RMlM0sl{GrXL)T(+4W&h{g$BWrPi08#tOcFZ?17z?my>y`9uFz^FCR` z2`+u7<>V{L-Re@ge5Slz;M;>A^w#EGy5+xE$o~&hyv@WrjsMl7et(d&_3yGZ>$lt1 zps>5)`$;pO`s$YB8b8~N7iW2!wec73d-_$M<%0X-ecUUjcx;mWvi5j=+k44hlg}Tl z{UO`9#zg6FW90RkNA4}t$$1oMrdzmhKBbRz5i#&Sg@kd-6YcLDb|`52Pk+eSVE*H5f`~ObLU;hrwVrUebl9kDtEflmMw14Z`_WH%ozkKn3@o>fc_h;VZO^Us7 zME>v7bKmRUe=psCe)sRI*X#dEH~9IqUtrnVGwrWpi{NAdenp1*Uc>&6lOCjYh|itQ z>{B1$WYm$!>Bh1B5RcS|3G}t9)*XlcK=l6|F4qSf9$hRT++4as(X|khBDriDJ;4C zqFm>$heyR+1MBp}jN91~^|P){4#|z)%z8_C+0+dGh%B3xTaQnws_wV6StIqaBQIlj z$mwfqcHR6_&ON0{iY0F+-|FMeSDtRvG2-uDtz_3dF~Tdyz0`y=UtoK>lf5#_Ew0;E z-Sd29LnmwQOLcwHV6|%7av9s3au;*k&z<`9wPm4|W;e_Av)1?Cyq&yiV#fFS_jivz znxlAk-Rm9y&f0R%sM?(O!f*P4>AkHd#U)!0&C`GL;;7~3Ob3Mv$;VDcpPr#IOX}YG z$lX`}dL9aKJ2PXJOn~m(?{-E9?g_29mpCK2E&b}8j6AIzhq|y&xhG6^t#!$YFqUbo zmM%Vgb<2$q&Q+3?Q+GaMnI@3t%i0$|Jn#RkJ52SYG_L+3C=1p?i})Y&-CO zAAe-zjHo%ajYM@)RHb9dTOxkuj)xwog@>GU<4by06I^XpV88|jpsBeF)n1Vl6TZS#HE za??oe@*kcX59GJ2y^Q&2wdGPkzPUzW@Mh7&B_i&&D>PRvTq3-;_g0eG#qxLd3yz-H zbpMg8S-#UTK^f5-cXBmueds9GIJ~T9yxISGOWe-BPg>CvY@z$mR`UJh zo*w%LD|+}pEbOr_QrYz@$kTm!)tQcMQw`5v64Uvk^H1gR`I_JT1$lkf_a2&9I8XMU z;XkE^!i-A;Bu~ybGUb5m{f+hYTqSxN);%}SJ>Q%i8`3P05$RLPy(T&$dhxWmYd6KY zZw@)WCBsX6T~=e;q1+4a6|c<6)Lk0Ezxv8*^QSYds+B);cd-S|OAMNtpS1DAk~Eb$ zis9kl``4PYN3`z7q#e~+kzTZ;im%veyJv&Rl3RbiDNJqq4N@{& z?9G=7o8Jc}c)qQjHdE^6;^JAl^Og6;C%4tB77H9n$~^omW7(xw>&3Ti+0VA%!uq)e ze`jgAs`gtnX;q%u8821xZhG3>-%Bky8h3N(9l9$jYGV_7PHEoKl26XJWZeuC8>SU} zR_QvFBz5#*HwTa3;uN8!52ty0JiO+~a@e%db4qJAhqTpuuQ$s|c~u-_96k0lYZZ!Y zeI#+MtG+x?zi)BmoCAAZHVdli$lKmv+97Z|_K8zY{Aijy?sS0e@F0yBbl52)vggvzo2U8u>Qw|y^dR#+ZH$1YiwIMJ?FMx0fTGyb%8z1 zg7WEF7Ayu)h8e?c-2zlQF8dkH=LhD z^UE_^ojj^e{J3TH^0bR%{Oy}QIbM?fU7MPk_9+}Z&(6&+0~9rw@~}n>iy{c52u>e`Y!Et`wu;tyj_#KJaA5TVST4f`TqGU z!)xTr9)|vr_**BoX4#otU9v)D@vbvl*#Gt4T0J55!7?tjdym^sFWTTCGohf^JKJ}` zvJ|ODfA&n+`*hZZvx`rw%I=8WvF3e|M&Ew1sytTQ-XKvW(ZA#AzZI(! z zO$_hk7q>KIP)6BN6pHvm6$($5cqlMA<+c=4UKm(td$KH8Xi0_u4@}FF#=2;*q~9I( z$>%bJC-dIXVycXT3fVJVNuS(*$Dhe0WAcMLp-iA5M{(9C6Q)sjd*rJXgmLR(S266w|#Tun^yUGbWYF$q%O} zPtLqAE(0I(;ACL1hPjJ@fniA_e-&8K{`)RW+iIaq*2()|z+8vrY?Dpqi-A>TJd$FPm!ydNuJ5~A6qdAEC6%uo>()bECMs@*UN!S0%xts7oLbQ&09M8;S{CGTu%*{er%uo z;fTiMh(`jGOP)$Gu^yN_;b{bu=HbbT7i_>G|NJ7dU4M^E{(8|GEHU?)6w`%clXpJz eW>PvnS?Y@VWZmZ+e8vpM42K077}Ae}!Uh0s16mIN diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b343370e3..549d84424 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Jul 07 13:15:43 EDT 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index cccdd3d51..4f906e0c8 100755 --- a/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -66,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -109,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -138,19 +156,19 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -159,14 +177,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index f9553162f..107acd32c 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell