fix autorun requiring a filter

now it will select the first in the list of products

fixes #173
This commit is contained in:
Chris
2025-07-16 17:11:17 -06:00
parent e217080de6
commit 2fcc8c4ec8
4 changed files with 30 additions and 18 deletions

View File

@ -1,5 +1,11 @@
# Changelog # Changelog
## [unreleased]
### Bug Fixes
- Fix `/autorun` requiring a filter (`/edo`, `/edh`, etc...). `/autorun` without a filter will launch the first
product in your _Available Products_ list. ([#173])
## [0.12.1] - 2025-06-16 ## [0.12.1] - 2025-06-16
### Security ### Security
@ -432,4 +438,5 @@ Initial release
[#156]: https://github.com/rfvgyhn/min-ed-launcher/issues/156 [#156]: https://github.com/rfvgyhn/min-ed-launcher/issues/156
[#157]: https://github.com/rfvgyhn/min-ed-launcher/issues/157 [#157]: https://github.com/rfvgyhn/min-ed-launcher/issues/157
[#161]: https://github.com/rfvgyhn/min-ed-launcher/issues/161 [#161]: https://github.com/rfvgyhn/min-ed-launcher/issues/161
[#163]: https://github.com/rfvgyhn/min-ed-launcher/issues/163 [#163]: https://github.com/rfvgyhn/min-ed-launcher/issues/163
[#173]: https://github.com/rfvgyhn/min-ed-launcher/issues/173

View File

@ -84,14 +84,14 @@ Frontier's website. Linking is only required if you purchased the game via Steam
1. Right click _Elite Dangerous_ in your Steam library 1. Right click _Elite Dangerous_ in your Steam library
2. Select _properties_ 2. Select _properties_
3. In the _general_ tab, click _Set Launch Options_ 3. In the _general_ tab, click _Set Launch Options_
4. **Windows users** - Set the value to `cmd /c "MinEdLauncher.exe %command% /autorun /autoquit /edo"` 4. **Windows users** - Set the value to `cmd /c "MinEdLauncher.exe %command% /autorun /autoquit"`
**Linux users** - The command will depend on which terminal emulator you use. Examples for **Linux users** - The command will depend on which terminal emulator you use. Examples for
[alacritty], [gnome-terminal] and [konsole] are below. [alacritty], [gnome-terminal] and [konsole] are below.
`alacritty -e ./MinEdLauncher %command% /autorun /autoquit /edo` `alacritty -e ./MinEdLauncher %command% /autorun /autoquit`
`gnome-terminal -- ./MinEdLauncher %command% /autorun /autoquit /edo` `gnome-terminal -- ./MinEdLauncher %command% /autorun /autoquit`
`konsole -e ./MinEdLauncher %command% /autorun /autoquit /edo` `konsole -e ./MinEdLauncher %command% /autorun /autoquit`
**Steam Deck users** - See [wiki](https://github.com/rfvgyhn/min-ed-launcher/wiki/Steam-Deck-Usage) for special instructions **Steam Deck users** - See [wiki](https://github.com/rfvgyhn/min-ed-launcher/wiki/Steam-Deck-Usage) for special instructions
5. Launch your game as you normally would in Steam 5. Launch your game as you normally would in Steam
@ -115,13 +115,13 @@ Either configure the Epic client and use the provided Bootstrap exe or use [lege
1. Click _Settings_ in the Epic Games Launcher 1. Click _Settings_ in the Epic Games Launcher
2. Scroll down to the _Manage Games_ section and click _Elite Dangerous_ 2. Scroll down to the _Manage Games_ section and click _Elite Dangerous_
3. Check _Additional Command Line Arguments_ 3. Check _Additional Command Line Arguments_
4. Set the value to `/autorun /autoquit /edo` 4. Set the value to `/autorun /autoquit`
4. Launch your game as you normally would in Epic 4. Launch your game as you normally would in Epic
* Legendary * Legendary
Use legendary's `override-exe` argument via windows terminal Use legendary's `override-exe` argument via windows terminal
`legendary.exe launch 9c203b6ed35846e8a4a9ff1e314f6593 --override-exe MinEdLauncher.exe /autorun /edo /autoquit` `legendary.exe launch 9c203b6ed35846e8a4a9ff1e314f6593 --override-exe MinEdLauncher.exe /autorun /autoquit`
##### Linux ##### Linux
This method utilizes [Legendary]. This method utilizes [Legendary].
@ -130,7 +130,7 @@ This method utilizes [Legendary].
2. Pass an exchange code to the launcher by either 2. Pass an exchange code to the launcher by either
1. Using the `--dry-run` flag and passing the arguments directly to `MinEdLauncher` via command substitution 1. Using the `--dry-run` flag and passing the arguments directly to `MinEdLauncher` via command substitution
```sh ```sh
WINEPREFIX=/your/wine/prefix /path/to/MinEdLauncher $(legendary launch --dry-run 9c203b6ed35846e8a4a9ff1e314f6593 2>&1 | grep "Launch parameters" | cut -d':' -f 3-) /autorun /edo /autoquit WINEPREFIX=/your/wine/prefix /path/to/MinEdLauncher $(legendary launch --dry-run 9c203b6ed35846e8a4a9ff1e314f6593 2>&1 | grep "Launch parameters" | cut -d':' -f 3-) /autorun /autoquit
``` ```
2. Using the `get-token` command and passing it to `MinEdLauncher` via Steam and command substitution 2. Using the `get-token` command and passing it to `MinEdLauncher` via Steam and command substitution
```shell ```shell
@ -144,7 +144,7 @@ This method utilizes [Legendary].
`MinEdLauncher.Bootstrap` is for Epic only and may be ignored. `MinEdLauncher.Bootstrap` is for Epic only and may be ignored.
4. Create a shortcut to `MinEdLauncher.exe` by right-clicking it and selecting _create shortcut_ 4. Create a shortcut to `MinEdLauncher.exe` by right-clicking it and selecting _create shortcut_
5. Right-click the newly made shortcut and select _properties_ 5. Right-click the newly made shortcut and select _properties_
6. Add the `/frontier profile-name` argument + your other desired arguments to the end of the _Target_ textbox (e.g. `C:\path\to\MinEdLauncher.exe /frontier profile-name /autorun /autoquit /edo`) 6. Add the `/frontier profile-name` argument + your other desired arguments to the end of the _Target_ textbox (e.g. `C:\path\to\MinEdLauncher.exe /frontier profile-name /autorun /autoquit`)
7. Click _Ok_ 7. Click _Ok_
You can place this shortcut anywhere. It doesn't have to live in the Elite Dangerous install folder. You can place this shortcut anywhere. It doesn't have to live in the Elite Dangerous install folder.
@ -276,9 +276,9 @@ double backslash (`\\`) instead of a single backslash (`\`).
By using the `/frontier profile-name` argument, you can login with any number of Frontier accounts with a By using the `/frontier profile-name` argument, you can login with any number of Frontier accounts with a
single game installation. Your launch command might look like the following single game installation. Your launch command might look like the following
Windows: `cmd /c "MinEdLauncher.exe %command% /frontier profile-name /autorun /autoquit /edo"` Windows: `cmd /c "MinEdLauncher.exe %command% /frontier profile-name /autorun /autoquit"`
Linux: `alacritty -e ./MinEdLauncher %command% /frontier profile-name /autorun /autoquit /edo` Linux: `alacritty -e ./MinEdLauncher %command% /frontier profile-name /autorun /autoquit`
See the [setup] section above for how you might run this on your platform. See the [setup] section above for how you might run this on your platform.
@ -301,7 +301,7 @@ In order to authenticate with an Epic account:
``` ```
* **Manually** - Within the Epic launcher, click your username and select manage account. This will open a browser. The URL will contain an `exchangeCode=code` * **Manually** - Within the Epic launcher, click your username and select manage account. This will open a browser. The URL will contain an `exchangeCode=code`
parameter. Copy the code before the page is redirected (can just hit the stop button in your browser). parameter. Copy the code before the page is redirected (can just hit the stop button in your browser).
2. Add the `-auth_password=code` argument to your launch options. `cmd /c "MinEdLauncher.exe %command% /autoquit /edo -auth_password=code"` 2. Add the `-auth_password=code` argument to your launch options. `cmd /c "MinEdLauncher.exe %command% /autoquit -auth_password=code"`
You can also create a separate shortcut. Right click game in your Steam library and create desktop shortcut. Edit the properties of the shortcut You can also create a separate shortcut. Right click game in your Steam library and create desktop shortcut. Edit the properties of the shortcut
to include the `-auth_password=code` argument. `"C:\Program Files (x86)\Steam\Steam.exe" -gameidlaunch 359320 -auth_password=code`. Then just to include the `-auth_password=code` argument. `"C:\Program Files (x86)\Steam\Steam.exe" -gameidlaunch 359320 -auth_password=code`. Then just
@ -327,8 +327,8 @@ Example _Target_ field for a shortcut that launches Odyssey:
desktop file. e.g. `update-desktop-database ~/.local/share/applications/` desktop file. e.g. `update-desktop-database ~/.local/share/applications/`
3. Set the WM_CLASS/Application Id property in your launch options. How you do this will depend on your terminal 3. Set the WM_CLASS/Application Id property in your launch options. How you do this will depend on your terminal
emulator. Examples are below: emulator. Examples are below:
* Alacritty - `alacritty --class min-ed-launcher -e ./MinEdLauncher %command% /autorun /autoquit /edo` * Alacritty - `alacritty --class min-ed-launcher -e ./MinEdLauncher %command% /autorun /autoquit`
* kitty - `kitty --class min-ed-launcher ./MinEdLauncher %command% /autorun /autoquit /edo` * kitty - `kitty --class min-ed-launcher ./MinEdLauncher %command% /autorun /autoquit`
### Troubleshooting ### Troubleshooting
Debug logging is placed in the standard log location for your operating system: Debug logging is placed in the standard log location for your operating system:

View File

@ -183,7 +183,7 @@ let filterByUpdateRequired (products: Product list) =
let selectProduct (whitelist: OrdinalIgnoreCaseSet) (products: ProductDetails[]) = let selectProduct (whitelist: OrdinalIgnoreCaseSet) (products: ProductDetails[]) =
if whitelist.IsEmpty then if whitelist.IsEmpty then
None products |> Array.tryHead
else else
products products
|> Array.filter (fun p -> p.Filters |> OrdinalIgnoreCaseSet.intersect whitelist |> OrdinalIgnoreCaseSet.any) |> Array.filter (fun p -> p.Filters |> OrdinalIgnoreCaseSet.intersect whitelist |> OrdinalIgnoreCaseSet.any)

View File

@ -421,11 +421,16 @@ open MinEdLauncher.Tests.Extensions
Expect.equal result[1] p2 "" Expect.equal result[1] p2 ""
} ] } ]
testList "selectProduct" [ testList "selectProduct" [
testTask "Selects none when whitelist is empty" { testTask "Selects head when whitelist is empty" {
let products = [| product |] let products = [|
{ product with Filters = [| "filter" |] |> OrdinalIgnoreCaseSet.ofSeq; Sku = "p1" }
{ product with Filters = [| "filter" |] |> OrdinalIgnoreCaseSet.ofSeq; Sku = "p2" }
|]
let expected = products |> Array.head |> Some
let actual = Product.selectProduct OrdinalIgnoreCaseSet.empty products let actual = Product.selectProduct OrdinalIgnoreCaseSet.empty products
Expect.isNone actual "" Expect.equal actual expected ""
} }
testTask "Selects none when filters is empty" { testTask "Selects none when filters is empty" {
let products = [| let products = [|