Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dont use curl by default on Windows bootstrap scripts #1076

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

dfordivam
Copy link
Contributor

Fixes #1000

# Whether to disable use of curl.exe
[switch]$DisableCurl,
# Whether to use curl.exe (default: false)
[switch]$UseCurl,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't easily switch the meaning of flags here, because we have to assume someone is using this script in CI or elsewhere and it would be a breaking change.

E.g. Github's own image provisioning used to use the powershell script.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I considered that, but the documentation suggested otherwise

we can ignore the suggestion and keep the $DisableCurl flag as it is, and change its value by either

  • prompting the user (in interactive mode)
  • always make it true ( if the user has not explicitly specified its value)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps even "always make it true " would be a breaking change in certain cases. Therefore "prompting the user" seems to be the only good option

Copy link
Member

@hasufell hasufell Jun 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I mean is that these can be used as positional parameters.

Changing the meaning of a flag at a certain position breaks scripts that execute the powershell script with a positional argument list.

E.g. see

Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }

The ArgumentList part.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I understood that. So my idea is to keep the $DisableCurl flag as it is.

But if we want to disable curl by default, we have two choices

  1. we can check if the flag has been specified; by checking this, and if user has not specified the param as either true or false, then we can make it true.

  2. In the interactive mode we can prompt the user if they would like to enable curl or not.
    The default choice will be "DisableCurl = true".

    The behaviour of this script in non-interactive mode would remain same (ie DisableCurl will be false)

I think 2nd option is better.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should add another prompt. The only thing that needs changing is the GHCup website to include true for the positional parameter that disables curl.

<span class="ghcup-command" id="ghcup-command-windows">Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Use curl-free version by default on windows?
2 participants