Twinpack is a package manager for TwinCAT libraries with integration into the TwinCAT IDE. It enables the TwinCAT community to share their libraries and simplifies the continous integration of third-party components into TwinCAT projects.
At the moment the command line interface of Twinpack only supports the actions "pull" (download all used packages) and "push" (upload packages to a Twinpack server).
So it lacks a lot of possibilities, which are available in the vsix extension. This issue will make the command line interface "feature complete" by allowing
[x] Config sources
[x] Searching for packages
[x] Listing used packages
[x] Download packages
[x] Add new packages to plcproj
[x] Restore uses packages
[x] Update all
[ ] Update framework
[ ] Update package
[x] Set Version of a plc
[x] Set Version of related packages (sync framework packages)
All of this functionality should be available
[x] Headed: Using the Automation Interface to perform all actions, which involves starting a (background) instance of Visual Studio and performing all commands
[x] Headless: Perfoam all actions by manipulating files, which is much faster, but will lack the possibility to install/uninstall packages from the target (this can still be achieved by using "RepTool")
Implementing this issue requires extensive refactoring of the existing code base (a lot of logic is directly implemented in the vsix) to a core project, the core implementation will be used by
[x] CLI
[x] VSIX
[x] DevTools
[ ] Pipelines
To make the code more maintainable tests should be implemented
[x] Unittests (Mocking of Package Servers and Automation Interface)
[x] Systemtests (Using an actual .sln file and .libraries, only mocking Package Servers)
At the moment the command line interface of Twinpack only supports the actions "pull" (download all used packages) and "push" (upload packages to a Twinpack server).
So it lacks a lot of possibilities, which are available in the vsix extension. This issue will make the command line interface "feature complete" by allowing
All of this functionality should be available
Implementing this issue requires extensive refactoring of the existing code base (a lot of logic is directly implemented in the vsix) to a core project, the core implementation will be used by
To make the code more maintainable tests should be implemented
Implementation in PR #140
Additional