Try something really dirty
This commit is contained in:
		| @@ -1,10 +1,9 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |  | ||||||
|     return new (P || (P = Promise))(function (resolve, reject) { |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } |         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|     }); |     }); | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -1,10 +1,9 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |  | ||||||
|     return new (P || (P = Promise))(function (resolve, reject) { |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } |         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|     }); |     }); | ||||||
| }; | }; | ||||||
| @@ -22,7 +21,9 @@ const toolCache = __importStar(require("@actions/tool-cache")); | |||||||
| const path = __importStar(require("path")); | const path = __importStar(require("path")); | ||||||
| const os = __importStar(require("os")); | const os = __importStar(require("os")); | ||||||
| const fs_1 = require("fs"); | const fs_1 = require("fs"); | ||||||
|  | const util_1 = require("util"); | ||||||
| let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || ''; | let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || ''; | ||||||
|  | const renameAsync = util_1.promisify(fs_1.rename); | ||||||
| function install() { | function install() { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         // `rustup` is already installed on Linux and Windows platforms |         // `rustup` is already installed on Linux and Windows platforms | ||||||
| @@ -36,9 +37,38 @@ function install() { | |||||||
|             // to leverage newer features like "latest latest compatible nightly" |             // to leverage newer features like "latest latest compatible nightly" | ||||||
|             yield exec.exec('rustup', ['self', 'update']); |             yield exec.exec('rustup', ['self', 'update']); | ||||||
|             yield exec.exec('rustup', ['set', 'profile', 'minimal']); |             yield exec.exec('rustup', ['set', 'profile', 'minimal']); | ||||||
|  |             if (os.platform() == 'win32') { | ||||||
|  |                 let rustDocsInstalled = false; | ||||||
|  |                 { | ||||||
|  |                     let installedComponents = ''; | ||||||
|  |                     const options = { | ||||||
|  |                         listeners: { | ||||||
|  |                             stdout: (data) => { | ||||||
|  |                                 installedComponents += data.toString(); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                     }; | ||||||
|  |                     yield exec.exec('rustup', ['component', 'list'], options); | ||||||
|  |                     rustDocsInstalled = installedComponents.match(/rust-docs.+\(installed\)/) != null; | ||||||
|  |                 } | ||||||
|  |                 if (rustDocsInstalled) { | ||||||
|  |                     let cargoPath = ''; | ||||||
|  |                     { | ||||||
|  |                         const options = { | ||||||
|  |                             listeners: { | ||||||
|  |                                 stdout: (data) => { | ||||||
|  |                                     cargoPath += data.toString(); | ||||||
|  |                                 } | ||||||
|  |                             } | ||||||
|  |                         }; | ||||||
|  |                         yield exec.exec('where', ['rustup.exe'], options); | ||||||
|  |                     } | ||||||
|  |                     let rustupPath = cargoPath.split('\\').slice(0, -3).concat([".rustup"]).join("\\"); | ||||||
|                     // Github's default Windows install comes with rustup pre-installed with stable, including |                     // Github's default Windows install comes with rustup pre-installed with stable, including | ||||||
|                     // rust-docs. This removes the default stable install so that it doesn't update rust-docs. |                     // rust-docs. This removes the default stable install so that it doesn't update rust-docs. | ||||||
|             yield exec.exec('rustup', ['toolchain', 'uninstall', 'stable']); |                     yield renameAsync(`${rustupPath}\\toolchains`, `${rustupPath}\\_toolchains`); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -633,9 +633,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@types/node": { |     "@types/node": { | ||||||
|       "version": "12.6.9", |       "version": "12.12.14", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", |       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", | ||||||
|       "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", |       "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@types/semver": { |     "@types/semver": { | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jest": "^24.0.13", |     "@types/jest": "^24.0.13", | ||||||
|     "@types/node": "^12.0.4", |     "@types/node": "^12.12.14", | ||||||
|     "@types/semver": "^6.0.0", |     "@types/semver": "^6.0.0", | ||||||
|     "jest": "^24.8.0", |     "jest": "^24.8.0", | ||||||
|     "jest-circus": "^24.7.1", |     "jest-circus": "^24.7.1", | ||||||
|   | |||||||
| @@ -3,9 +3,11 @@ import * as exec from '@actions/exec'; | |||||||
| import * as toolCache from '@actions/tool-cache'; | import * as toolCache from '@actions/tool-cache'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| import * as os from 'os'; | import * as os from 'os'; | ||||||
| import {chmodSync} from 'fs'; | import {chmodSync, rename} from 'fs'; | ||||||
|  | import {promisify} from 'util'; | ||||||
|  |  | ||||||
| let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || ''; | let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || ''; | ||||||
|  | const renameAsync = promisify(rename); | ||||||
|  |  | ||||||
| export async function install() { | export async function install() { | ||||||
|   // `rustup` is already installed on Linux and Windows platforms |   // `rustup` is already installed on Linux and Windows platforms | ||||||
| @@ -20,9 +22,40 @@ export async function install() { | |||||||
|     await exec.exec('rustup', ['self', 'update']); |     await exec.exec('rustup', ['self', 'update']); | ||||||
|  |  | ||||||
|     await exec.exec('rustup', ['set', 'profile', 'minimal']); |     await exec.exec('rustup', ['set', 'profile', 'minimal']); | ||||||
|  |  | ||||||
|  |     if (os.platform() == 'win32') { | ||||||
|  |       let rustDocsInstalled = false; | ||||||
|  |       { | ||||||
|  |         let installedComponents = ''; | ||||||
|  |         const options = { | ||||||
|  |           listeners: { | ||||||
|  |             stdout: (data: Buffer) => { | ||||||
|  |               installedComponents += data.toString(); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }; | ||||||
|  |         await exec.exec('rustup', ['component', 'list'], options); | ||||||
|  |         rustDocsInstalled = installedComponents.match(/rust-docs.+\(installed\)/) != null; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       if (rustDocsInstalled) { | ||||||
|  |         let cargoPath = ''; | ||||||
|  |         { | ||||||
|  |           const options = { | ||||||
|  |             listeners: { | ||||||
|  |               stdout: (data: Buffer) => { | ||||||
|  |                 cargoPath += data.toString(); | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           }; | ||||||
|  |           await exec.exec('where', ['rustup.exe'], options); | ||||||
|  |         } | ||||||
|  |         let rustupPath = cargoPath.split('\\').slice(0, -3).concat([".rustup"]).join("\\"); | ||||||
|         // Github's default Windows install comes with rustup pre-installed with stable, including |         // Github's default Windows install comes with rustup pre-installed with stable, including | ||||||
|         // rust-docs. This removes the default stable install so that it doesn't update rust-docs. |         // rust-docs. This removes the default stable install so that it doesn't update rust-docs. | ||||||
|     await exec.exec('rustup', ['toolchain', 'uninstall', 'stable']); |         await renameAsync(`${rustupPath}\\toolchains`, `${rustupPath}\\_toolchains`); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user