mirror of
				https://github.com/tobspr/shapez.io.git
				synced 2025-06-13 13:04:03 +00:00 
			
		
		
		
	* sign & notarise darwin package
* upload bundle as github release
* allow unsigned build and full build with release
* deref darwin bundle symlinks only when building on win32
Windows [mangles symlinks](https://github.com/electron/electron-packager/issues/71). Currently we work around this by placing several copies of the frameworks in OS X app bundles (see 1e5aa3867d). However:
- This is invalid: the framework toplevel must [only contain symlinks](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html). `codesign` [refuses to sign](https://stackoverflow.com/questions/25969946/osx-10-9-5-code-signing-v2-signing-a-framework-with-bundle-format-is-ambiguou) this invalid structure.
- It seriously bloats the bundle.
Since there's no fix for the Windows misbehaviour, keep the workaround, but only when cross-building on win32 for darwin; and log a warning.
		
	
			
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const path = require("path");
 | |
| const fs = require("fs");
 | |
| const execSync = require("child_process").execSync;
 | |
| const { Octokit } = require("@octokit/rest");
 | |
| const buildutils = require("./buildutils");
 | |
| 
 | |
| function gulptasksReleaseUploader($, gulp, buildFolder) {
 | |
|     const standaloneDir = path.join(__dirname, "..", "tmp_standalone_files");
 | |
|     const darwinApp = path.join(standaloneDir, "shapez.io-standalone-darwin-x64", "shapez.io-standalone.app");
 | |
|     const dmgName = "shapez.io-standalone.dmg";
 | |
|     const dmgPath = path.join(standaloneDir, "shapez.io-standalone-darwin-x64", dmgName);
 | |
| 
 | |
|     gulp.task("standalone.uploadRelease.darwin64.cleanup", () => {
 | |
|         return gulp.src(dmgPath, { read: false, allowEmpty: true }).pipe($.clean({ force: true }));
 | |
|     });
 | |
| 
 | |
|     gulp.task("standalone.uploadRelease.darwin64.compress", cb => {
 | |
|         console.log("Packaging disk image", dmgPath);
 | |
|         execSync(`hdiutil create -format UDBZ -srcfolder ${darwinApp} ${dmgPath}`);
 | |
|         cb();
 | |
|     });
 | |
| 
 | |
|     gulp.task("standalone.uploadRelease.darwin64.upload", async cb => {
 | |
|         const currentTag = buildutils.getTag();
 | |
| 
 | |
|         const octokit = new Octokit({
 | |
|             auth: process.env.SHAPEZ_CLI_GITHUB_TOKEN
 | |
|         });
 | |
| 
 | |
|         const createdRelease = await octokit.request("POST /repos/{owner}/{repo}/releases", {
 | |
|             owner: process.env.SHAPEZ_CLI_GITHUB_USER,
 | |
|             repo: "shapez.io",
 | |
|             tag_name: currentTag,
 | |
|             name: currentTag,
 | |
|             draft: true
 | |
|         });
 | |
| 
 | |
|         const { data: { id, upload_url } } = createdRelease;
 | |
|         console.log(`Created release ${id} for tag ${currentTag}`);
 | |
| 
 | |
|         const dmgContents = fs.readFileSync(dmgPath);
 | |
|         const dmgSize = fs.statSync(dmgPath).size;
 | |
|         console.log("Uploading", dmgContents.length / 1024 / 1024, "MB to", upload_url);
 | |
| 
 | |
|         await octokit.request({
 | |
|             method: "POST",
 | |
|             url: upload_url,
 | |
|             headers: {
 | |
|                 "content-type": "application/x-apple-diskimage"
 | |
|             },
 | |
|             name: dmgName,
 | |
|             data: dmgContents
 | |
|         });
 | |
| 
 | |
|         cb();
 | |
|     });
 | |
| 
 | |
|     gulp.task("standalone.uploadRelease.darwin64",
 | |
|         gulp.series(
 | |
|             "standalone.uploadRelease.darwin64.cleanup",
 | |
|             "standalone.uploadRelease.darwin64.compress",
 | |
|             "standalone.uploadRelease.darwin64.upload"
 | |
|         ));
 | |
| }
 | |
| 
 | |
| module.exports = { gulptasksReleaseUploader };
 |