Skip to content

Commit 1c9eb7c

Browse files
gstraussjon-turney
authored andcommitted
Add work-vol option to target different setup volume
Volume on which to store setup executable and cygwin-packages/ Volume on which to install cygwin/ if install-dir param not specified Signed-off-by: Glenn Strauss <[email protected]>
1 parent d6a07e1 commit 1c9eb7c

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

Diff for: README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ Parameters
2222
| ------------------- | -------------------------------------------- | -----------
2323
| platform | x86_64 | Install the x86 or x86\_64 version of Cygwin.
2424
| packages | *none* | List of additional packages to install.
25-
| install-dir | C:\cygwin | Installation directory
25+
| install-dir | C:\cygwin | Installation directory (overrides work-vol)
2626
| site | http://mirrors.kernel.org/sourceware/cygwin/ | Mirror sites to install from, separated by whitespace
2727
| pubkeys | *none* | Absolute paths of extra public key files (RFC4880 format), separated by whitespace
2828
| check-sig | true | Whether to check the setup.ini signature
2929
| add-to-path | true | Whether to add Cygwin's `/bin` directory to the system `PATH`
3030
| allow-test-packages | false | Consider package versions marked test for installation
3131
| check-hash | true | Whether to check the hash of the downloaded Cygwin installer.
32+
| work-vol | C: | Volume on which to store setup and packages, and install Cygwin.
3233

3334
Line endings
3435
------------

Diff for: action.yml

+23-14
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ inputs:
1212
install-dir:
1313
# by default, install to C:\cygwin rather than the platform dependent
1414
# default to make everything simpler
15-
description: Installation directory
15+
description: Installation directory (overrides work-vol)
1616
required: false
17-
default: C:\cygwin
17+
default: ''
1818
check-sig:
1919
description: Should the setup.ini file signature be checked?
2020
required: false
@@ -37,6 +37,10 @@ inputs:
3737
description: Check the hash of the installer
3838
required: false
3939
default: 'true'
40+
work-vol:
41+
description: Volume on which to store setup and packages, and install Cygwin
42+
required: false
43+
default: 'C:'
4044

4145
runs:
4246
using: "composite"
@@ -51,9 +55,11 @@ runs:
5155
echo "unknown platform $platform"
5256
exit 1
5357
}
58+
$vol = '${{ inputs.work-vol }}'
59+
$setupExe = "$vol\setup.exe"
5460
$setupFileName = "setup-$platform.exe"
55-
Invoke-WebRequest "https://cygwin.com/$setupFileName" -OutFile C:\setup.exe
56-
if ((Get-Item -LiteralPath 'C:\setup.exe').Length -eq 0) {
61+
Invoke-WebRequest "https://cygwin.com/$setupFileName" -OutFile $setupExe
62+
if ((Get-Item -LiteralPath $setupExe).Length -eq 0) {
5763
throw "The downloaded setup has a zero length!"
5864
}
5965
@@ -69,7 +75,7 @@ runs:
6975
if ($expectedHash -eq '') {
7076
Write-Output -InputObject "::warning::Unable to find the hash for the file $setupFileName in https://cygwin.com/sha512.sum"
7177
} else {
72-
$actualHash = $(Get-FileHash -LiteralPath C:\setup.exe -Algorithm SHA512).Hash
78+
$actualHash = $(Get-FileHash -LiteralPath $setupExe -Algorithm SHA512).Hash
7379
if ($actualHash -ine $expectedHash) {
7480
throw "Invalid hash of the downloaded setup!`nExpected: $expectedHash`nActual : $actualHash"
7581
} else {
@@ -78,15 +84,20 @@ runs:
7884
}
7985
}
8086
87+
$installDir = "$vol\cygwin"
88+
if ('${{ inputs.install-dir }}' -ne '') {
89+
$installDir = '${{ inputs.install-dir }}'
90+
}
91+
8192
$packages = '${{ inputs.packages }}'
8293
$pkg_list = $packages.Split('', [System.StringSplitOptions]::RemoveEmptyEntries)
8394
$pkg_list = $pkg_list | % { $_.Trim() }
8495
$pkg_list = $pkg_list | % { $_.Trim(',') }
8596
8697
$args = @(
8798
'-qnO',
88-
'-l', 'C:\cygwin-packages',
89-
'-R', '${{ inputs.install-dir }}'
99+
'-l', "$vol\cygwin-packages",
100+
'-R', "$installDir"
90101
)
91102
92103
if ( '${{ inputs.allow-test-packages }}' -eq 'true' ) {
@@ -133,16 +144,14 @@ runs:
133144
134145
# because setup is a Windows GUI app, make it part of a pipeline to make
135146
# PowerShell wait for it to exit
136-
& C:\setup.exe $args | Out-Default
137-
shell: powershell
147+
& $setupExe $args | Out-Default
138148
139-
- if: ${{ inputs.add-to-path == 'true' }}
140-
run: echo "${{ inputs.install-dir }}\bin" >> $env:GITHUB_PATH
141-
shell: powershell
149+
if ('${{ inputs.add-to-path }}' -eq 'true') {
150+
echo "$installDir\bin" >> $env:GITHUB_PATH
151+
}
142152
143-
- run: |
144153
# run login shell to copy skeleton profile files
145-
${{ inputs.install-dir }}\bin\bash.exe --login
154+
& "$installDir\bin\bash.exe" --login
146155
shell: powershell
147156
148157
branding:

0 commit comments

Comments
 (0)