diff --git a/nc_password_client/nc_password_client.py b/nc_password_client/nc_password_client.py index 77754bd..877247f 100755 --- a/nc_password_client/nc_password_client.py +++ b/nc_password_client/nc_password_client.py @@ -696,30 +696,33 @@ class NcPasswordClient: '''Delete a passwords folder''' print(json.dumps(self.nc.delete_passwords_folder(name), indent=2)) - def migrate_pass(self): + def migrate_pass(self, limit=-1): '''Migrate password store to Nextcloud pass''' store = passpy.store.Store() + count = 0 for item in store.find(''): - obj = { - "label": os.path.basename(item), - } - folder = os.path.dirname(item) - if folder != '': - obj['folder'] = folder - raw_values = store.get_key(item).split('\n') - obj['password'] = raw_values[0] - raw_values.pop(0) - for line in raw_values: - if ': ' in line: - split_line = line.split(': ') - field = split_line[0] - value = split_line[1] - else: - field = line - value = '' - if field != '' and value != '': - obj[field] = value - print(json.dumps(self.nc.create_password(obj), indent=2)) + if limit > -1 and limit > count: + obj = { + "label": os.path.basename(item), + } + folder = os.path.dirname(item) + if folder != '': + obj['folder'] = folder + raw_values = store.get_key(item).split('\n') + obj['password'] = raw_values[0] + raw_values.pop(0) + for line in raw_values: + if ': ' in line: + split_line = line.split(': ') + field = split_line[0] + value = split_line[1] + else: + field = line + value = '' + if field != '' and value != '': + obj[field] = value + print(json.dumps(self.nc.create_password(obj), indent=2)) + count += 1 def _init_log(self): ''' Initialize log object ''' @@ -864,11 +867,12 @@ def delete_passwords_folder(ctx, name): ctx.obj['NcPasswordClient'].delete_passwords_folder(name) @cli.command() +@click.option('--limit', '-l', default=-1, help='Maximun number of passwords to migrate. -1 for unlimited.') @click_config_file.configuration_option() @click.pass_context -def migrate_pass(ctx): +def migrate_pass(ctx, limit): '''Migrate password store passwords to Nextcloud Passwords''' - ctx.obj['NcPasswordClient'].migrate_pass() + ctx.obj['NcPasswordClient'].migrate_pass(limit) if __name__ == "__main__": cli(obj={})