Permalink
Browse files

Add a skeleton for the 'oilc' applet, which itself has subcommands.

  • Loading branch information...
Andy Chu
Andy Chu committed Feb 8, 2018
1 parent f444dd7 commit 88d93df923b8916afcb3550d5c2a715101d23892
Showing with 34 additions and 9 deletions.
  1. +32 −8 bin/oil.py
  2. +1 −0 bin/oilc
  3. +1 −1 scripts/run.sh
View
@@ -92,9 +92,6 @@ def _tlog(msg):
_tlog('after imports')
class OilUsageError(RuntimeError):
""" Exception for incorrect command line usage. """
def InteractiveLoop(opts, ex, c_parser, w_parser, line_reader):
if opts.show_ast:
@@ -436,6 +433,31 @@ def BoilMain(main_argv):
raise NotImplementedError('boil')
def OilCommandMain(main_argv):
"""Run an 'oilc' tool.
'oilc' is short for "oil compiler" or "oil command".
"""
try:
action = main_argv[0]
except IndexError:
raise args.UsageError('oilc: Missing required subcommand')
log('action %s', action)
if action == 'translate':
# TODO: osh2oil
pass
elif action == 'analyze-bin':
# TODO: tools/analyze.py
pass
else:
raise args.UsageError('oilc: Invalid subcommand %r' % action)
return 0
def OilMain(argv):
login_shell = False
@@ -449,7 +471,7 @@ def OilMain(argv):
try:
first_arg = argv[1]
except IndexError:
raise OilUsageError('Missing name of main()')
raise args.UsageError('Missing required applet name')
if first_arg in ('-h', '--help'):
builtin.Help(['oil-usage'], util.GetResourceLoader())
@@ -471,6 +493,8 @@ def OilMain(argv):
status = OshMain(main_argv, login_shell)
_tlog('done osh main')
return status
elif main_name == 'oilc':
return OilCommandMain(main_argv)
elif main_name == 'wok':
return WokMain(main_argv)
elif main_name == 'boil':
@@ -480,17 +504,17 @@ def OilMain(argv):
elif main_name == 'false':
return 1
else:
raise OilUsageError('Invalid main %r' % main_name)
raise args.UsageError('Invalid applet name %r' % main_name)
def main(argv):
try:
sys.exit(OilMain(argv))
except NotImplementedError as e:
raise
except OilUsageError as e:
builtin.Help(['oil-usage'], util.GetResourceLoader())
print(str(e), file=sys.stderr)
except args.UsageError as e:
#builtin.Help(['oil-usage'], util.GetResourceLoader())
print('oil: %s' % e, file=sys.stderr)
sys.exit(2)
except RuntimeError as e:
print('FATAL: %s' % e, file=sys.stderr)
View
View
@@ -19,7 +19,7 @@ replace-print() {
make-bin-links() {
# bin/ is for running with the Python interpreter. _bin/ is for running with
# OVM app bundles.
links='oil osh sh wok boil true false'
links='oil oilc osh sh wok boil true false'
mkdir -p bin _bin
for link in $links ; do

0 comments on commit 88d93df

Please sign in to comment.