Jump to content

[AnyOS] Kerbal Module Check - Check for install issues or updates. [Early Alpha]


Recommended Posts

This is really early alpha, but it's already found an issue for me, so I thought it might be useful to others...

https://github.com/DanStaal/KerbalModuleCheck/tree/master

The goal of this project is a stand-alone .version file update checker and basic install sanity checker - A program that you can run to find common errors in mod installs, and can help you keep things up to date without launching KSP.  The intent is to piggyback on AVC's version files for updates, and to rely on the users for install and info.  Currently I'm working in Perl, as it's my normal preferred language (and is cross-platform), and starting on the command line.  I'm open to changing that in the future if it makes sense, but I'd have to have something that works for me.  (That is: Under OS X 10.7.5.  :wink: )

Inspiration is primarily from trying to keep track of what I need to do with the recent update to KSP, but I'll admit the recent kerfluffle about CKAN gave me a push to start writing as well.  CKAN however is a slightly different beast: It aims to be a way to find and install mods.  There is no intent for this program to ever be a way to acquire mods - though I may aim to help install them eventually, once the user has acquired them.  Also, CKAN won't run on my machine, so it can't help me keep things up to date.  :wink:

Currently the only requirements are a basic install of perl, and a knowledge of how to use the command line.  I'll probably be adding non-stock Perl modules shortly, but then I'll probably actually package it correctly and even write some docs as well.  At the moment, you'll need some basic understanding of code to figure out the options (I suggest running with '--errors').  However basic operation is: Download, feed the script to whatever version of perl you have available, and feed the script the path to your GameData folder.  It'll spit stuff out to STDOUT.  (So: 'perl module_check.pl /path/to/GameData')

Current features:

  • Find nested GameData folders
  • Find ModuleManager installs (will flag multiple installs)
  • List all .version files
  • List all top-level GameData folders that do not contain a .version file.  (A quick-and-dirty version of 'all mods without a version file'.)

'Squad', 'PluginData', and any invisible (by UNIX convention) folders are skipped, and excepted from all the above checks.

Planned features:

  • .version file update checking
  • Automatic downloads of outdated mods from Spacedock or Github, if the .version file points there.  (I'm not sure I can do it from Curse, but if I can from there as well.)

Wishlist features:

  • Automatic install/upgrade of mod from downloaded zip file (with mod author support)
  • GUI

If people have ideas for other common errors in installs that I can check for, I'm open to listening - however I don't want to have lots and lots of checks for different mods' issues.  Try to keep them to general issues that are common among lots of mods.  (I'm open to special casing issues if the mod is important enough however - ModuleManager being the main case in point, as it's nearly essential for any modded install.)

As it's a Perl script, I'm going with the Perl-standard Artistic License v2.

Link to comment
Share on other sites

Still haven't gotten into parsing and downloading .version files, but I have a couple of nifty features added today:

First off, it can create a list of all top-level folders, including which have a .version file in them.  Secondly, it can list all top-level directories with the last modified date of the most recently modified file in them - oldest to newest.  (So the mods that have been updated recently are at the bottom, and the ones that haven't are at the top.)

It's currently throwing an error I need to track down - though I have suspicions.  It's harmless.

And for those who want to see what it's capable of, here's some sample output (my current GameData, with all options turned on):

Spoiler


Count of GameData folders (should be 1): 2

GameData folders found at:
==========================
/Applications/Games/Kerbal Space Program/GameData
/Applications/Games/Kerbal Space Program/GameData/DStaal/GameData

Module Manager found at:
========================
/Applications/Games/Kerbal Space Program/GameData/ModuleManager.2.6.25.dll
/Applications/Games/Kerbal Space Program/GameData/NEBULA/ModuleManager.2.6.5.dll

List of version files:
======================
ABCORS.version
ART.version
AutoAsparagus.version
B9PartSwitch.version
Buffalo.version
CFC.version
CRP.version
CTS.version
CivilianPopulation.version
ConnectedLivingSpace.version
ContractConfigurator.version
ContractPack-AnomalySurveyor.version
ContractPack-FieldResearch.version
ContractPack-Tourism.version
DMagicOrbitalScience.version
DSEV.version
DeepFreezeContinued.version
DockingPortAlignmentIndicator.version
EL.version
EVAHandrailsPackContinued.version
EasyVesselSwitch.version
EditorExtensionsRedux.version
EngineLight.version
ExpPack.version
FTT.version
FilterExtensions.version
FinalFrontier.version
Firespitter.version
HeatControl.version
Historian.version
IONRCS.version
InfernalRobotics.version
InterstellarFuelSwitch.version
JSIAdvTransparentPods.version
KAS.version
KIS.version
KPlus.version
KSP-AVC.version
KSPAlternateResourcePanel.version
Karbonite.version
Karibou.version
KerbalAcademy.version
KerbalAlarmClock.version
KerbalEngineer.version
KerbalJointReinforcement.version
KeridianDynamicsVesselAssembly.version
Kolonization.version
Konstruction.version
LBSI.version
LETech.version
MFS.version
MOLE.version
Malemute.version
ModularFlightIntegrator.version
ModularRocketSystems.version
NearFutureConstruction.version
NearFuturePropulsion.version
NearFutureSolar.version
NearFutureSpacecraft.version
OPTSpaceplaneParts.version
ORIGAMIAntennas.version
Orion.version
OuterPlanetsMod.version
PWings.version
Pathfinder.version
PlanetShine.version
PlanetaryBaseInc.version
PreciseNode.version
ProceduralParts.version
QuickBrake.version
QuickCursorHider.version
RCSBuildAid.version
RosterManager.version
S.A.V.E.version
SCANsat.version
STB.version
ShipManifest.version
Sigma-Binary.version
SoundingRockets.version
SoundingRockets.version
SpaceY-Expanded.version
SpaceY-Lifters.version
SrvPack.version
StationPartsExpansion.version
Stork.version
SubPack.version
SurfaceLights.version
TacFuelBalancer.version
TakeCommand.version
TarsierSpaceTechnology.version
ThrottleControlledAvionics.version
Toolbar.version
Trajectories.version
TransferWindowPlanner.version
UKS.version
USI-LS.version
USICore.version
USITools.version
WaterSounds.version
WaypointManager.version
WildBlueTools.version
Workshop.version
[x] Science!.version
totaltime.version

List of directories without version files:
===========================================
000_FilterExtensions Configs
ASET
AetherSpace
AllYAll
AntennaRange
Aquila Aerospace
AssemblyFuelUtility
AtomicAge
AutoRove
BZ-1
BahaEPL
BahaSP
BetterBurnTime
BetterCrewAssignment
Bloody_looser
BlueTech
CTTP
Champagne
ChopShop
Coatl Aerospace
CommunityTechTree
CorrectCoL
CxAerospace
DMagicScienceAnimate
DStaal
DStaal_Planetary_Base_UKS_Addons
DecoupleFromHeatshield
DefaultActionGroups
Diazo
EasyBoard
EveBiomesPlus
EveEngines
ExceptionDetector
FShangarExtender
Felbourn
FieldExperience
FlexoTube
Fusebox
GravityTurn
HLAirships
HabTech
HangarGrid
HeatManagement
IndicatorLights
JoolBiomes
KASA
KKP
KRnD
KSPCalendar
KSPRanks
KSPTOTConnect
Kalculator
KerBalloons
KerbalHacks
KipEng
Kopernicus
LLL
LLL-Extra
Landertron
LaunchNumbering
LegoFlagsV4
MBI
MP_Nazari
MechJeb2
MechJeb2 Embedded by Dennis6492
MiningExpansion
Mk1CargoBay
Mk2Expansion
Mk3HypersonicSystems
Mkerb
NSS
NearFutureProps
NodeSplitter
OrbitalTug
PanarchistSpaceAlliance
PhantomAerospace
PortraitStats
ProceduralFairings
ProceduralFairingsRetext
RLA_Stockalike
RSCapsuledyne
RaptorAerospacial
SDHI
SM_Chute
SPD
SPS
SSTU-TextureSets
STMRibbons
SXMk2
SXT
SaveConfirmationSound
ScienceAlert
SensibleScreenshot
StationScience
StockBugFixPlus
SurfaceExperimentPackage
T.G.O.L group
TRP-Hire
ToadicusTools
UKS-KPBS_Compatibility-0.1.3
UberDyneAstronautics
UniversalStorage
Version_2.0 Industries
imkSushi
kerbodynePlus
notes

List of folders in GameData, and whether they hold .version files:
================================================================
Versioned: 000_FilterExtensions
Not versioned: 000_FilterExtensions Configs
Versioned: 000_Toolbar
Versioned: 000_USITools
Versioned: ABCORS
Not versioned: ASET
Not versioned: AetherSpace
Not versioned: AllYAll
Not versioned: AntennaRange
Not versioned: Aquila Aerospace
Not versioned: AssemblyFuelUtility
Not versioned: AtomicAge
Versioned: AutoAsparagus
Not versioned: AutoRove
Versioned: B9PartSwitch
Not versioned: BZ-1
Not versioned: BahaEPL
Not versioned: BahaSP
Not versioned: BetterBurnTime
Not versioned: BetterCrewAssignment
Not versioned: Bloody_looser
Not versioned: BlueTech
Not versioned: CTTP
Versioned: CameraFocusChanger
Not versioned: Champagne
Not versioned: ChopShop
Not versioned: Coatl Aerospace
Versioned: CommunityResourcePack
Not versioned: CommunityTechTree
Versioned: ConnectedLivingSpace
Versioned: ContractConfigurator
Versioned: ContractPacks
Not versioned: CorrectCoL
Not versioned: CxAerospace
Versioned: DMagicOrbitalScience
Not versioned: DMagicScienceAnimate
Not versioned: DStaal
Not versioned: DStaal_Planetary_Base_UKS_Addons
Not versioned: DecoupleFromHeatshield
Not versioned: DefaultActionGroups
Not versioned: Diazo
Not versioned: EasyBoard
Versioned: EasyVesselSwitch
Versioned: EditorExtensionsRedux
Versioned: EngineLight
Not versioned: EveBiomesPlus
Not versioned: EveEngines
Not versioned: ExceptionDetector
Versioned: ExtraplanetaryLaunchpads
Not versioned: FShangarExtender
Versioned: FarFromKerbin
Not versioned: Felbourn
Not versioned: FieldExperience
Versioned: Firespitter
Not versioned: FlexoTube
Not versioned: Fusebox
Not versioned: GravityTurn
Not versioned: HLAirships
Not versioned: HabTech
Not versioned: HangarGrid
Versioned: HeatControl
Not versioned: HeatManagement
Not versioned: IndicatorLights
Versioned: InterstellarFuelSwitch
Versioned: JSI
Not versioned: JoolBiomes
Versioned: KAS
Not versioned: KASA
Versioned: KIS
Not versioned: KKP
Not versioned: KRnD
Versioned: KSEA
Versioned: KSP-AVC
Not versioned: KSPCalendar
Not versioned: KSPRanks
Not versioned: KSPTOTConnect
Not versioned: Kalculator
Not versioned: KerBalloons
Versioned: KerbalEngineer
Not versioned: KerbalHacks
Versioned: KerbalJointReinforcement
Versioned: KeridianDynamics
Versioned: KermangeddonIndustries
Not versioned: KipEng
Not versioned: Kopernicus
Versioned: LBSI
Versioned: LETech
Not versioned: LLL
Not versioned: LLL-Extra
Not versioned: Landertron
Not versioned: LaunchNumbering
Not versioned: LegoFlagsV4
Not versioned: MBI
Not versioned: MP_Nazari
Versioned: MagicSmokeIndustries
Not versioned: MechJeb2
Not versioned: MechJeb2 Embedded by Dennis6492
Not versioned: MiningExpansion
Not versioned: Mk1CargoBay
Not versioned: Mk2Expansion
Not versioned: Mk3HypersonicSystems
Not versioned: Mkerb
Versioned: ModRocketSys
Versioned: ModularFlightIntegrator
Versioned: NAU
Versioned: NEBULA
Not versioned: NSS
Versioned: NavyFish
Versioned: NearFutureConstruction
Not versioned: NearFutureProps
Versioned: NearFuturePropulsion
Versioned: NearFutureSolar
Versioned: NearFutureSpacecraft
Versioned: Nereid
Versioned: NetherdyneAerospace
Not versioned: NodeSplitter
Versioned: OPM
Versioned: OPT
Not versioned: OrbitalTug
Not versioned: PanarchistSpaceAlliance
Not versioned: PhantomAerospace
Versioned: PlanetShine
Versioned: PlanetaryBaseInc
Not versioned: PortraitStats
Versioned: PreciseNode
Versioned: ProceduralDynamics
Not versioned: ProceduralFairings
Not versioned: ProceduralFairingsRetext
Versioned: ProceduralParts
Versioned: QuickBrake
Versioned: QuickCursorHider
Versioned: RCSBuildAid
Versioned: REPOSoftTech
Not versioned: RLA_Stockalike
Not versioned: RSCapsuledyne
Not versioned: RaptorAerospacial
Versioned: RosterManager
Versioned: SCANsat
Not versioned: SDHI
Not versioned: SM_Chute
Not versioned: SPD
Not versioned: SPS
Not versioned: SSTU-TextureSets
Not versioned: STMRibbons
Not versioned: SXMk2
Not versioned: SXT
Not versioned: SaveConfirmationSound
Not versioned: ScienceAlert
Not versioned: SensibleScreenshot
Versioned: ShipManifest
Versioned: Sigma
Versioned: SpaceY-Expanded
Versioned: SpaceY-Lifters
Versioned: StationPartsExpansion
Not versioned: StationScience
Not versioned: StockBugFixPlus
Not versioned: SurfaceExperimentPackage
Versioned: SurfaceLights
Not versioned: T.G.O.L group
Not versioned: TRP-Hire
Versioned: TacFuelBalancer
Versioned: TakeCommand
Versioned: TalisarParts
Versioned: TarsierSpaceTech
Versioned: ThrottleControlledAvionics
Not versioned: ToadicusTools
Versioned: TotalTime
Versioned: Trajectories
Versioned: TriggerTech
Not versioned: UKS-KPBS_Compatibility-0.1.3
Not versioned: UberDyneAstronautics
Versioned: UmbraSpaceIndustries
Not versioned: UniversalStorage
Not versioned: Version_2.0 Industries
Versioned: WaterSounds
Versioned: WaypointManager
Versioned: WildBlueIndustries
Versioned: Workshop
Versioned: [x] Science!
Not versioned: imkSushi
Not versioned: kerbodynePlus
Not versioned: notes

Last modified times for all top-level directories:
==================================================
2014-06-06 10:09 - MechJeb2 Embedded by Dennis6492
2014-09-06 05:36 - KASA
2014-09-26 00:31 - KSPTOTConnect
2015-07-01 19:11 - RSCapsuledyne
2015-07-27 14:04 - TalisarParts
2015-09-02 00:29 - AtomicAge
2015-12-11 13:13 - Mk1CargoBay
2015-12-17 02:03 - LLL
2015-12-31 16:22 - NearFutureProps
2016-02-10 13:58 - JoolBiomes
2016-02-18 23:02 - KipEng
2016-02-21 14:17 - BahaSP
2016-03-08 09:57 - EveBiomesPlus
2016-03-30 00:11 - NodeSplitter
2016-03-30 11:25 - LBSI
2016-04-04 17:12 - DecoupleFromHeatshield
2016-04-08 00:30 - BahaEPL
2016-04-18 09:31 - CommunityTechTree
2016-04-22 11:06 - RosterManager
2016-04-22 19:40 - DefaultActionGroups
2016-04-23 13:06 - LaunchNumbering
2016-04-23 13:06 - MP_Nazari
2016-04-23 13:07 - HangarGrid
2016-04-23 13:09 - BlueTech
2016-04-23 13:09 - LETech
2016-04-23 13:16 - Bloody_looser
2016-04-23 13:17 - NEBULA
2016-04-23 13:17 - UberDyneAstronautics
2016-04-23 13:19 - BZ-1
2016-04-23 13:23 - ExtraplanetaryLaunchpads
2016-04-23 13:29 - Mk3HypersonicSystems
2016-04-24 14:39 - Landertron
2016-04-25 01:08 - STMRibbons
2016-04-25 15:19 - Fusebox
2016-04-25 15:19 - Mkerb
2016-04-25 21:43 - RLA_Stockalike
2016-04-26 18:40 - CameraFocusChanger
2016-04-26 23:46 - ExceptionDetector
2016-04-27 11:33 - LLL-Extra
2016-04-27 17:44 - FarFromKerbin
2016-04-27 19:22 - kerbodynePlus
2016-04-27 21:20 - SDHI
2016-04-28 20:18 - PortraitStats
2016-04-30 20:43 - MiningExpansion
2016-05-01 14:35 - Felbourn
2016-05-02 06:23 - HabTech
2016-05-02 13:03 - AllYAll
2016-05-02 13:10 - AutoAsparagus
2016-05-02 13:39 - KerbalJointReinforcement
2016-05-02 13:39 - ThrottleControlledAvionics
2016-05-02 16:27 - DMagicScienceAnimate
2016-05-02 20:29 - 000_Toolbar
2016-05-03 13:59 - SurfaceExperimentPackage
2016-05-03 18:12 - KRnD
2016-05-03 21:42 - FieldExperience
2016-05-06 20:36 - Version_2.0 Industries
2016-05-07 00:21 - MBI
2016-05-07 11:54 - TakeCommand
2016-05-08 17:42 - T.G.O.L group
2016-05-08 21:43 - ProceduralFairings
2016-05-10 12:18 - StockBugFixPlus
2016-05-10 19:47 - HeatControl
2016-05-12 10:19 - NavyFish
2016-05-12 10:57 - KSPRanks
2016-05-12 18:24 - PhantomAerospace
2016-05-12 20:50 - NAU
2016-05-12 21:24 - PreciseNode
2016-05-15 12:06 - MagicSmokeIndustries
2016-05-15 20:34 - ShipManifest
2016-05-17 11:10 - AutoRove
2016-05-17 12:51 - StationScience
2016-05-18 22:14 - notes
2016-05-18 23:21 - Trajectories
2016-05-19 21:06 - SpaceY-Expanded
2016-05-19 21:07 - UKS-KPBS_Compatibility-0.1.3
2016-05-19 21:08 - NetherdyneAerospace
2016-05-19 21:12 - LegoFlagsV4
2016-05-20 13:42 - KeridianDynamics
2016-05-20 13:47 - ModRocketSys
2016-05-21 01:41 - CTTP
2016-05-21 02:12 - OPM
2016-05-21 06:31 - ChopShop
2016-05-21 12:54 - Aquila Aerospace
2016-05-22 00:21 - Nereid
2016-05-22 00:22 - SPD
2016-05-22 00:22 - ToadicusTools
2016-05-22 00:24 - FShangarExtender
2016-05-22 00:28 - 000_FilterExtensions Configs
2016-05-22 00:54 - AntennaRange
2016-05-22 12:48 - KSPCalendar
2016-05-22 14:17 - 000_FilterExtensions
2016-05-22 20:49 - ProceduralDynamics
2016-05-23 14:03 - HLAirships
2016-05-23 15:10 - CxAerospace
2016-05-23 15:11 - EveEngines
2016-05-23 15:12 - KerBalloons
2016-05-23 15:13 - KerbalHacks
2016-05-24 12:20 - SaveConfirmationSound
2016-05-24 12:21 - OrbitalTug
2016-05-24 13:05 - SurfaceLights
2016-05-28 19:38 - EngineLight
2016-05-28 21:45 - KermangeddonIndustries
2016-05-28 21:51 - SXT
2016-05-29 21:35 - ProceduralParts
2016-05-29 21:44 - Kalculator
2016-05-31 13:44 - SSTU-TextureSets
2016-05-31 18:49 - imkSushi
2016-06-01 13:30 - StationPartsExpansion
2016-06-02 00:02 - BetterCrewAssignment
2016-06-02 20:56 - AssemblyFuelUtility
2016-06-05 00:41 - SXMk2
2016-06-05 00:44 - AetherSpace
2016-06-05 02:46 - RCSBuildAid
2016-06-07 12:24 - OPT
2016-06-08 20:54 - SpaceY-Lifters
2016-06-11 12:41 - ScienceAlert
2016-06-11 16:40 - SM_Chute
2016-06-12 19:22 - NSS
2016-06-12 19:24 - ProceduralFairingsRetext
2016-06-12 19:41 - IndicatorLights
2016-06-13 14:54 - Workshop
2016-06-14 12:14 - ConnectedLivingSpace
2016-06-14 12:17 - RaptorAerospacial
2016-06-14 22:41 - KSEA
2016-06-16 14:42 - KKP
2016-06-16 19:11 - SPS
2016-06-17 16:53 - PlanetaryBaseInc
2016-06-18 23:26 - Mk2Expansion
2016-06-18 23:27 - Coatl Aerospace
2016-06-19 22:41 - Sigma
2016-06-20 20:00 - UniversalStorage
2016-06-21 22:05 - CommunityResourcePack
2016-06-21 23:31 - WaypointManager
2016-06-21 23:46 - ContractPacks
2016-06-22 11:54 - TRP-Hire
2016-06-22 11:57 - PanarchistSpaceAlliance
2016-06-22 17:23 - [x] Science!
2016-06-22 19:12 - JSI
2016-06-22 21:10 - TacFuelBalancer
2016-06-22 21:26 - Champagne
2016-06-22 21:39 - KIS
2016-06-22 22:17 - ABCORS
2016-06-23 00:59 - B9PartSwitch
2016-06-23 12:41 - FlexoTube
2016-06-23 12:57 - DStaal_Planetary_Base_UKS_Addons
2016-06-23 13:07 - EditorExtensionsRedux
2016-06-23 13:09 - BetterBurnTime
2016-06-23 13:30 - 000_USITools
2016-06-23 13:30 - Firespitter
2016-06-23 13:30 - REPOSoftTech
2016-06-23 13:54 - Kopernicus
2016-06-23 14:00 - TotalTime
2016-06-23 15:28 - QuickBrake
2016-06-23 15:54 - QuickCursorHider
2016-06-23 21:26 - UmbraSpaceIndustries
2016-06-24 06:58 - TarsierSpaceTech
2016-06-24 20:02 - GravityTurn
2016-06-25 00:56 - WaterSounds
2016-06-25 11:03 - InterstellarFuelSwitch
2016-06-25 16:46 - EasyBoard
2016-06-25 17:04 - NearFutureConstruction
2016-06-25 17:06 - NearFutureSpacecraft
2016-06-25 17:11 - NearFuturePropulsion
2016-06-25 20:02 - HeatManagement
2016-06-26 13:17 - ASET
2016-06-26 22:44 - DStaal
2016-06-27 02:20 - KAS
2016-06-27 11:15 - EasyVesselSwitch
2016-06-27 11:54 - NearFutureSolar
2016-06-27 13:03 - WildBlueIndustries
2016-06-27 14:10 - DMagicOrbitalScience
2016-06-27 14:10 - ModularFlightIntegrator
2016-06-27 14:10 - SCANsat
2016-06-27 15:45 - PlanetShine
2016-06-27 15:46 - KSP-AVC
2016-06-27 15:52 - MechJeb2
2016-06-27 16:03 - ContractConfigurator
2016-06-27 16:08 - CorrectCoL
2016-06-27 16:15 - TriggerTech
2016-06-27 16:21 - Diazo
2016-06-27 16:22 - KerbalEngineer
2016-06-27 16:23 - SensibleScreenshot

The order things appear in the output is currently hard-coded - if anyone has suggestions on a better order I'll take them.  (I'm also considering a flag to disable the headers.)  I might also be able to make the order a command-line option.

Link to comment
Share on other sites

Wow... This sounds SWEET!!... I have no idea how to use Perl, or command line, so if a GUI of some sort is ever incorporated, I will certainly give this a try...

How about finding and listing un-necessary, and non-KSP files?

For example, whenever I install mods, I then scrub the GameData folder (for almost everything you've also listed above), but I also scrub for license, read me, COPYING, Thumbs.db, .pdfs, any documentation-only type .txt files, .doc, .md, etc... and I remove them all...

I also delete "Flags" folders and files, as I dont use any flags at all...

Also, do you check for mod folders nested folders OUTSIDE the \GameData folder, in the main KSP_<install> folder?
I ask, because some mods add a <mod-name> top level folder, with a SUB-directory \GameData folder, then the sub folders inside THAT...
IIRC, Kerbal Alarm Clock, and some of the TAC mods are examples...

Edited by Stone Blue
Link to comment
Share on other sites

Glad you like the concept.  :) Command line isn't to hard - especially if all you need is to run one program like this.  Getting Perl to run on Windows...  That can be a bit trickier.   :wink:  (It's not hard, but Perl is designed for some very Unix concepts, so you basically have to work with a port of some kind.  Strawberry Perl is the leader, I believe.)  The easiest GUI would basically be a simple wrapper that has buttons for different options, runs the command-line in the background, and outputs to a window.  I may get to one - once everything else gets done.  :wink:

Finding all unneeded files in GameData is fairly easy (I'm looking at all of them anyway) - if we can just agree on what 'unneeded' means.  :wink:  There are two possible approaches: Listing every type of file that we don't want, and listing every type of file that we do want.  The former is more work, and likely to leave stuff out which would be harmless, in the end.  (Other than some wasted disk space.)  The later is easier, but any errors are far more dangerous - pointing out a needed file as unneeded could mean someone deletes/removes it, and then things go wonky.

Similar concern on the folders in the main KSP data folder - I was thinking I need to look there for a couple of things anyway, long term.  (KSP version...)  There since we're talking about folders it's much more likely to use a list of 'good' items and flag everything else - but again that's the more dangerous option, as if something goes wrong it's more likely to cause problems for the user.

Still, just listing them isn't a problem in and of itself.  I'll put it at the top of my to-do list on the program.

What's your thoughts on having the program have an option to do some automatic fixes?  (Re-parent items in nested GameData folders, remove older versions of ModuleManager, stuff like that.)  I'm trying to decide whether it's a good idea or not.

Link to comment
Share on other sites

25 minutes ago, DStaal said:

The easiest GUI would basically be a simple wrapper that has buttons for different options, runs the command-line in the background, and outputs to a window.  I may get to one - once everything else gets done.  :wink:

Yeah, SIMPLE Gui with just basic buttons would plenty for ME... No frills needed :)

25 minutes ago, DStaal said:

Finding all unneeded files in GameData is fairly easy (I'm looking at all of them anyway) - if we can just agree on what 'unneeded' means.  :wink:

LOL... yeah... But then, maybe user-selectable filetypes?... Like I said, i currently manually scrub the whole GameData... any files I'm not sure of, I'll actually read, or investigate before deleteing... Just a method of showing me a LIST of all possibles (better than Windows Search... :P), then leaving manual deletion up to me, would be function enough... :)

 

25 minutes ago, DStaal said:

Similar concern on the folders in the main KSP data folder - I was thinking I need to look there for a couple of things anyway, long term.  (KSP version...)  There since we're talking about folders it's much more likely to use a list of 'good' items and flag everything else - but again that's the more dangerous option, as if something goes wrong it's more likely to cause problems for the user.

Still, just listing them isn't a problem in and of itself.  I'll put it at the top of my to-do list on the program.

What's your thoughts on having the program have an option to do some automatic fixes?  (Re-parent items in nested GameData folders, remove older versions of ModuleManager, stuff like that.)  I'm trying to decide whether it's a good idea or not.

Well, most of the time that I've seen, when a mod/.zip throws a parent folder CONTAINING a GameData folder into the main KSP install folder, its pretty obvious which folder it is (Usually a mod name and version number) ... And of all the folders in the main KSP folder, only about half are really necessary... Half are old, empty, legacy folders (like your appendix), just taking up space and annoying people with OCD... :D

I agree, just LISTING is helpful enough at this point... I'd say keep automatic deletions and fixes to a minimum, at least fo rnow...

Fixing nested GameData folders would be nice, AS LONG as it can be done nearly perfectly every time...

Not sure about deleting old (multiple versions) of ModuleManager tho... While I ALWAYS do it, some mod devs seem to think its not good practice, since some mods that package these older versions, have been SPECIFICALLY written and tested to work with the older version, and that having multiple versions doesnt hurt anything, since Sarbian IIRC, coded a version self-check, and disabling of older versions, right into MM... WHICH incidentally, I would think right there negates mod devs concerns that the older versions are still needed SPECIFICALLY for their mods...???
This might be worth looking into... Possibly ask sarbian himself?... If he says its OK, then yeah, auto deletion of old, multiple versions would be a bonus

Other than what I already mentioned, I cant think of anything else that could possibly be automated...???

But I'm constantly installing/removing mods manually, so if I think of anything that could be done automatically the next few times I'm doing that, I'll try to remember to come back and suggest them.. :)

Short term, PERSONALLY, I'd like to see just full listing features (maybe user-selectable), and even a basic GUI, instead of added features... :)  (hint, hint, wink, wink)...lol

Edited by Stone Blue
Link to comment
Share on other sites

I'll say right up front that a GUI isn't going to be anytime soon.  If I had a working version of XCode (which I don't, and I'm not sure how to get to - I need an installer for my archaic version of the OS), I could throw one together for OS X in an hour or so, but anything beyond that will take a lot of work and/or money.  I don't know any cross-platform GUI toolkits well enough at the moment, so I'll be focusing on features that have relevance to me.  :wink:  Full listing however is easy - as I said, the code looks at every file and decides whether it's 'interesting' already, so it's not hard to have more categories of 'interesting'.

Maybe I'll just sort the ModuleManager list and make headers optional - if I do that, anyone moderately fluent in command line operations can write a line to remove duplicates themselves if they want it.  ('| tail -n+2 | rm' should do it...)  My impression is that while they aren't supposed to cause issues, occasionally having more than one has.

The question on whether I can re-parent GameData folders correctly is a good one.  In the easy case - where it's just a mod folder - no problem.  I can even special-case if they have ModuleManager in there and keep the more recent.  The problem becomes what happens when it's a more complex case - say someone has nested a UKS install, but they already have a CRP folder.  Which do we keep?  (I suppose we could check the more recent timestamp/version file...  Hmm.)

Neither of those would be the default mode: You'd have to give an option at runtime, and probably confirm once the program's worked out what would be done.

(As a side note to the above plans: I basically work freelance.  The plans above are 'what would be easy and useful to me in my spare time'.  But if people decide they want me to go in another direction, I can do that - I could effectively spent all my time on this if I could afford it.  Not likely to happen, but if people are interested I can set up a Paetron and go that route.)

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...