[Zope] [ANN] ZShell 0.2
Jerome Alet
alet@unice.fr
Mon, 7 May 2001 09:17:17 +0200 (MET DST)
On Mon, 7 May 2001, Jason Cunliffe wrote:
> Jerome Alet" <alet@unice.fr> wrote:
> > If you're interested I've put a 0.3 online at:
> >
> > http://cortex.unice.fr/~jerome/zshell/
>
> This gets better all the time :-)
>
> I have learned so much already, just looking through your source.
> It makes a great Zope tutorial in unexpected ways. Thanks.
This was also unexpected !
> > new commands: mkver, enter, leave, save, discard (versions)
> > and the powerful but not used at its full power until
> > variables are checked in: the "call" command !
> >
> > there are also many bug fixes and the possibility to
> > call the method with a zshellscript argument containing the
> > list of commands to execute.
>
> Can you give an example to do this please.
just do something like:
<UNTESTED>
<dtml-let result="zshell(_, zshellscript=["mkdir foo/bar"])">
<dtml-if "result == 0">
All worked fine
<dtml-else>
An error occured
</dtml-if>
</dtml-let>
</UNTESTED>
When called like that, it returns only the status code of the result:
0 = no error
other = errors occured
> 1. MORE SHELL-LIKE BEHAVIOR
>
> I keep hitting return and expecting my code to happen. It's not just
> laziness.
> The RUN button breaks the familiar shell command line paradigm.
> I realise it is nice to have multiple lines, but I find it faster to type
> and keep typing, than have to jump back and forth to the mouse.
>
> One solution:
> SHIFT + ENTER => multiline entry
> ENTER => execute
Don't know how to do it, but this will probably need some javascript at
which my value is 0 or less. If someone can help...
NB: I want it to also work fine with Lynx.
> -----------------------------
> 2. ZSHELL DTML UI SUGGESTIONS
> At the top of the page include all the zshell commands as hyperlinks
links.
> Clicking on a command displays the docstring for the command above/below the
> text area
> and also enters the comand and dummy argument string directly into the
> Zshell shell where one may edit.
Again will probably at least partially need some javascript.
> DTML + ZSHELL
>
> Add a new tag so that Zshell commands can be run from DTML
Interestingly we want the same things :-)
Not in my priority list, but definitively needed.
> 3. RESULTS
> Normal shell would return the results in the shell itself.
> I can see why in Zope this may not be often such a good idea. For example,
> making ls return a hypelinked table as you do is terrific idea.
The new version will support at least partially pseudo standard I/O
streams stdin, stdout, and stderr which contents will be retrievable.
This is a necessity for piping anyway. The HTML result will be another
retrievable I/O stream. I think in the future zshell will return an
instance of the class I define.
The code is in heavy lifting right now, so don't expect a new version
quick.
> 4. cd
> Seems a little inconsistent at the moment partly becuase it does not resolve
> "/"
> I have a zshell in zope root "/"
it's better with every version, but still not perfect. My toObject()
method sucks great.
> Perhaps you disagree..
not at all, but I was unable to write something decent.
> Also for any CD command which is not valid, I suggest including a 'pwd' by
> default in the first line of the Results error message:
easy.
> mkdir a/b/c/d -(p)ublic -(u)ser
>
> possibly:
> :set public+user attributes for all new folders
> :set public+user attributes for just the last folder
>
> Perhaps control it using a simple binary flag style. For example:
>
> mkdir a/b/c/d -p0110 -u1110
>
> Set 'public' b and c only
> Add 'user' folders in a,b,c only
not very user friendly IMHO, but at least solves the problem in an elegant
way.
-p and -u will have to be the first parameters since mkdir accepts
multiple arguments.
> 6. cp
>
> Of course 'cp' should work across folders and also be able to paste in one
> line.
agreed
> 9. wildcards
> Some useful, obvious ones for ZopeShell wishlist whcih might be much easier
> I can think of:
>
> *
> *meta
> *date
no because *'s semantic MUST mean: any object id which ends in meta,
date, etc...
if we want to be consistent with the shell normal behavior
> 8. wget
>
> Very useful for all kinds of things
> Change the 'fname' code so that the default behavior is to save names under
> their original source names.
> If that id is already taken, then take action and rename.
ok, but . in ids is not a good idea in Zope/Python.
> Include an flag for Zope wget to do auto renaming [like it is now].
> syntax could perhaps be:
>
> wget args rename_meta # rename to append meta tag
> wget args rename_sub # rename to append subtype
> wget args rename_xyz # rename to apend _xyz
> # where _xyz are any continuous suffix string,
> "_bak" etc.
I don't like it.
> 7. adduser
>
> This is going to be very cool but, meanwhile I am not not clear what to 'do'
> with adduser.
add many user in one line.
> At least until there is a Zshell mechanism to get and set permissions, and
will come soon.
bye, and thanks for your support.
PS: perhaps I should set up a mailing list somewhere to not waste Zope's
one bandwidth, what do you think ?
Jerome Alet