Jim,

Sorry I forgot to hit send on this....

We have scripts that run under OS and the EFI Shell that we use for debugging. So like Python in the OS you can just type the name of the script and it works, so folks expect the same behavior at the EFI shell :). 

Also as I mentioned in our case the interpreter was built into the shell. In that case you don't have pathing issues to launch Python. It is a lot easier to just distribute the UEFI Shell binary vs. forcing folks to have a bunch of files in specific directories to get things to work. 

Maybe we should futz around with the UEFI Python and wrap it in a lib so it can optionally get built into the UEFI Shell binary. 

Thanks,

Andrew Fish

On Feb 11, 2020, at 1:54 PM, Andrew Fish <afish@apple.com> wrote:



On Feb 11, 2020, at 1:30 PM, Jim Dailey <jim.dailey@dell.com> wrote:

Andrew,

Granted such a feature would be nice, but it seems like it might be a
fair amount of trouble just to avoid typing "python3", which could be
aliased to something as short a "p".

Jim

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Tim Lewis
Sent: Tuesday, February 11, 2020 2:28 PM
To: devel@edk2.groups.io; afish@apple.com
Subject: Re: [edk2-devel] Shell feature?


[EXTERNAL EMAIL] 

Andrew --

I think this is a good idea, but I think this is probably a shell spec issue
because I don't want competing, incompatible implementations.

A few other issues: I think there is a persistence issue (similar to shell
variables) so that the change could be installed and survive a reboot. I
also think there can be a simple shell command that manages extensions (so
that they can be installed by a script)

Tim

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Andrew Fish
via Groups.Io
Sent: Monday, February 10, 2020 12:12 PM
To: devel@edk2.groups.io
Subject: [edk2-devel] Shell feature?

I wanted to start a conversation on the mailing list prior to writing up a
BZ, to make sure I'm not missing anything, or in case there is a better way
to implement this. 

I was thinking it would be good to have a Shell API that lets you associate
a file type with an internal or external shell command. The Idea would be to
pre-pend the internal/external shell command to the file name and also pass
the arguments.

So this:
fs0:>dump.py 1  2 3

Becomes:
fs0:>python3.efi dump.py 1  2 3

Basically you just need an API like:

ShellAddScriptingLanguage (L".py", L"python3.efi");

Seems like this could just plug into the Shell via a ShellExecute(). So for
example you could make Python a UEFI Shell command via a library and that
library constructor could also teach the shell that a .py file could be an
executable?

Thanks,

Andrew Fish