I did a couple projects where a fair bit from one was being re-used in the other (generic stuff, like output control, string validations etc) and I started putting bits into individual files etc and eventually ended up putting together a build tool that allows using scripts from a "library" and writing #%include lines in the main script. There's some extra management in there to prevent double-including files (two dependencies with a shared third dependency) etc. Everything gets built into a single script that can then be passed around/deployed.
Some of my scripts are now beyond the 1000+ line but that's only because they pull in a few "external" libs :-)
And yeah, your heuristic for transition point sounds eminently sensible :)
I know the pain of such pride :-)
I did a couple projects where a fair bit from one was being re-used in the other (generic stuff, like output control, string validations etc) and I started putting bits into individual files etc and eventually ended up putting together a build tool that allows using scripts from a "library" and writing
#%includelines in the main script. There's some extra management in there to prevent double-including files (two dependencies with a shared third dependency) etc. Everything gets built into a single script that can then be passed around/deployed.Some of my scripts are now beyond the 1000+ line but that's only because they pull in a few "external" libs :-)
And yeah, your heuristic for transition point sounds eminently sensible :)
Ha! Bash can definitely give you a bit of a Frankenstein complex, simultaneously proud and horrified at what you've created.
(Not to be confused with Asimov's definition of "Frankenstein complex".)
Ha! Bash can definitely give you a bit of a Frankenstein complex, simultaneously proud and horrified at what you've created.
(Not to be confused with Asimov's definition of "Frankenstein complex".)