pySim-shell: more generic export options

The as_json parameter has been added as an additional parameter to the
export function. Lets use a dictionary here and put the parameter in it.
This makes it easier to add more options in the future

Change-Id: Ie860eec918e7cdb01651642f4bc2474c9fb1924f
This commit is contained in:
Philipp Maier
2022-05-19 10:20:30 +02:00
parent ea81f75e94
commit 9a4091d93a

View File

@@ -461,7 +461,7 @@ class PySimCommands(CommandSet):
self._cmd.poutput(directory_str) self._cmd.poutput(directory_str)
self._cmd.poutput("%d files" % len(selectables)) self._cmd.poutput("%d files" % len(selectables))
def walk(self, indent=0, action=None, context=None, as_json=False): def walk(self, indent=0, action=None, context=None, **kwargs):
"""Recursively walk through the file system, starting at the currently selected DF""" """Recursively walk through the file system, starting at the currently selected DF"""
files = self._cmd.rs.selected_file.get_selectables( files = self._cmd.rs.selected_file.get_selectables(
flags=['FNAMES', 'ANAMES']) flags=['FNAMES', 'ANAMES'])
@@ -493,12 +493,12 @@ class PySimCommands(CommandSet):
# If the DF was skipped, we never have entered the directory # If the DF was skipped, we never have entered the directory
# below, so we must not move up. # below, so we must not move up.
if skip_df == False: if skip_df == False:
self.walk(indent + 1, action, context, as_json) self.walk(indent + 1, action, context, **kwargs)
fcp_dec = self._cmd.rs.select("..", self._cmd) fcp_dec = self._cmd.rs.select("..", self._cmd)
elif action: elif action:
df_before_action = self._cmd.rs.selected_file df_before_action = self._cmd.rs.selected_file
action(f, context, as_json) action(f, context, **kwargs)
# When walking through the file system tree the action must not # When walking through the file system tree the action must not
# always restore the currently selected file to the file that # always restore the currently selected file to the file that
# was selected before executing the action() callback. # was selected before executing the action() callback.
@@ -510,7 +510,7 @@ class PySimCommands(CommandSet):
"""Display a filesystem-tree with all selectable files""" """Display a filesystem-tree with all selectable files"""
self.walk() self.walk()
def export(self, filename, context, as_json=False): def export(self, filename, context, as_json):
""" Select and export a single file """ """ Select and export a single file """
context['COUNT'] += 1 context['COUNT'] += 1
df = self._cmd.rs.selected_file df = self._cmd.rs.selected_file
@@ -619,10 +619,11 @@ class PySimCommands(CommandSet):
"""Export files to script that can be imported back later""" """Export files to script that can be imported back later"""
context = {'ERR': 0, 'COUNT': 0, 'BAD': [], context = {'ERR': 0, 'COUNT': 0, 'BAD': [],
'DF_SKIP': 0, 'DF_SKIP_REASON': []} 'DF_SKIP': 0, 'DF_SKIP_REASON': []}
kwargs_export = {'as_json': opts.json}
if opts.filename: if opts.filename:
self.export(opts.filename, context, opts.json) self.export(opts.filename, context, **kwargs_export)
else: else:
self.walk(0, self.export, context, opts.json) self.walk(0, self.export, context, **kwargs_export)
self._cmd.poutput(boxed_heading_str("Export summary")) self._cmd.poutput(boxed_heading_str("Export summary"))