You've already forked gitea-release-action
							
							
				mirror of
				https://gitea.com/actions/gitea-release-action.git
				synced 2025-10-31 06:46:20 +07:00 
			
		
		
		
	🎉
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| node_modules | ||||
							
								
								
									
										37
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| # Gitea Release action | ||||
|  | ||||
| An action to support publishing release to Gitea. | ||||
|  | ||||
| ## Inputs | ||||
|  | ||||
| The following are optional as `step.with` keys | ||||
|  | ||||
| | Name           | Type    | Description                                                                                 | | ||||
| | -------------- | ------- | ------------------------------------------------------------------------------------------- | | ||||
| |  `server_url`  | String  | the base url of the gitea API. Defaults to `github.server_url`                              | | ||||
| |  `body`        | String  | Text communicating notable changes in this release                                          | | ||||
| |  `body_path`   | String  | Path to load text communicating notable changes in this release                             | | ||||
| |  `draft`       | Boolean | Creates a draft release. Defaults to false                                                  | | ||||
| |  `prerelease`  | Boolean | Indicator of whether or not is a prerelease                                                 | | ||||
| |  `files`       | String  | Newline-delimited globs of paths to assets to upload for release                            | | ||||
| |  `name`        | String  | Name of the release. Defaults to tag name                                                   | | ||||
| |  `tag_name`    | String  | Name of a tag. Defaults to `github.ref_name`                                                | | ||||
| |  `repository`  | String  | Name of a target repository in `<owner>/<repo>` format. Defaults to `github.repository`     | | ||||
| |  `token`       | String  | Gitea Token. Defaults to `${{ github.token }}`                                              | | ||||
|  | ||||
| ## Example usage | ||||
|  | ||||
| ```yaml | ||||
| uses: akkuman/gitea-release-action@v1.0.0 | ||||
| with: | ||||
|   files: |- | ||||
|     bin/** | ||||
| ``` | ||||
|  | ||||
| If you want to ignore ssl verify error, you can set env `NODE_TLS_REJECT_UNAUTHORIZED=false` | ||||
|  | ||||
| ## References | ||||
|  | ||||
| - [softprops/action-gh-release: 📦 GitHub Action for creating GitHub Releases](https://github.com/softprops/action-gh-release) | ||||
| - [sigyl-actions/gitea-action-release-asset](https://github.com/sigyl-actions/gitea-action-release-asset) | ||||
| - [actions/release-action: An action written by Golang to support publishing release to Gitea(not Github Actions compatible) - release-action - Gitea: Git with a cup of tea](https://gitea.com/actions/release-action) | ||||
							
								
								
									
										43
									
								
								action.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								action.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| --- | ||||
| name: gitea-release-action | ||||
| description: "An action to support publishing release to Gitea." | ||||
| author: "Akkuman" | ||||
| inputs: | ||||
|   server_url: | ||||
|     description: the base url of the gitea API | ||||
|     required: false | ||||
|     default: ${{ github.server_url }} | ||||
|   body: | ||||
|     description: "Note-worthy description of changes in release" | ||||
|     required: false | ||||
|   name: | ||||
|     description: "Gives the release a custom name. Defaults to tag name" | ||||
|     required: false | ||||
|     default: ${{ github.ref_name }} | ||||
|   tag_name: | ||||
|     description: "Gives a tag name. Defaults to github.GITHUB_REF" | ||||
|     required: false | ||||
|     default: ${{ github.ref_name }} | ||||
|   draft: | ||||
|     description: "Creates a draft release. Defaults to false" | ||||
|     required: false | ||||
|   prerelease: | ||||
|     description: "Identify the release as a prerelease. Defaults to false" | ||||
|     required: false | ||||
|   files: | ||||
|     description: "Newline-delimited list of path globs for asset files to upload" | ||||
|     required: false | ||||
|   repository: | ||||
|     description: "Repository to make releases against, in <owner>/<repo> format" | ||||
|     required: false | ||||
|     default: ${{ github.repository }} | ||||
|   token: | ||||
|     description: "Gitea Token" | ||||
|     required: false | ||||
|     default: ${{ github.token }} | ||||
| runs: | ||||
|   using: "node16" | ||||
|   main: "dist/index.js" | ||||
| branding: | ||||
|   color: "green" | ||||
|   icon: "package" | ||||
							
								
								
									
										33361
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33361
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										242
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										242
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,242 @@ | ||||
| { | ||||
|   "name": "gitea-release-action", | ||||
|   "version": "1.0.0", | ||||
|   "lockfileVersion": 3, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "gitea-release-action", | ||||
|       "version": "1.0.0", | ||||
|       "license": "ISC", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.10.1", | ||||
|         "@actions/github": "^6.0.0", | ||||
|         "@vercel/ncc": "^0.38.1", | ||||
|         "gitea-api": "^1.17.3-1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/core": { | ||||
|       "version": "1.10.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", | ||||
|       "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", | ||||
|       "dependencies": { | ||||
|         "@actions/http-client": "^2.0.1", | ||||
|         "uuid": "^8.3.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/github": { | ||||
|       "version": "6.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", | ||||
|       "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", | ||||
|       "dependencies": { | ||||
|         "@actions/http-client": "^2.2.0", | ||||
|         "@octokit/core": "^5.0.1", | ||||
|         "@octokit/plugin-paginate-rest": "^9.0.0", | ||||
|         "@octokit/plugin-rest-endpoint-methods": "^10.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/http-client": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz", | ||||
|       "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==", | ||||
|       "dependencies": { | ||||
|         "tunnel": "^0.0.6", | ||||
|         "undici": "^5.25.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@fastify/busboy": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", | ||||
|       "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", | ||||
|       "engines": { | ||||
|         "node": ">=14" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/auth-token": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", | ||||
|       "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/core": { | ||||
|       "version": "5.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.2.tgz", | ||||
|       "integrity": "sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==", | ||||
|       "dependencies": { | ||||
|         "@octokit/auth-token": "^4.0.0", | ||||
|         "@octokit/graphql": "^7.0.0", | ||||
|         "@octokit/request": "^8.0.2", | ||||
|         "@octokit/request-error": "^5.0.0", | ||||
|         "@octokit/types": "^12.0.0", | ||||
|         "before-after-hook": "^2.2.0", | ||||
|         "universal-user-agent": "^6.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/endpoint": { | ||||
|       "version": "9.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", | ||||
|       "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", | ||||
|       "dependencies": { | ||||
|         "@octokit/types": "^12.0.0", | ||||
|         "universal-user-agent": "^6.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/graphql": { | ||||
|       "version": "7.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", | ||||
|       "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", | ||||
|       "dependencies": { | ||||
|         "@octokit/request": "^8.0.1", | ||||
|         "@octokit/types": "^12.0.0", | ||||
|         "universal-user-agent": "^6.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/openapi-types": { | ||||
|       "version": "19.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", | ||||
|       "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" | ||||
|     }, | ||||
|     "node_modules/@octokit/plugin-paginate-rest": { | ||||
|       "version": "9.1.4", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.4.tgz", | ||||
|       "integrity": "sha512-MvZx4WvfhBnt7PtH5XE7HORsO7bBk4er1FgRIUr1qJ89NR2I6bWjGyKsxk8z42FPQ34hFQm0Baanh4gzdZR4gQ==", | ||||
|       "dependencies": { | ||||
|         "@octokit/types": "^12.3.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@octokit/core": ">=5" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/plugin-rest-endpoint-methods": { | ||||
|       "version": "10.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz", | ||||
|       "integrity": "sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==", | ||||
|       "dependencies": { | ||||
|         "@octokit/types": "^12.3.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@octokit/core": ">=5" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/request": { | ||||
|       "version": "8.1.6", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", | ||||
|       "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", | ||||
|       "dependencies": { | ||||
|         "@octokit/endpoint": "^9.0.0", | ||||
|         "@octokit/request-error": "^5.0.0", | ||||
|         "@octokit/types": "^12.0.0", | ||||
|         "universal-user-agent": "^6.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/request-error": { | ||||
|       "version": "5.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", | ||||
|       "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", | ||||
|       "dependencies": { | ||||
|         "@octokit/types": "^12.0.0", | ||||
|         "deprecation": "^2.0.0", | ||||
|         "once": "^1.4.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@octokit/types": { | ||||
|       "version": "12.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.3.0.tgz", | ||||
|       "integrity": "sha512-nJ8X2HRr234q3w/FcovDlA+ttUU4m1eJAourvfUUtwAWeqL8AsyRqfnLvVnYn3NFbUnsmzQCzLNdFerPwdmcDQ==", | ||||
|       "dependencies": { | ||||
|         "@octokit/openapi-types": "^19.0.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vercel/ncc": { | ||||
|       "version": "0.38.1", | ||||
|       "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", | ||||
|       "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", | ||||
|       "bin": { | ||||
|         "ncc": "dist/ncc/cli.js" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/before-after-hook": { | ||||
|       "version": "2.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", | ||||
|       "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" | ||||
|     }, | ||||
|     "node_modules/deprecation": { | ||||
|       "version": "2.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", | ||||
|       "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" | ||||
|     }, | ||||
|     "node_modules/gitea-api": { | ||||
|       "version": "1.17.3-1", | ||||
|       "resolved": "https://registry.npmjs.org/gitea-api/-/gitea-api-1.17.3-1.tgz", | ||||
|       "integrity": "sha512-Tj2s8feRRXfO4k6MmPyxa0JDDFG+VMifchc6gchzob+puFJErIIWkElQgum8JYT9sLsAFzHE/IFcMUx0ctlAhQ==" | ||||
|     }, | ||||
|     "node_modules/once": { | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||
|       "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", | ||||
|       "dependencies": { | ||||
|         "wrappy": "1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/tunnel": { | ||||
|       "version": "0.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", | ||||
|       "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", | ||||
|       "engines": { | ||||
|         "node": ">=0.6.11 <=0.7.0 || >=0.7.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/undici": { | ||||
|       "version": "5.28.2", | ||||
|       "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", | ||||
|       "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", | ||||
|       "dependencies": { | ||||
|         "@fastify/busboy": "^2.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=14.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/universal-user-agent": { | ||||
|       "version": "6.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", | ||||
|       "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" | ||||
|     }, | ||||
|     "node_modules/uuid": { | ||||
|       "version": "8.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | ||||
|       "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", | ||||
|       "bin": { | ||||
|         "uuid": "dist/bin/uuid" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/wrappy": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||
|       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| { | ||||
|   "name": "gitea-release-action", | ||||
|   "version": "1.0.0", | ||||
|   "description": "", | ||||
|   "main": "src/main.js", | ||||
|   "scripts": { | ||||
|     "test": "echo \"Error: no test specified\" && exit 1", | ||||
|     "package": "ncc build src/main.js -o dist", | ||||
|     "build": "ncc build src/main.js" | ||||
|   }, | ||||
|   "keywords": [], | ||||
|   "author": "", | ||||
|   "license": "ISC", | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.10.1", | ||||
|     "@actions/github": "^6.0.0", | ||||
|     "@vercel/ncc": "^0.38.1", | ||||
|     "gitea-api": "^1.17.3-1" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										129
									
								
								src/main.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								src/main.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,129 @@ | ||||
| import fs from "fs"; | ||||
| import { Blob } from "buffer"; | ||||
|  | ||||
| import core from "@actions/core"; | ||||
|  | ||||
| import gitea from "gitea-api"; | ||||
| import path from 'path' | ||||
|  | ||||
| async function run() { | ||||
|   try { | ||||
|     const server_url = core.getInput("server_url") | ||||
|     const name = core.getInput("name") | ||||
|     const body = core.getInput("body") | ||||
|     const tag_name = core.getInput("tag_name") | ||||
|     const draft = core.getInput("draft") | ||||
|     const prerelease = core.getInput("prerelease") | ||||
|     const files = core.getInput("files") | ||||
|     const repository = core.getInput("repository") | ||||
|     const token = core.getInput("token") | ||||
|  | ||||
|     const [owner, repo] = (repository).split("/") | ||||
|  | ||||
|     const gitea_client = new gitea.GiteaApi({ | ||||
|       BASE: `${server_url}/api/v1`, | ||||
|       WITH_CREDENTIALS: true, | ||||
|       TOKEN: token, | ||||
|     }); | ||||
|  | ||||
|     const response = await createOrGetRelease(gitea_client, owner, repo, { | ||||
|       body: body, | ||||
|       draft: draft, | ||||
|       name: name, | ||||
|       prerelease: prerelease, | ||||
|       tag_name: tag_name, | ||||
|     }) | ||||
|     const file_patterns = files.split('\n') | ||||
|     const all_files = paths(file_patterns); | ||||
|     if (all_files.length == 0) { | ||||
|       console.warn(`${file_patterns} not include valid file.`); | ||||
|     } | ||||
|     await uploadFiles(gitea_client, owner, repo, response.id, all_files) | ||||
|     console.log(`🎉 Release ready at ${response.html_url}`); | ||||
|   } catch (error) { | ||||
|     core.setFailed(error.message); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * @param {gitea.GiteaApi} client  | ||||
|  * @param {String} owner  | ||||
|  * @param {String} repo  | ||||
|  * @param {gitea.CreateReleaseOption} body | ||||
|  * @returns {Promise<gitea.Release>} | ||||
|  */ | ||||
| async function createOrGetRelease(client, owner, repo, body) { | ||||
|   try { | ||||
|     let release = await client.repository.repoGetReleaseByTag({ | ||||
|       owner: owner, | ||||
|       repo: repo, | ||||
|       tag: body.tag_name, | ||||
|     }) | ||||
|     return release | ||||
|   } catch (error) { | ||||
|     if (!(error instanceof gitea.ApiError) || error.status !== 404) { | ||||
|       throw error | ||||
|     } | ||||
|   } | ||||
|   let release = await client.repository.repoCreateRelease({ | ||||
|     owner: owner, | ||||
|     repo: repo, | ||||
|     body: body, | ||||
|   }) | ||||
|   return release | ||||
| } | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * @param {Array<String>} patterns  | ||||
|  * @returns {Array<String>} | ||||
|  */ | ||||
| function paths(patterns) { | ||||
|   return patterns.reduce((acc, pattern) => { | ||||
|     return acc.concat( | ||||
|       glob.sync(pattern).filter((path) => statSync(path).isFile()) | ||||
|     ); | ||||
|   }, []); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * @param {gitea.GiteaApi} client  | ||||
|  * @param {String} owner  | ||||
|  * @param {String} repo  | ||||
|  * @param {Number} release_id  | ||||
|  * @param {Array<String>} all_files  | ||||
|  */ | ||||
| async function uploadFiles(client, owner, repo, release_id, all_files) { | ||||
|   const attachments = await client.repository.repoListReleaseAttachments({ | ||||
|     owner: owner, | ||||
|     repo: repo, | ||||
|     id: release_id, | ||||
|   }) | ||||
|   for (const filepath in all_files) { | ||||
|     for (const attachment in attachments) { | ||||
|       if (attachment.name === path.basename(filepath)) { | ||||
|         await client.repository.repoDeleteReleaseAttachment({ | ||||
|           owner: owner, | ||||
|           repo: repo, | ||||
|           id: id, | ||||
|           attachmentId: attachment.id, | ||||
|         }) | ||||
|         console.log(`Successfully deleted old release attachment ${attachment.name}`) | ||||
|       } | ||||
|       const content = fs.readFileSync(filepath); | ||||
|       const blob = new Blob([content]); | ||||
|       await client.repository.repoCreateReleaseAttachment({ | ||||
|         owner: owner, | ||||
|         repo: repo, | ||||
|         id: release_id, | ||||
|         attachment: blob, | ||||
|         name: path.basename(filepath), | ||||
|       }) | ||||
|       console.log(`Successfully uploaded release attachment ${filepath}`) | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| run(); | ||||
		Reference in New Issue
	
	Block a user
	 Akkuman
					Akkuman