Exemplo n.º 1
0
def createScratchOrg_installUnlockedPackages(term):

	packages = None
	try:
		packages = helper.getDataFromJson("sfdx-project.json")
		if ("packageDirectories" not in packages):
			return False, []
		packages = packages["packageDirectories"][0]
		if ("dependencies" not in packages):
			return False, []
		packages = packages["dependencies"]
	except Exception as e:
		return True, [e]
	

	if (len(packages) == 0): return False, []

	helper.startLoading("Installing unlocked packages from 'sfdx-project.json'")
	
	results = helper.tryCommand(None, ["echo y | sfdx plugins:install sfpowerkit"], False, False, False)
	if (results[0]): return results

	keysParam = ''
	path = helper.getConfig('locations.package-key')
	if (path is not None):
		packageKey = helper.getContentOfFile(path)
		if (packageKey == None): return True, ["{} file does not exists. Without it, packages cannot be installed. See Main Menu > Other > Add Package Key to add it.".format(path)]
	
		keys = getPackageKeys(packages, packageKey)
		keysParam = ' --installationkeys "{}"'.format(keys)

	cmd = 'sfdx sfpowerkit:package:dependencies:install -r -a -w 10' + keysParam
	results = helper.tryCommand(term, [cmd], True, True, False)
	return results
Exemplo n.º 2
0
def createScratchOrg_importDummyData():
	
	path = helper.getConfig('locations.dummy-data')
	if (path is None):
		return False, []
	if (not helper.folderExists(path)):
		return True, ['Folder \'{}\' does not exists'.format(path)]
	path = path + '/'

	helper.startLoading("Importing dummy data")

	results = helper.tryCommand(None, ["echo y | sfdx plugins:install [email protected]"], False, False, False)
	if (results[0]): return results

	try:
		for folder in next(os.walk(path))[1]:
			if (folder.endswith(".out")):
				shutil.rmtree(path + folder)
		for folder in next(os.walk(path))[1]:
			cmd = 'sfdx wry:file:replace -i {} -o {}'.format(path + folder, path + folder + ".out")
			results = helper.tryCommand(None, [cmd], False, False, False)
			if (results[0]): return results
		for folder in next(os.walk(path))[1]:
			if (folder.endswith(".out")):
				cmd = 'sfdx force:data:tree:import --plan {}{}/plan.json'.format(path, folder)
				results = helper.tryCommand(None, [cmd], False, False, False)
				if (results[0]): return results
		helper.spinnerSuccess()
	except Exception as e:
		helper.log(cmd, e, 'ERROR')
		return True, [e]
	return False, []
Exemplo n.º 3
0
def createScratchOrg_assignPermsets(term):

	permsets = helper.getConfig('permsets_to_assign')

	if (permsets is None or not permsets):
		return False, []

	helper.startLoading("Assigning configured permission sets")
	commands = [] 
	for permset in permsets:
		commands.append("sfdx force:user:permset:assign -n " + permset)
	
	trysLeft = 12
	while(permsetGroupsAreNotComplete(term)):
		trysLeft -= 1
		if (trysLeft == 0): break
		helper.changeLoadingText("Assigning configured permission sets (waiting for groups to be updated. Trys left: {})".format(trysLeft))
		time.sleep(20)

	results = helper.tryCommand(term, commands, True, False, False)

	helper.changeLoadingText("Assigned permission sets: {}".format(', '.join(permsets)))
	helper.spinnerSuccess()

	return results
Exemplo n.º 4
0
def createScratchOrg_pushNonDeployedMetadata(term):
	path = helper.getConfig('locations.unpackagable')
	
	if (path is None):
		return False, []
	
	if (not helper.folderExists(path)):
		return True, ['Folder \'{}\' does not exists'.format(path)]
	
	helper.startLoading("Pushing unpackagable metadata")
	return helper.tryCommand(term,  ["sfdx force:source:deploy -p " + path], True, True, False)
Exemplo n.º 5
0
def createScratchOrg_installManagedPackages(term):

	packages = helper.getConfig('managed_packages')

	if (packages is None or not packages):
		return False, []

	if (len(packages) == 0): return False, []

	helper.startLoading("Installing managed packages from 'ssdx-config.json'")

	commands = []
	for package in packages:
		commands.append('sfdx force:package:install -r --publishwait 60 --wait 60 -p ' + package)
	results = helper.tryCommand(term, commands, True, True, False)
	return results
Exemplo n.º 6
0
def createPackageKey(term):
	
	path = helper.getConfig('locations.package-key')
	if (path is None):
		print(helper.col("\nEdit ./config/ssdx-config.json to add a default path for package keys", [helper.c.r]))
		helper.pressToContinue(term)
		return

	packageKey = helper.askForInput( [ ["Enter the password needed to install packages", [ helper.c.y ]] ] )
	try:
		f = open(path, "w")
	except IOError:
		f = open(path, "x")
	finally:
		f.write(packageKey)
		f.close()
		print(helper.col("\nSuccessfully added key to {}".format(path), [helper.c.y, helper.c.UL]))
		helper.pressToContinue(term)
Exemplo n.º 7
0
Arquivo: user.py Projeto: navikt/ssdx
def create(term):

    path = helper.getConfig('locations.users')
    if (path is None):
        print(
            helper.col(
                "\nEdit ./config/ssdx-config.json to add a default path for user configs",
                [helper.c.r]))
        helper.pressToContinue(term)
        return
    path = path + '/'

    text = "Which user definition to you want to user as baseline? (see {})".format(
        path)

    try:
        userTypes = helper.fetchFilesFromFolder(path, False)
    except Exception as e:
        print("Make sure users are configured in " + path)
        helper.pressToContinue(term)

    menuFormat = menuHelper.getDefaultFormat()
    items = []
    for userType in userTypes:
        items.append([userType.replace(".json", ""), None, menuFormat])

    items.append(menuHelper.getReturnButton(2))

    selection = menuHelper.giveUserChoices(term=term,
                                           showHeader=True,
                                           showFooter=True,
                                           items=items,
                                           selection=0,
                                           subtitle='Create user',
                                           middleText=text,
                                           printAtBottom=False)
    if (selection == len(items) - 1): return

    file = path + userTypes[selection]
    d = datetime.datetime.now().strftime('%d%m%y_%f')
    username = "******".format(userTypes[selection].replace(".json", ""),
                                    d)
    email = "{}{}@fake.no".format(userTypes[selection].replace(".json", ""), d)

    menuHelper.clear(term, True, True, title, 'Create user', None)
    helper.startLoading("Creating user")
    error = helper.tryCommand(term, [
        "sfdx force:user:create -f {} username={} email={}".format(
            file, username, email)
    ], False, True, False)[0]

    if (not error):
        helper.startLoading("Fetching password")

        res = helper.tryCommand(
            term, ["sfdx force:user:display -u {} --json".format(username)],
            False, False, False)
        if (not res[0]):
            jsonOutput = json.loads(res[1][0])
            if ("password" in jsonOutput['result']):
                password = jsonOutput['result']['password']
            if ("instanceUrl" in jsonOutput['result']):
                url = jsonOutput['result']['instanceUrl'].replace(
                    'https://', '').split('.cs')[0]

        login = helper.tryCommand(
            term, ["sfdx force:org:open -u {} -r --json".format(username)],
            False, True, False)
        if (not login[0]):
            loginJsonOutput = json.loads(login[1][0])
            if ("url" in loginJsonOutput['result']):
                loginUrl = loginJsonOutput['result']['url']

        pyperclip.copy(loginUrl)

        print(
            "\n URL: {}\n Username: {}\n Password: {}\n\n Instant login (copied to clipboard): \n{}\n"
            .format(url, username, password, loginUrl))
    helper.pressToContinue(term)