2023-12-07 16:57:31 +00:00
|
|
|
package cli
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2023-12-07 21:31:37 +00:00
|
|
|
"time"
|
2023-12-07 16:57:31 +00:00
|
|
|
|
2023-12-16 11:59:58 +00:00
|
|
|
resolver "github.com/satisfactorymodding/ficsit-resolver"
|
|
|
|
|
2023-12-07 16:57:31 +00:00
|
|
|
"github.com/satisfactorymodding/ficsit-cli/cli/provider"
|
|
|
|
"github.com/satisfactorymodding/ficsit-cli/ficsit"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ provider.Provider = (*MockProvider)(nil)
|
|
|
|
|
2023-12-16 11:59:58 +00:00
|
|
|
type MockProvider struct {
|
|
|
|
resolver.MockProvider
|
|
|
|
}
|
2023-12-07 16:57:31 +00:00
|
|
|
|
2023-12-07 21:31:37 +00:00
|
|
|
func (m MockProvider) Mods(_ context.Context, f ficsit.ModFilter) (*ficsit.ModsResponse, error) {
|
|
|
|
if f.Offset > 0 {
|
|
|
|
return &ficsit.ModsResponse{
|
|
|
|
Mods: ficsit.ModsModsGetMods{
|
|
|
|
Count: 5,
|
|
|
|
Mods: []ficsit.ModsModsGetModsModsMod{},
|
|
|
|
},
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return &ficsit.ModsResponse{
|
|
|
|
Mods: ficsit.ModsModsGetMods{
|
|
|
|
Count: 5,
|
|
|
|
Mods: []ficsit.ModsModsGetModsModsMod{
|
|
|
|
{
|
|
|
|
Id: "9LguyCdDUrpT9N",
|
|
|
|
Name: "Ficsit Remote Monitoring",
|
|
|
|
Mod_reference: "FicsitRemoteMonitoring",
|
|
|
|
Last_version_date: time.Now(),
|
|
|
|
Created_at: time.Now(),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Id: "DGiLzB3ZErWu2V",
|
|
|
|
Name: "Refined Power",
|
|
|
|
Mod_reference: "RefinedPower",
|
|
|
|
Last_version_date: time.Now(),
|
|
|
|
Created_at: time.Now(),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Id: "B24emzbs6xVZQr",
|
|
|
|
Name: "RefinedRDLib",
|
|
|
|
Mod_reference: "RefinedRDLib",
|
|
|
|
Last_version_date: time.Now(),
|
|
|
|
Created_at: time.Now(),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Id: "6vQ6ckVYFiidDh",
|
|
|
|
Name: "Area Actions",
|
|
|
|
Mod_reference: "AreaActions",
|
|
|
|
Last_version_date: time.Now(),
|
|
|
|
Created_at: time.Now(),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Id: "As2uJmQLLxjXLG",
|
|
|
|
Name: "ModularUI",
|
|
|
|
Mod_reference: "ModularUI",
|
|
|
|
Last_version_date: time.Now(),
|
|
|
|
Created_at: time.Now(),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}, nil
|
2023-12-07 16:57:31 +00:00
|
|
|
}
|
|
|
|
|
2024-10-04 17:23:51 +00:00
|
|
|
var windowsTarget = resolver.Target{
|
|
|
|
TargetName: "Windows",
|
|
|
|
Link: "https://api.ficsit.dev/v1/version/7QcfNdo5QAAyoC/Windows/download",
|
|
|
|
Hash: "698df20278b3de3ec30405569a22050c6721cc682389312258c14948bd8f38ae",
|
|
|
|
}
|
|
|
|
|
|
|
|
var windowsServerTarget = resolver.Target{
|
|
|
|
TargetName: "WindowsServer",
|
|
|
|
Link: "https://api.ficsit.dev/v1/version/7QcfNdo5QAAyoC/WindowsServer/download",
|
|
|
|
Hash: "7be01ed372e0cf3287a04f5cb32bb9dcf6f6e7a5b7603b7e43669ec4c6c1457f",
|
|
|
|
}
|
|
|
|
|
|
|
|
var linuxServerTarget = resolver.Target{
|
|
|
|
TargetName: "LinuxServer",
|
|
|
|
Link: "https://api.ficsit.dev/v1/version/7QcfNdo5QAAyoC/LinuxServer/download",
|
|
|
|
Hash: "bdbd4cb1b472a5316621939ae2fe270fd0e3c0f0a75666a9cbe74ff1313c3663",
|
|
|
|
}
|
|
|
|
|
2023-12-16 11:59:58 +00:00
|
|
|
var commonTargets = []resolver.Target{
|
2024-10-04 17:23:51 +00:00
|
|
|
windowsTarget,
|
|
|
|
windowsServerTarget,
|
|
|
|
linuxServerTarget,
|
2023-12-07 16:57:31 +00:00
|
|
|
}
|
|
|
|
|
2023-12-16 11:59:58 +00:00
|
|
|
func (m MockProvider) ModVersionsWithDependencies(ctx context.Context, modID string) ([]resolver.ModVersion, error) {
|
2023-12-07 16:57:31 +00:00
|
|
|
switch modID {
|
|
|
|
case "AreaActions":
|
2023-12-16 11:59:58 +00:00
|
|
|
return []resolver.ModVersion{
|
|
|
|
{
|
|
|
|
Version: "1.6.7",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.4.1",
|
|
|
|
Optional: false,
|
|
|
|
},
|
|
|
|
},
|
2024-10-04 17:23:51 +00:00
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
2023-12-16 11:59:58 +00:00
|
|
|
{
|
|
|
|
Version: "1.6.6",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.2.0",
|
|
|
|
Optional: false,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
|
|
|
},
|
2024-10-04 17:23:51 +00:00
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
2023-12-16 11:59:58 +00:00
|
|
|
{
|
|
|
|
Version: "1.6.5",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.0.0",
|
|
|
|
Optional: false,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
|
|
|
},
|
2024-10-04 17:23:51 +00:00
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
2023-12-13 23:34:01 +00:00
|
|
|
},
|
|
|
|
}, nil
|
2023-12-07 16:57:31 +00:00
|
|
|
case "FicsitRemoteMonitoring":
|
2023-12-16 11:59:58 +00:00
|
|
|
return []resolver.ModVersion{
|
|
|
|
{
|
|
|
|
Version: "0.10.1",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.6.0",
|
|
|
|
Optional: false,
|
|
|
|
},
|
|
|
|
},
|
2024-10-04 17:23:51 +00:00
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
2023-12-16 11:59:58 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Version: "0.10.0",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.5.0",
|
|
|
|
Optional: false,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
2023-12-13 23:34:01 +00:00
|
|
|
},
|
2024-10-04 17:23:51 +00:00
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
2023-12-16 11:59:58 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Version: "0.9.8",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.4.1",
|
|
|
|
Optional: false,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
|
|
|
},
|
2024-10-04 17:23:51 +00:00
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
|
|
|
},
|
|
|
|
}, nil
|
|
|
|
case "ClientOnlyMod":
|
|
|
|
return []resolver.ModVersion{
|
|
|
|
{
|
|
|
|
Version: "0.0.1",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.6.0",
|
|
|
|
Optional: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Targets: []resolver.Target{
|
|
|
|
windowsTarget,
|
|
|
|
},
|
|
|
|
RequiredOnRemote: false,
|
|
|
|
},
|
|
|
|
}, nil
|
|
|
|
case "ServerOnlyMod":
|
|
|
|
return []resolver.ModVersion{
|
|
|
|
{
|
|
|
|
Version: "0.0.1",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.6.0",
|
|
|
|
Optional: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Targets: []resolver.Target{
|
|
|
|
windowsServerTarget,
|
|
|
|
linuxServerTarget,
|
|
|
|
},
|
|
|
|
RequiredOnRemote: false,
|
|
|
|
},
|
|
|
|
}, nil
|
|
|
|
case "LaterClientOnlyMod":
|
|
|
|
return []resolver.ModVersion{
|
|
|
|
{
|
|
|
|
Version: "0.0.1",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.6.0",
|
|
|
|
Optional: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Targets: commonTargets,
|
|
|
|
RequiredOnRemote: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Version: "0.0.2",
|
|
|
|
Dependencies: []resolver.Dependency{
|
|
|
|
{
|
|
|
|
ModID: "SML",
|
|
|
|
Condition: "^3.6.0",
|
|
|
|
Optional: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Targets: []resolver.Target{
|
|
|
|
windowsTarget,
|
|
|
|
},
|
|
|
|
RequiredOnRemote: false,
|
2023-12-07 16:57:31 +00:00
|
|
|
},
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
2023-12-16 11:59:58 +00:00
|
|
|
return m.MockProvider.ModVersionsWithDependencies(ctx, modID) // nolint
|
2023-12-07 16:57:31 +00:00
|
|
|
}
|
|
|
|
|
2023-12-16 11:59:58 +00:00
|
|
|
func (m MockProvider) GetMod(_ context.Context, _ string) (*ficsit.GetModResponse, error) {
|
|
|
|
// Currently used only by TUI
|
|
|
|
return nil, nil
|
2023-12-07 16:57:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m MockProvider) IsOffline() bool {
|
|
|
|
return false
|
|
|
|
}
|