I think it’s important to remember that hobby level printers often require some amount of hobby level tinkering. There are many plug and print options available, and anything is extendable if you want to put the work into it (i.e. don’t fret if multicolor or multi-material are available yet or not, it’s always possible to mod a printer later). Any new cutting edge tech will likely have a bunch of bugs to work out, so expect some hurdles when adopting it.
If you want something to print here and there, it might be worthwhile to look at makerspaces near you. Let a shop handle the tinkering and machine upkeep and yet have something ready when you need it. Makerspaces often have a ton of additional resources so you aren’t stuck to just plastics.
But having worked with numerous off the shelf printers and finally building a Voron, I think it’s important for any printer owner to know how their machine is pieces together/how it works. Then, when things go wrong you’re able to fix them without much fuss. You don’t need to be an engineer to operate one, but it helps to know what’s holding each piece together and where the moving parts travel in order to quickly fix issues.
How much time do you have to program in edge cases? If I had the time and it were me, I’d parse for single number and return a single element. A single number with colon would give the front/back portion of the list accordingly. And two numbers gives the inclusive range.
Then in terms of if you get a zero, swap to zero index mode since they clearly want the start of the list or reject the command explaining the argument isn’t zero-based (probably best to reject just for consistency).
The docs/help page will be key here. That and consistency across your app when it comes to zero vs one indexing.
I think it would depend on the typical user base and how the rest of the cli operates. If it’s typical array work or your users are typically programmers or otherwise know computing, then stick to 0 based indexing. If they’re users of spreadsheets and rarely interface with zero-based indicies, then stick to what they know. Just document it well enough for everyone!
I’d also think inclusive is more intuitive. If they only want one element, then they can provide the single element, otherwise they get the full range.
Although, if your cli is trying to mimic another programming function. If it’s very clear that’s the intent, then follow the functionality of the parent function.