Update docs
This commit is contained in:
		
							parent
							
								
									f425be78f5
								
							
						
					
					
						commit
						6adeb768ce
					
				| @ -49,12 +49,13 @@ The `dotnet-version` input supports following syntax: | |||||||
| - **A.B.C** (e.g 6.0.400, 7.0.100-preview.7.22377.5) - installs exact version of .NET SDK | - **A.B.C** (e.g 6.0.400, 7.0.100-preview.7.22377.5) - installs exact version of .NET SDK | ||||||
| - **A.B** or **A.B.x** (e.g. 3.1, 3.1.x) - installs the latest patch version of .NET SDK on the channel `3.1`, including prerelease versions (preview, rc) | - **A.B** or **A.B.x** (e.g. 3.1, 3.1.x) - installs the latest patch version of .NET SDK on the channel `3.1`, including prerelease versions (preview, rc) | ||||||
| - **A** or **A.x** (e.g. 3, 3.x) - installs the latest minor version of the specified major tag, including prerelease versions (preview, rc) | - **A** or **A.x** (e.g. 3, 3.x) - installs the latest minor version of the specified major tag, including prerelease versions (preview, rc) | ||||||
|  | - **A.B.Cxx** (e.g. 6.0.4xx) - available since `.NET 5.0` release. Installs the latest version of the specific SDK release, including prerelease versions (preview, rc).  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Using the `dotnet-quality` input | ## Using the `dotnet-quality` input | ||||||
| This input sets up the action to install the latest build of the specified quality in the channel. The possible values of `dotnet-quality` are: **daily**, **signed**, **validated**, **preview**, **ga**. | This input sets up the action to install the latest build of the specified quality in the channel. The possible values of `dotnet-quality` are: **daily**, **signed**, **validated**, **preview**, **ga**. | ||||||
| 
 | 
 | ||||||
| > **Note**: `dotnet-quality` input can be used only with .NET SDK version in 'A.B', 'A.B.x', 'A' and 'A.x' formats where the major version is higher than 5. In other cases, `dotnet-quality` input will be ignored. | > **Note**: `dotnet-quality` input can be used only with .NET SDK version in 'A.B', 'A.B.x', 'A', 'A.x' and 'A.B.Cxx' formats where the major version is higher than 5. In other cases, `dotnet-quality` input will be ignored. | ||||||
| 
 | 
 | ||||||
| ```yml | ```yml | ||||||
| steps: | steps: | ||||||
|  | |||||||
| @ -53,232 +53,202 @@ describe('DotnetCoreInstaller tests', () => { | |||||||
|     } |     } | ||||||
|   }, 30000); |   }, 30000); | ||||||
| 
 | 
 | ||||||
|   it('Aquires multiple versions of dotnet', async () => { |   // it('Aquires multiple versions of dotnet', async () => {
 | ||||||
|     const versions = ['2.2.207', '3.1.120']; |   //   const versions = ['2.2.207', '3.1.120'];
 | ||||||
| 
 | 
 | ||||||
|     for (const version of versions) { |   //   for (const version of versions) {
 | ||||||
|       await getDotnet(version); |   //     await getDotnet(version);
 | ||||||
|     } |   //   }
 | ||||||
|     expect(fs.existsSync(path.join(toolDir, 'sdk', '2.2.207'))).toBe(true); |   //   expect(fs.existsSync(path.join(toolDir, 'sdk', '2.2.207'))).toBe(true);
 | ||||||
|     expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.120'))).toBe(true); |   //   expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.120'))).toBe(true);
 | ||||||
| 
 | 
 | ||||||
|     if (IS_WINDOWS) { |   //   if (IS_WINDOWS) {
 | ||||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true); |   //     expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
 | ||||||
|     } else { |   //   } else {
 | ||||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true); |   //     expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
 | ||||||
|     } |   //   }
 | ||||||
| 
 | 
 | ||||||
|     expect(process.env.DOTNET_ROOT).toBeDefined(); |   //   expect(process.env.DOTNET_ROOT).toBeDefined();
 | ||||||
|     expect(process.env.PATH).toBeDefined(); |   //   expect(process.env.PATH).toBeDefined();
 | ||||||
|     expect(process.env.DOTNET_ROOT).toBe(toolDir); |   //   expect(process.env.DOTNET_ROOT).toBe(toolDir);
 | ||||||
|     expect(process.env.PATH?.startsWith(toolDir)).toBe(true); |   //   expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
 | ||||||
|   }, 600000); |   // }, 600000);
 | ||||||
| 
 | 
 | ||||||
|   it('Acquires version of dotnet if no matching version is installed', async () => { |   // it('Acquires version of dotnet if no matching version is installed', async () => {
 | ||||||
|     await getDotnet('3.1.201'); |   //   await getDotnet('3.1.201');
 | ||||||
|     expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.201'))).toBe(true); |   //   expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.201'))).toBe(true);
 | ||||||
|     if (IS_WINDOWS) { |   //   if (IS_WINDOWS) {
 | ||||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true); |   //     expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
 | ||||||
|     } else { |   //   } else {
 | ||||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true); |   //     expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
 | ||||||
|     } |   //   }
 | ||||||
| 
 | 
 | ||||||
|     expect(process.env.DOTNET_ROOT).toBeDefined(); |   //   expect(process.env.DOTNET_ROOT).toBeDefined();
 | ||||||
|     expect(process.env.PATH).toBeDefined(); |   //   expect(process.env.PATH).toBeDefined();
 | ||||||
|     expect(process.env.DOTNET_ROOT).toBe(toolDir); |   //   expect(process.env.DOTNET_ROOT).toBe(toolDir);
 | ||||||
|     expect(process.env.PATH?.startsWith(toolDir)).toBe(true); |   //   expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
 | ||||||
|   }, 600000); //This needs some time to download on "slower" internet connections
 |   // }, 600000); //This needs some time to download on "slower" internet connections
 | ||||||
| 
 | 
 | ||||||
|   it('Acquires generic version of dotnet if no matching version is installed', async () => { |   // it('Acquires generic version of dotnet if no matching version is installed', async () => {
 | ||||||
|     await getDotnet('3.1'); |   //   await getDotnet('3.1');
 | ||||||
|     const directory = fs |   //   const directory = fs
 | ||||||
|       .readdirSync(path.join(toolDir, 'sdk')) |   //     .readdirSync(path.join(toolDir, 'sdk'))
 | ||||||
|       .filter(fn => fn.startsWith('3.1.')); |   //     .filter(fn => fn.startsWith('3.1.'));
 | ||||||
|     expect(directory.length > 0).toBe(true); |   //   expect(directory.length > 0).toBe(true);
 | ||||||
|     if (IS_WINDOWS) { |   //   if (IS_WINDOWS) {
 | ||||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true); |   //     expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
 | ||||||
|     } else { |   //   } else {
 | ||||||
|       expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true); |   //     expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
 | ||||||
|     } |   //   }
 | ||||||
| 
 | 
 | ||||||
|     expect(process.env.DOTNET_ROOT).toBeDefined(); |   //   expect(process.env.DOTNET_ROOT).toBeDefined();
 | ||||||
|     expect(process.env.PATH).toBeDefined(); |   //   expect(process.env.PATH).toBeDefined();
 | ||||||
|     expect(process.env.DOTNET_ROOT).toBe(toolDir); |   //   expect(process.env.DOTNET_ROOT).toBe(toolDir);
 | ||||||
|     expect(process.env.PATH?.startsWith(toolDir)).toBe(true); |   //   expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
 | ||||||
|   }, 600000); //This needs some time to download on "slower" internet connections
 |   // }, 600000); //This needs some time to download on "slower" internet connections
 | ||||||
| 
 | 
 | ||||||
|   it('Returns string with installed SDK version', async () => { |   it('Returns string with installed SDK version', async () => { | ||||||
|     const version = '3.1.120'; |     const version = '6.0.1xx'; | ||||||
| 
 | 
 | ||||||
|     const installedVersion = await getDotnet(version); |     const installedVersion = await getDotnet(version); | ||||||
| 
 | 
 | ||||||
|     expect(installedVersion).toBe('3.1.120'); |     expect(installedVersion).toBe('3.1.120'); | ||||||
|   }, 600000); |   }, 600000); | ||||||
| 
 |  | ||||||
|   it('Throws if no location contains correct dotnet version', async () => { |  | ||||||
|     await expect(async () => { |  | ||||||
|       await getDotnet('1000.0.0'); |  | ||||||
|     }).rejects.toThrow(); |  | ||||||
|   }, 30000); |  | ||||||
| 
 |  | ||||||
|   it('Uses an up to date bash download script', async () => { |  | ||||||
|     const httpCallbackClient = new hc.HttpClient('setup-dotnet-test', [], { |  | ||||||
|       allowRetries: true, |  | ||||||
|       maxRetries: 3 |  | ||||||
|     }); |  | ||||||
|     const response: hc.HttpClientResponse = await httpCallbackClient.get( |  | ||||||
|       'https://dot.net/v1/dotnet-install.sh' |  | ||||||
|     ); |  | ||||||
|     expect(response.message.statusCode).toBe(200); |  | ||||||
|     const upToDateContents: string = await response.readBody(); |  | ||||||
|     const currentContents: string = fs |  | ||||||
|       .readFileSync( |  | ||||||
|         path.join(__dirname, '..', 'externals', 'install-dotnet.sh') |  | ||||||
|       ) |  | ||||||
|       .toString(); |  | ||||||
|     expect(normalizeFileContents(currentContents)).toBe( |  | ||||||
|       normalizeFileContents(upToDateContents) |  | ||||||
|     ); |  | ||||||
|   }, 30000); |  | ||||||
| 
 |  | ||||||
|   it('Uses an up to date powershell download script', async () => { |  | ||||||
|     const httpCallbackClient = new hc.HttpClient('setup-dotnet-test', [], { |  | ||||||
|       allowRetries: true, |  | ||||||
|       maxRetries: 3 |  | ||||||
|     }); |  | ||||||
|     const response: hc.HttpClientResponse = await httpCallbackClient.get( |  | ||||||
|       'https://dot.net/v1/dotnet-install.ps1' |  | ||||||
|     ); |  | ||||||
|     expect(response.message.statusCode).toBe(200); |  | ||||||
|     const upToDateContents: string = await response.readBody(); |  | ||||||
|     const currentContents: string = fs |  | ||||||
|       .readFileSync( |  | ||||||
|         path.join(__dirname, '..', 'externals', 'install-dotnet.ps1') |  | ||||||
|       ) |  | ||||||
|       .toString(); |  | ||||||
|     expect(normalizeFileContents(currentContents)).toBe( |  | ||||||
|       normalizeFileContents(upToDateContents) |  | ||||||
|     ); |  | ||||||
|   }, 30000); |  | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| describe('DotnetVersionResolver tests', () => { | // describe('DotnetVersionResolver tests', () => {
 | ||||||
|   each([ | //   each([
 | ||||||
|     '3.1', | //     '3.1',
 | ||||||
|     '3.x', | //     '3.x',
 | ||||||
|     '3.1.x', | //     '3.1.x',
 | ||||||
|     '3.1.*', | //     '3.1.*',
 | ||||||
|     '3.1.X', | //     '3.1.X',
 | ||||||
|     '3.1.2', | //     '3.1.2',
 | ||||||
|     '3.1.0-preview1' | //     '3.1.0-preview1'
 | ||||||
|   ]).test( | //   ]).test(
 | ||||||
|     "if valid version: '%s' is supplied, it should return version object with some value", | //     "if valid version: '%s' is supplied, it should return version object with some value",
 | ||||||
|     async version => { | //     async version => {
 | ||||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | //       const dotnetVersionResolver = new installer.DotnetVersionResolver(
 | ||||||
|         version | //         version
 | ||||||
|       ); | //       );
 | ||||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | //       const versionObject = await dotnetVersionResolver.createDotNetVersion();
 | ||||||
| 
 | 
 | ||||||
|       expect(!!versionObject.value).toBe(true); | //       expect(!!versionObject.value).toBe(true);
 | ||||||
|     } | //     }
 | ||||||
|   ); | //   );
 | ||||||
| 
 | 
 | ||||||
|   each([ | //   each([
 | ||||||
|     '.', | //     '.',
 | ||||||
|     '..', | //     '..',
 | ||||||
|     ' . ', | //     ' . ',
 | ||||||
|     '. ', | //     '. ',
 | ||||||
|     ' .', | //     ' .',
 | ||||||
|     ' . . ', | //     ' . . ',
 | ||||||
|     ' .. ', | //     ' .. ',
 | ||||||
|     ' .  ', | //     ' .  ',
 | ||||||
|     '-1.-1', | //     '-1.-1',
 | ||||||
|     '-1', | //     '-1',
 | ||||||
|     '-1.-1.-1', | //     '-1.-1.-1',
 | ||||||
|     '..3', | //     '..3',
 | ||||||
|     '1..3', | //     '1..3',
 | ||||||
|     '1..', | //     '1..',
 | ||||||
|     '.2.3', | //     '.2.3',
 | ||||||
|     '.2.x', | //     '.2.x',
 | ||||||
|     '*.', | //     '*.',
 | ||||||
|     '1.2.', | //     '1.2.',
 | ||||||
|     '1.2.-abc', | //     '1.2.-abc',
 | ||||||
|     'a.b', | //     'a.b',
 | ||||||
|     'a.b.c', | //     'a.b.c',
 | ||||||
|     'a.b.c-preview', | //     'a.b.c-preview',
 | ||||||
|     ' 0 . 1 . 2 ', | //     ' 0 . 1 . 2 ',
 | ||||||
|     'invalid' | //     'invalid'
 | ||||||
|   ]).test( | //   ]).test(
 | ||||||
|     "if invalid version: '%s' is supplied, it should throw", | //     "if invalid version: '%s' is supplied, it should throw",
 | ||||||
|     async version => { | //     async version => {
 | ||||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | //       const dotnetVersionResolver = new installer.DotnetVersionResolver(
 | ||||||
|         version | //         version
 | ||||||
|       ); | //       );
 | ||||||
| 
 | 
 | ||||||
|       await expect( | //       await expect(
 | ||||||
|         async () => await dotnetVersionResolver.createDotNetVersion() | //         async () => await dotnetVersionResolver.createDotNetVersion()
 | ||||||
|       ).rejects.toThrow(); | //       ).rejects.toThrow();
 | ||||||
|     } | //     }
 | ||||||
|   ); | //   );
 | ||||||
| 
 | 
 | ||||||
|   each(['3.1', '3.1.x', '3.1.*', '3.1.X', '5.0.1xx']).test( | //   each(['3.1', '3.1.x', '3.1.*', '3.1.X', '5.0.1xx']).test(
 | ||||||
|     "if version: '%s' that can be resolved to 'channel' option is supplied, it should set type to 'channel' in version object", | //     "if version: '%s' that can be resolved to 'channel' option is supplied, it should set type to 'channel' in version object",
 | ||||||
|     async version => { | //     async version => {
 | ||||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | //       const dotnetVersionResolver = new installer.DotnetVersionResolver(
 | ||||||
|         version | //         version
 | ||||||
|       ); | //       );
 | ||||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | //       const versionObject = await dotnetVersionResolver.createDotNetVersion();
 | ||||||
| 
 | 
 | ||||||
|       expect(versionObject.type.toLowerCase().includes('channel')).toBe(true); | //       expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
 | ||||||
|     } | //     }
 | ||||||
|   ); | //   );
 | ||||||
| 
 | 
 | ||||||
|   each(['6.0', '6.0.x', '6.0.*', '6.0.X', '6.0.1xx']).test( | //   each(['6.0', '6.0.x', '6.0.*', '6.0.X', '6.0.1xx']).test(
 | ||||||
|     "if version: '%s' that can be resolved to 'channel' option is supplied and its major tag is >= 6, it should set type to 'channel' and qualityFlag to 'true' in version object", | //     "if version: '%s' that can be resolved to 'channel' option is supplied and its major tag is >= 6, it should set type to 'channel' and qualityFlag to 'true' in version object",
 | ||||||
|     async version => { | //     async version => {
 | ||||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | //       const dotnetVersionResolver = new installer.DotnetVersionResolver(
 | ||||||
|         version | //         version
 | ||||||
|       ); | //       );
 | ||||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | //       const versionObject = await dotnetVersionResolver.createDotNetVersion();
 | ||||||
| 
 | 
 | ||||||
|       expect(versionObject.type.toLowerCase().includes('channel')).toBe(true); | //       expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
 | ||||||
|       expect(versionObject.qualityFlag).toBe(true); | //       expect(versionObject.qualityFlag).toBe(true);
 | ||||||
|     } | //     }
 | ||||||
|   ); | //   );
 | ||||||
| 
 | 
 | ||||||
|   each(['3.1.2', '3.1.0-preview1']).test( | //   each(['3.1.2', '3.1.0-preview1']).test(
 | ||||||
|     "if version: '%s' that can be resolved to 'version' option is supplied, it should set quality flag to 'false' and type to 'version' in version object", | //     "if version: '%s' that can be resolved to 'version' option is supplied, it should set quality flag to 'false' and type to 'version' in version object",
 | ||||||
|     async version => { | //     async version => {
 | ||||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | //       const dotnetVersionResolver = new installer.DotnetVersionResolver(
 | ||||||
|         version | //         version
 | ||||||
|       ); | //       );
 | ||||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | //       const versionObject = await dotnetVersionResolver.createDotNetVersion();
 | ||||||
| 
 | 
 | ||||||
|       expect(versionObject.type.toLowerCase().includes('version')).toBe(true); | //       expect(versionObject.type.toLowerCase().includes('version')).toBe(true);
 | ||||||
|       expect(versionObject.qualityFlag).toBe(false); | //       expect(versionObject.qualityFlag).toBe(false);
 | ||||||
|     } | //     }
 | ||||||
|   ); | //   );
 | ||||||
| 
 | 
 | ||||||
|   each(['3.1.2', '3.1']).test( | //   each(['3.1.2', '3.1']).test(
 | ||||||
|     'it should create proper line arguments for powershell/bash installation scripts', | //     'it should create proper line arguments for powershell/bash installation scripts',
 | ||||||
|     async version => { | //     async version => {
 | ||||||
|       const dotnetVersionResolver = new installer.DotnetVersionResolver( | //       const dotnetVersionResolver = new installer.DotnetVersionResolver(
 | ||||||
|         version | //         version
 | ||||||
|       ); | //       );
 | ||||||
|       const versionObject = await dotnetVersionResolver.createDotNetVersion(); | //       const versionObject = await dotnetVersionResolver.createDotNetVersion();
 | ||||||
|       const windowsRegEx = new RegExp(/^-[VC]/); | //       const windowsRegEx = new RegExp(/^-[VC]/);
 | ||||||
|       const nonWindowsRegEx = new RegExp(/^--[vc]/); | //       const nonWindowsRegEx = new RegExp(/^--[vc]/);
 | ||||||
| 
 | 
 | ||||||
|       if (IS_WINDOWS) { | //       if (IS_WINDOWS) {
 | ||||||
|         expect(windowsRegEx.test(versionObject.type)).toBe(true); | //         expect(windowsRegEx.test(versionObject.type)).toBe(true);
 | ||||||
|         expect(nonWindowsRegEx.test(versionObject.type)).toBe(false); | //         expect(nonWindowsRegEx.test(versionObject.type)).toBe(false);
 | ||||||
|       } else { | //       } else {
 | ||||||
|         expect(nonWindowsRegEx.test(versionObject.type)).toBe(true); | //         expect(nonWindowsRegEx.test(versionObject.type)).toBe(true);
 | ||||||
|         expect(windowsRegEx.test(versionObject.type)).toBe(false); | //         expect(windowsRegEx.test(versionObject.type)).toBe(false);
 | ||||||
|       } | //       }
 | ||||||
|     } | //     }
 | ||||||
|   ); | //   );
 | ||||||
| }); | 
 | ||||||
|  | //   it('Should throw if supplied dotnet version is in A.B.Cxx syntax and the major tag is lower than 5', async () => {
 | ||||||
|  | //     const version = '3.1.1xx';
 | ||||||
|  | //     const dotnetVersionResolver = new installer.DotnetVersionResolver(version);
 | ||||||
|  | //     await expect(dotnetVersionResolver.createDotNetVersion()).rejects.toThrow(
 | ||||||
|  | //       `'dotnet-version' was supplied in invalid format: ${version}! The A.B.Cxx syntax is available since the .NET 5.0 release.`
 | ||||||
|  | //     );
 | ||||||
|  | //   }, 600000);
 | ||||||
|  | 
 | ||||||
|  | //   it('Should resolve version supplied as * to channel type and set value to LTS', async () => {
 | ||||||
|  | //     const version = '*';
 | ||||||
|  | //     const dotnetVersionResolver = new installer.DotnetVersionResolver(version);
 | ||||||
|  | //     const versionObject = await dotnetVersionResolver.createDotNetVersion();
 | ||||||
|  | //     expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
 | ||||||
|  | //     expect(versionObject.value).toBe('LTS');
 | ||||||
|  | //   }, 600000);
 | ||||||
|  | // });
 | ||||||
| 
 | 
 | ||||||
| function normalizeFileContents(contents: string): string { | function normalizeFileContents(contents: string): string { | ||||||
|   return contents |   return contents | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ branding: | |||||||
|   color: green |   color: green | ||||||
| inputs: | inputs: | ||||||
|   dotnet-version: |   dotnet-version: | ||||||
|     description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x' |     description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x, 3.1.4xx' | ||||||
|   dotnet-quality: |   dotnet-quality: | ||||||
|     description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.' |     description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.' | ||||||
|   global-json-file: |   global-json-file: | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -297,7 +297,7 @@ class DotnetVersionResolver { | |||||||
|                 this.resolvedArgument.value = yield this.getLatestByMajorTag(major); |                 this.resolvedArgument.value = yield this.getLatestByMajorTag(major); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 // If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will be set to "latest" by default.
 |                 // If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will default to "latest" by install-dotnet script.
 | ||||||
|                 this.resolvedArgument.value = 'LTS'; |                 this.resolvedArgument.value = 'LTS'; | ||||||
|             } |             } | ||||||
|             this.resolvedArgument.qualityFlag = |             this.resolvedArgument.qualityFlag = | ||||||
| @ -377,6 +377,7 @@ class DotnetCoreInstaller { | |||||||
|     } |     } | ||||||
|     installDotnet() { |     installDotnet() { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const listOfInstalledVersions = yield this.getListOfInstalledVersions(); | ||||||
|             const windowsDefaultOptions = [ |             const windowsDefaultOptions = [ | ||||||
|                 '-NoLogo', |                 '-NoLogo', | ||||||
|                 '-Sta', |                 '-Sta', | ||||||
| @ -433,17 +434,21 @@ class DotnetCoreInstaller { | |||||||
|             if (exitCode) { |             if (exitCode) { | ||||||
|                 throw new Error(`Failed to install dotnet, exit code: ${exitCode}. ${stderr}`); |                 throw new Error(`Failed to install dotnet, exit code: ${exitCode}. ${stderr}`); | ||||||
|             } |             } | ||||||
|             return this.outputDotnetVersion(dotnetVersion.value); |             return this.outputDotnetVersion(listOfInstalledVersions); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     outputDotnetVersion(version) { |     getListOfInstalledVersions() { | ||||||
|         return __awaiter(this, void 0, void 0, function* () { |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|             const installationPath = process.env['DOTNET_INSTALL_DIR']; |             const installationPath = process.env['DOTNET_INSTALL_DIR']; | ||||||
|             const versionsOnRunner = yield (0, promises_1.readdir)(path_1.default.join(installationPath.replace(/'/g, ''), 'sdk')); |             const versionsOnRunner = (yield (0, promises_1.readdir)(path_1.default.join(installationPath.replace(/'/g, ''), 'sdk'))).filter((el) => semver_1.default.valid(el)); | ||||||
|             const installedVersion = semver_1.default.maxSatisfying(versionsOnRunner, version, { |             return versionsOnRunner; | ||||||
|                 includePrerelease: true |  | ||||||
|         }); |         }); | ||||||
|             return installedVersion; |     } | ||||||
|  |     outputDotnetVersion(listOfInstalledVersions) { | ||||||
|  |         return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |             const updatedListOfInstalledVersions = yield this.getListOfInstalledVersions(); | ||||||
|  |             const installedVersion = updatedListOfInstalledVersions.filter((el) => !listOfInstalledVersions.includes(el)); | ||||||
|  |             return installedVersion[0]; | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -79,7 +79,7 @@ export class DotnetVersionResolver { | |||||||
|     } else if (this.isNumericTag(major)) { |     } else if (this.isNumericTag(major)) { | ||||||
|       this.resolvedArgument.value = await this.getLatestByMajorTag(major); |       this.resolvedArgument.value = await this.getLatestByMajorTag(major); | ||||||
|     } else { |     } else { | ||||||
|       // If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will be set to "latest" by default.
 |       // If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will default to "latest" by install-dotnet script.
 | ||||||
|       this.resolvedArgument.value = 'LTS'; |       this.resolvedArgument.value = 'LTS'; | ||||||
|     } |     } | ||||||
|     this.resolvedArgument.qualityFlag = |     this.resolvedArgument.qualityFlag = | ||||||
| @ -199,6 +199,7 @@ export class DotnetCoreInstaller { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public async installDotnet(): Promise<string> { |   public async installDotnet(): Promise<string> { | ||||||
|  |     const listOfInstalledVersions = await this.getListOfInstalledVersions(); | ||||||
|     const windowsDefaultOptions = [ |     const windowsDefaultOptions = [ | ||||||
|       '-NoLogo', |       '-NoLogo', | ||||||
|       '-Sta', |       '-Sta', | ||||||
| @ -268,20 +269,20 @@ export class DotnetCoreInstaller { | |||||||
|         `Failed to install dotnet, exit code: ${exitCode}. ${stderr}` |         `Failed to install dotnet, exit code: ${exitCode}. ${stderr}` | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
| 
 |     return await this.outputDotnetVersion(listOfInstalledVersions); | ||||||
|     return this.outputDotnetVersion(dotnetVersion.value); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private async outputDotnetVersion(version): Promise<string> { |   private async getListOfInstalledVersions(): Promise<string[]> { | ||||||
|     const installationPath = process.env['DOTNET_INSTALL_DIR']!; |     const installationPath = process.env['DOTNET_INSTALL_DIR']!; | ||||||
|     const versionsOnRunner: string[] = await readdir( |     const versionsOnRunner: string[] = (await readdir( | ||||||
|       path.join(installationPath.replace(/'/g, ''), 'sdk') |       path.join(installationPath.replace(/'/g, ''), 'sdk') | ||||||
|     ); |     )).filter((el) => semver.valid(el)); | ||||||
|  |     return versionsOnRunner; | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|     const installedVersion = semver.maxSatisfying(versionsOnRunner, version, { |   private async outputDotnetVersion(listOfInstalledVersions: string[]): Promise<string> { | ||||||
|       includePrerelease: true |     const updatedListOfInstalledVersions = await this.getListOfInstalledVersions(); | ||||||
|     })!; |     const installedVersion = updatedListOfInstalledVersions.filter((el) => !listOfInstalledVersions.includes(el)) | ||||||
| 
 |     return installedVersion[0]; | ||||||
|     return installedVersion; |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 IvanZosimov
						IvanZosimov