Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 5 additions & 9 deletions .build/pre_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import os
import shutil
from backports import configparser
from distutils.dir_util import copy_tree


def cd():
Expand All @@ -29,15 +30,8 @@ def cd():

def bundle_example_config(subdir):
examples_dir = os.path.join('examples', subdir)
files = [os.path.join(examples_dir, f) for f in os.listdir(examples_dir) if
os.path.isfile(os.path.join(examples_dir, f))]
bundle_dir = os.path.join('user_sync', 'resources', 'examples')
if not os.path.exists(bundle_dir):
os.mkdir(bundle_dir)
for f in files:
dest = os.path.join(bundle_dir, os.path.split(f)[-1])
shutil.copy(f, dest)

bundle_dir = os.path.join('user_sync', 'resources', 'examples', subdir)
copy_tree(examples_dir, bundle_dir)

def bundle_feature_flag_config():
default_cfg_path = os.path.join('user_sync', 'resources', 'default_flags.cfg')
Expand All @@ -64,4 +58,6 @@ def bundle_feature_flag_config():
if __name__ == '__main__':
cd()
bundle_example_config('config files - basic')
bundle_example_config('config files - custom attributes and mappings')
bundle_example_config('sign')
bundle_example_config('csv inputs - user and remove lists')
5 changes: 4 additions & 1 deletion user-sync.spec
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ a = Analysis(['user_sync/app.py'],
('user_sync/resources/*.cfg', 'resources'),
('user_sync/resources/manual_url', 'resources'),
('user_sync/resources/README.md', 'resources'),
('user_sync/resources/examples/*', 'resources/examples'),
('user_sync/resources/examples/config files - basic/*', 'resources/examples/config files - basic'),
('user_sync/resources/examples/config files - custom attributes and mappings/*', 'resources/examples/config files - custom attributes and mappings'),
('user_sync/resources/examples/sign/*', 'resources/examples/sign'),
('user_sync/resources/examples/csv inputs - user and remove lists/*', 'resources/examples/csv inputs - user and remove lists'),
('user_sync/resources/shell_scripts/win', 'resources/shell_scripts/win'),
('user_sync/resources/shell_scripts/linux', 'resources/shell_scripts/linux'),
],
Expand Down
67 changes: 57 additions & 10 deletions user_sync/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,16 @@ def init(ctx):
sync = 'user-sync-config.yml'
umapi = 'connector-umapi.yml'
ldap = 'connector-ldap.yml'
ctx.forward(example_config, root=sync, umapi=umapi, ldap=ldap)
okta = 'connector-okta.yml'
csv = 'connector-csv.yml'
console = 'connector-adobe-console.yml'
extension = 'extension-config.yml'
remove_list = 'remove-list.csv'
users_file_custom = 'users-file-with-custom-attributes-and-mappings.csv'
users_file = 'users-file.csv'
ctx.forward(example_config, root=sync, umapi=umapi, ldap=ldap,
okta=okta, csv=csv, console=console, extension=extension,
remove_list=remove_list, users_file_custom=users_file_custom, users_file=users_file)


@main.command(short_help="Generate invocation scripts")
Expand Down Expand Up @@ -259,21 +268,34 @@ def shell_scripts(platform):
prompt='UMAPI Config Filename', default='connector-umapi.yml')
@click.option('--ldap', help="Filename of LDAP credential config file",
prompt='LDAP Config Filename', default='connector-ldap.yml')
def example_config(**kwargs):
@click.option('--examples', type=bool, help="Generate all or selected config files", required=False, default=None)
def example_config(examples=False, **kwargs):
"""Generate example configuration files"""
res_files = {
'root': os.path.join('examples', 'user-sync-config.yml'),
'umapi': os.path.join('examples', 'connector-umapi.yml'),
'ldap': os.path.join('examples', 'connector-ldap.yml'),
'okta': os.path.join('examples', 'config files - basic', 'connector-okta.yml'),
'csv': os.path.join('examples', 'config files - basic', 'connector-csv.yml'),
'console': os.path.join('examples', 'config files - basic', 'connector-adobe-console.yml'),
'extension': os.path.join('examples', 'config files - custom attributes and mappings', 'extension-config.yml'),
'remove_list': os.path.join('examples', 'csv inputs - user and remove lists', 'remove-list.csv'),
'users_file_custom': os.path.join('examples', 'csv inputs - user and remove lists', 'users-file-with-custom-attributes-and-mappings.csv'),
'users_file': os.path.join('examples', 'csv inputs - user and remove lists', 'users-file.csv')
}

for k, fname in kwargs.items():
target = Path.cwd() / fname
if not examples:
res_files = {config: kwargs[config] for config in res_files
if config in kwargs}

for k, fname in res_files.items():
target = Path(fname)
assert k in res_files, "Invalid option specified"
res_file = user_sync.resource.get_resource(res_files[k])
assert res_file is not None, "Resource file '{}' not found".format(res_files[k])
if target.exists() and not click.confirm('\nWarning - file already exists: \n{}\nOverwrite?'.format(target)):
continue
os.makedirs(os.path.dirname(target), exist_ok=True)
click.echo("Generating file '{}'".format(fname))
with open(res_file, 'r') as file:
content = file.read()
Expand All @@ -285,14 +307,39 @@ def example_config(**kwargs):
@click.help_option('-h', '--help')
@click.option('--filename', help="Filename of Sign Sync config",
prompt='Sign Sync Config Filename', default='connector-sign-sync.yml')
def example_config_sign(filename):
@click.option('--root', help="Filename of root sign sync config file",
prompt='Main Config Filename', default='sign-sync-config.yml')
@click.option('--sign', help="Filename of Sign Sync config",
prompt='Sign Sync Config Filename', default='connector-sign.yml')
@click.option('--ldap', help="Filename of LDAP credential config file",
prompt='LDAP Config Filename', default='connector-ldap.yml')
@click.option('--examples', type=bool, help="Generate all or selected config files",
required=False, default=None)
def example_config_sign(examples=False, **kwargs):
"""Generate Sign Sync Config"""
res_filename = os.path.join('examples', 'connector-sign-sync.yml')
res_files = {
'root': os.path.join('examples', 'sign', 'sign-sync-config.yml'),
'sign': os.path.join('examples', 'sign', 'connector-sign.yml'),
'ldap': os.path.join('examples', 'sign', 'connector-ldap.yml'),
}

res_file = user_sync.resource.get_resource(res_filename)
assert res_file is not None, "Resource file '{}' not found".format(res_filename)
click.echo("Generating file '{}'".format(filename))
shutil.copy(res_file, filename)
if not examples:
res_files = {config: kwargs[config] for config in res_files
if config in kwargs}

for k, fname in res_files.items():
target = Path.cwd() / fname
assert k in res_files, "Invalid option specified"
res_file = user_sync.resource.get_resource(res_files[k])
assert res_file is not None, "Resource file '{}' not found".format(res_files[k])
if target.exists() and not click.confirm('\nWarning - file already exists: \n{}\nOverwrite?'.format(target)):
continue
os.makedirs(os.path.dirname(target), exist_ok=True)
click.echo("Generating file '{}'".format(fname))
with open(res_file, 'r') as file:
content = file.read()
with open(target, 'w') as file:
file.write(content)


@main.command()
Expand Down