I have a plugin with several pieces: snippets, syntax files and tests, and soon a couple of build systems. This gets messy when the files are all in the root of the plugin folder, along with Package Control stuff, so I have put them in subfolders:
.
├── Build Systems
│ └── Check Justfile.sublime-build
├── Snippets
│ └── bash.sublime-snippet
├── Syntax
│ ├── Just.sublime-syntax
│ └── tests
│ ├── etc.
This is fine for most things, but now my Build System has become more complex than can be managed with a simple .sublime-build file. I need to define my own command, subclassing sublime_plugin.WindowCommand. This, in turn, needs to go inside a .py file. I’ve named mine check_justfile_build.py. But when I place that file inside the Build Systems folder, it is never loaded because (as I understand it) Sublime only looks in the plugin root to load .py files. But I’d really like to keep each category of resource files together.
As a workaround for this, I’ve had success with renaming the folder and putting this in a .py file in the package root:
from .BuildSystems.check_justfile_build import CheckJustfileBuildCommand
Although that doesn’t work in this particular case because “Build Systems” has a space in it. I tried the following, but it fails with No module named "Build Systems":
import importlib
importlib.import_module("Build Systems.check_justfile_build.CheckJustfileBuildCommand")
I’d be grateful for a pointer to some best practice examples of well-structured packages with multiple different categories of Sublime resources including .py files. I can’t be the first person to run into this?