...
TODO
...
(soonish)
...
What
...
is
...
GShell?
...
Some
...
History
...
(and
...
babble)
...
GShell
...
is
...
the
...
second
...
coming
...
of
...
Twiddle
...
(3rd
...
if
...
you
...
count
...
the
...
first
...
iteration
...
I
...
did
...
for
...
a
...
certain
...
other
...
app
...
server).
...
But
...
what
...
the
...
heck
...
is
...
Twiddle?
...
Well,
...
over
...
the
...
years
...
I
...
have
...
realized
...
that
...
I
...
spend
...
way
...
to
...
much
...
time
...
writing
...
framework
...
around
...
command-line
...
tools,
...
just
...
to
...
get
...
a
...
simple
...
task
...
accomplished.
...
And
...
each
...
time
...
I
...
need
...
to
...
add
...
a
...
tiny
...
other
...
little
...
feature
...
I
...
end
...
up
...
doing
...
it
...
all
...
over
...
again.
...
Twiddle
...
was
...
intended
...
to
...
be
...
a
...
simple
...
framework
...
for
...
implementing
...
command-line
...
tools,
...
where
...
only
...
the
...
functionality
...
needs
...
to
...
be
...
implemented,
...
none
...
of
...
the
...
plumbing.
...
Yet
...
I
...
never
...
really
...
finished
...
it...
...
and
...
then
...
a
...
while
...
ago
...
I
...
got
...
the
...
bug
...
to
...
complete
...
it...
...
and
...
thus
...
was
...
born
...
GShell.
...
But
...
what
...
plumbing
...
is
...
there
...
for
...
command-line
...
tools?
...
Well,
...
that
...
becomes
...
more
...
apparent
...
when
...
you
...
start
...
to
...
think
...
about
...
how
...
commands
...
(plural)
...
can
...
coexist
...
and
...
cooperate
...
together.
...
At
...
that
...
point
...
you
...
have
...
the
...
commands
...
option
...
parsing
...
and
...
functionality...
...
plus
...
interaction
...
with
...
input/output
...
streams
...
and
...
environment
...
variables,
...
i18n
...
loading,
...
preferences
...
handling,
...
profile
...
loading,
...
blah,
...
blah,
...
blah.
...
<rant>
...
But
...
Jason,
...
why
...
not
...
use
...
use
...
the
...
system's
...
shell
...
for
...
this
...
stuff?
...
Well,
...
as
...
many
...
of
...
you
...
know...
...
the
...
Windows
...
cmd.exe
...
sucks
...
ass,
...
and
...
despite
...
the
...
profits
...
of
...
vista
...
hoping
...
that
...
ms-foolios
...
are
...
going
...
to
...
fix
...
it,
...
I
...
can't
...
assume
...
they
...
will,
...
since
...
they
...
have
...
had
...
years
...
to
...
pull
...
their
...
heads
...
out
...
and
...
see
...
the
...
folly
...
of
...
batch.
...
</rant>
...
But,
...
more
...
so...
...
I
...
want
...
to
...
be
...
able
...
to
...
SSH
...
into
...
my
...
application
...
server
...
and
...
run
...
those
...
commands.
...
I
...
want
...
to
...
be
...
able
...
to
...
launch
...
a
...
script
...
(language
...
of
...
my
...
choice)
...
in
...
the
...
server
...
from
...
a
...
remote
...
terminal
...
and
...
have
...
it
...
just
...
work
...
as
...
I
...
would
...
expect
...
it
...
to.
...
IMO
...
that
...
is
...
really
...
where
...
the
...
benefit
...
of
...
the
...
common
...
plumbing
...
is.
...
Yet
...
even
...
before
...
we
...
get
...
there,
...
the
...
plumbing
...
allows
...
for
...
use
...
to
...
build
...
simple
...
and
...
consistent
...
command-line
...
tools.
...
Adding
...
a
...
new
...
tool
...
is
...
as
...
simple
...
as
...
adding
...
a
...
new
...
jar
...
to
...
a
...
directory,
...
no
...
need
...
for
...
more
...
scripts
...
to
...
maintain,
...
or
...
configuration
...
files,
...
yada
...
yada.
...
Where
...
Reality
...
Comes
...
In
...
So,
...
what
...
GShell
...
really
...
is,
...
is
...
a
...
simple
...
and
...
light-weight
...
framework
...
to
...
facilitate
...
building
...
command-line
...
applications
...
that
...
have
...
a
...
rich
...
user
...
experience.
...
At
...
the
...
moment,
...
GShell
...
has
...
several
...
significant
...
features:
...
- Dynamic
...
- command
...
- discovery
...
- Rich
...
- JLine
...
- console
...
- Simple
...
- annotation-based
...
- CLI
...
- option/argument
...
- processing
...
- Support
...
- for
...
- fancy
...
- ANSI
...
- color
...
- muck
...
- Rich
...
- dependency
...
- injection
...
- and
...
- component
...
- management
...
- via
...
- Plexus
...
- A
...
- simple
...
- command-line
...
- syntax
...
- parser
...
- with
...
- minimal
...
- support
...
- for
...
- quoting
...
- ("",
...
- '')
...
- and
...
- for
...
- basic
...
-
${xxx
}
...
- expansion
...
- Branding
...
- support
...
- to
...
- allow
...
- application
...
- developers
...
- to
...
- customize
...
- the
...
- user
...
- experience
...
Many
...
things
...
are
...
missing
...
though...
...
Some things which are planned to implemented very soon are:
- Customizable command layout (allows you to make a virtual filesystem to organize your commands)
- Remote shell support via custom protocol (ssh stuff may eventually come, but this is coming first)
- Annotation-based preferences access
- Annotation-based i18n access
And other things which are planned, but so far lack resources to implement:
- Full
/bin/bash
compatible shell syntax support