From 3e4f343b0757aa0b38f31ee8ef6c340b4c457b36 Mon Sep 17 00:00:00 2001 From: Toby Harris Date: Mon, 18 Sep 2023 10:20:41 +0100 Subject: [PATCH] `manualExit` suppresses `-quit`, useful for buildMethods with async calls --- action.yml | 4 ++++ dist/index.js | Bin 22170535 -> 22170735 bytes dist/index.js.map | Bin 14627283 -> 14627513 bytes dist/platforms/ubuntu/steps/build.sh | 2 +- src/model/build-parameters.ts | 2 ++ src/model/image-environment-factory.ts | 1 + src/model/input.test.ts | 13 +++++++++++++ src/model/input.ts | 4 ++++ 8 files changed, 25 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 1b5aff47..ef48e8c2 100644 --- a/action.yml +++ b/action.yml @@ -31,6 +31,10 @@ inputs: required: false default: '' description: 'Path to a Namespace.Class.StaticMethod to run to perform the build.' + manualExit: + required: false + default: '' + description: 'Suppresses `-quit`. Exit your build method using `EditorApplication.Exit(0)` instead.' customParameters: required: false default: '' diff --git a/dist/index.js b/dist/index.js index 416f12b4bcf89f72dbfba874bfcf285551e89d29..9846f22ac3f4d716f240265ff2344cd26b7dfca0 100644 GIT binary patch delta 1556 zcmYk+XIKqj9ER~L9ny&-a!Mi+qH>hIl7kSHLS!a;X74?-S2*_GvPbq_nb~{qz4yGI zFZl4guj~Ere?Gp;Z7IgrGg6G}9W0I=yiT~8ZIhN7oSpv7 z``Ds7+h16wJj5eB#uGfnGd#x&yu>TK#v8oFJG{pS ze8eYw#ut3WH+;tr{KPN(9-EqEHxWu2#a=NeX_a(}gOXlxRE&y~l0nI+n3PP4vyxfK zqPQqo6|>^1xGC8bcO|>xq2y3J}<0du8vv_a=81uvdKy|*)x0Zz4v_2 zhu{00zu>%EkZqebKihVTwJ|x<-#XD`Ofne_FoSu9$!HPald-F=#oUBs#~iDq)N~72 zLfaa-U;|s&!5+EcfIM)76Y|0t`H&wja76(Wgd5!9fkG&ZBJhM4yx{|16h$!hH#h=fk;$G4b(&wq7j2ysEt^} zAs%&57xhpd4bTvc&=^h76wQ!;=4gSIXoc2jgSKdg_UM3)=!DMbg0AR>?&yJ@=!M?s zgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRw}&IE=>xBw->ZVKSy*DyCsNW?&{}VK$O6 z2XiqG^RWO6u?UN?1WS>EWmt|CNX1I5!fLER8rEVR)?))UA|0Es8C$Rw+prxwuoJtG zf!)}Hz1WBS$ix9;;UEs-Fpl6Tj^Q{?;3Tqf3a4=fXK@baaRC=`372sNSCNBjxQ-jR ziCeghJGhH`xQ_>Th(~ygCwPiyc#ao%iC1`yH+YM8c#jYGh)?*8FZhaY_>Ld=iC_4Q zKlqD(Q&Q6nGoY9$=8A=4saPr2N-o7lu~qC8dnLExpyW{;6(=RH;;iIT@+&Tit5QHI zsJJQaiic82DXbJxJQXj+Tk%nRm7+>9rMOZ;@l#4FrIgZ28O5mhD`k}crJPb;2~>iV zV5Nc*qEu8WDWOVbrHWEjsiuS};fhI#P$HG;N)4r^5~V~dF-k3^wi2tvDe+1jLl%Ex HIGgex?K}pu diff --git a/dist/index.js.map b/dist/index.js.map index 5ae2fa44a584427c19f336c326342f3e9e7da505..62a551ddd9b2457fa6c40e11143a0b143302d261 100644 GIT binary patch delta 1144 zcmYkz=~s*a6vy$?Hq=B-)Tr=eX|XkvB}5TI)HG5lVTu+pCCpIBP!eUE$b)PNm9-=z zlEzL*rIh52;|>2p&hhOW=jg@f+-~ zQGi1@j6xLQ2#(?yj^hN3D8@;gLJ3Yo#2K8$Ih5i&F5n_A;WEl_1?9MkYq*XIRH6zu za1*z18+ULQ)u_Qe)Z#ws@Bk(}L_HqiF&gj$jd+SCnDGqH@d7XL3a{}7Z}ASzc#jYG gh!%W8E85VG&*(rWzMu=;_=+BUL$68M^SwOgFS;cdD*ylh delta 1026 zcmW;HSy0V!6u|MhZf^81ZWo0p`<5k3mI~Q-Wy_wjWeHbV6CKGfvQ$ccW#47Jx^!iU z?37R;$ueU+c+#txX86{_XXc#wo|jYbtJYNhv({wOO&MZw(VZhLfAyMJOG*8fT5HU) zTZ^nly(Y+_*;8B#qw1pOh|hLOFi-*wdc=3LrdxyEGWE3Inx+?48KdJJh{i9tyNB}OGqN*XFLDREZP zNJ(QQE=n{du1egLG*Qx2iCKxe5{r^%N}4Nap~ORpr;?URTIEaYKc%{NsF!oHZ-^J# zpe?)|z9BxvevSa~Nt~Z-uJ%DYv_}VYL??7c7j#88bVm>Pq9=NxH~PR2ebEp7F#!G; zh(Q>PAqYSqf-n@rFdV@cfsq)6(HMiV7>DtgfQgud$(Vwv2tg>OVLE1DCT1ZFvoQyA zF%NY=FTg^CV-X?{iN#ogrC5gLh{6i2#44;tG}d4(*1?MPh(RniU?VnRGqzwW;;;?z z*p3}YfM6#Qu?tDq4TWUv!Cs_bANJz_4k8t4NXH>$AQOj?1sz9_jT{`sF&xJUoWv=d z#u=Q&Ih@A@T*M{h;xew_Dz4!=Zor0{$b%iXa2xq>;0_9K7x!=<4^W7Qc!VN6#uGfn uGd#x&yu>TKMlnk82Bmn5cX*F7l%oP4@DZO-iO;CQ7gXb`!(9C>H|#%W!rit2 diff --git a/dist/platforms/ubuntu/steps/build.sh b/dist/platforms/ubuntu/steps/build.sh index 74388fc4..7bd719a2 100755 --- a/dist/platforms/ubuntu/steps/build.sh +++ b/dist/platforms/ubuntu/steps/build.sh @@ -119,7 +119,7 @@ echo "" unity-editor \ -logfile /dev/stdout \ - -quit \ + $( [ -n "${MANUAL_EXIT+set}" ] || echo "-quit" ) \ -customBuildName "$BUILD_NAME" \ -projectPath "$UNITY_PROJECT_PATH" \ -buildTarget "$BUILD_TARGET" \ diff --git a/src/model/build-parameters.ts b/src/model/build-parameters.ts index 4f430194..d3153fbb 100644 --- a/src/model/build-parameters.ts +++ b/src/model/build-parameters.ts @@ -29,6 +29,7 @@ class BuildParameters { public buildFile!: string; public buildMethod!: string; public buildVersion!: string; + public manualExit!: string | undefined; public androidVersionCode!: string; public androidKeystoreName!: string; public androidKeystoreBase64!: string; @@ -139,6 +140,7 @@ class BuildParameters { buildFile, buildMethod: Input.buildMethod, buildVersion, + manualExit: Input.manualExit, androidVersionCode, androidKeystoreName: Input.androidKeystoreName, androidKeystoreBase64: Input.androidKeystoreBase64, diff --git a/src/model/image-environment-factory.ts b/src/model/image-environment-factory.ts index ed780e48..c66697b4 100644 --- a/src/model/image-environment-factory.ts +++ b/src/model/image-environment-factory.ts @@ -37,6 +37,7 @@ class ImageEnvironmentFactory { { name: 'BUILD_PATH', value: parameters.buildPath }, { name: 'BUILD_FILE', value: parameters.buildFile }, { name: 'BUILD_METHOD', value: parameters.buildMethod }, + { name: 'MANUAL_EXIT', value: parameters.manualExit }, { name: 'VERSION', value: parameters.buildVersion }, { name: 'ANDROID_VERSION_CODE', value: parameters.androidVersionCode }, { name: 'ANDROID_KEYSTORE_NAME', value: parameters.androidKeystoreName }, diff --git a/src/model/input.test.ts b/src/model/input.test.ts index f5d08d5c..992059e7 100644 --- a/src/model/input.test.ts +++ b/src/model/input.test.ts @@ -104,6 +104,19 @@ describe('Input', () => { }); }); + describe('manualExit', () => { + it('returns the default value', () => { + expect(Input.manualExit).toStrictEqual(undefined); + }); + + it('takes input from the users workflow', () => { + const mockValue = 'x'; + const spy = jest.spyOn(core, 'getInput').mockReturnValue(mockValue); + expect(Input.manualExit).toStrictEqual(mockValue); + expect(spy).toHaveBeenCalledTimes(1); + }); + }); + describe('versioningStrategy', () => { it('returns the default value', () => { expect(Input.versioningStrategy).toStrictEqual('Semantic'); diff --git a/src/model/input.ts b/src/model/input.ts index 011ed026..378ea1a3 100644 --- a/src/model/input.ts +++ b/src/model/input.ts @@ -126,6 +126,10 @@ class Input { return Input.getInput('buildMethod') || ''; // Processed in docker file } + static get manualExit(): string | undefined { + return Input.getInput('manualExit'); + } + static get customParameters(): string { return Input.getInput('customParameters') || ''; }