Пример #1
0
def createOrgSubMenu(term):

    submenu = []
    menuFormat = menuHelper.getDefaultFormat()
    menuFormatWithSpace = menuHelper.getDefaultFormat()
    menuFormatWithSpace['addTopSpace'] = True

    submenu.append(["Create Scratch Org", org.createScratchOrg, menuFormat])
    submenu.append(["Open Scratch Org", org.openScratchOrg, menuFormat])
    submenu.append([
        "Open Scratch Org (specify browser)",
        org.openScratchOrgSpecificBrowser, menuFormat
    ])

    submenu.append([
        "Status of Scratch Org", org.seeScratchOrgStatus, menuFormatWithSpace
    ])
    submenu.append(["Delete Scratch Orgs", org.deleteScratchOrg, menuFormat])
    submenu.append([
        "Change Default Scratch Org", org.changeDefaultScratchOrg, menuFormat
    ])

    submenu.append(
        ["Change Default Org", org.changeDefaultOrg, menuFormatWithSpace])
    submenu.append(["Login to Org", org.login, menuFormat])

    return "Org Related Commands", submenu, menuFormat
Пример #2
0
def createPackageSubMenu(term):
    menuFormat = menuHelper.getDefaultFormat()
    menuFormatWithSpace = menuHelper.getDefaultFormat()
    menuFormatWithSpace['addTopSpace'] = True

    submenu = []

    submenu.append(["Re-Install Packages", package.reinstall, menuFormat])

    return "Package Related Commands", submenu, menuFormatWithSpace
Пример #3
0
def createSourceSubMenu(term):

    menuFormat = menuHelper.getDefaultFormat()
    menuFormatWithSpace = menuHelper.getDefaultFormat()
    menuFormatWithSpace['addTopSpace'] = True

    submenu = []

    submenu.append(["Pull Metadata", source.pull, menuFormat])
    submenu.append(["Push Metadata", source.push, menuFormat])

    submenu.append(
        ["Pull Metadata (manifest)", source.manifest, menuFormatWithSpace])

    return "Source Related Commands", submenu, menuFormat
Пример #4
0
def createUserSubMenu(term):

    menuFormat = menuHelper.getDefaultFormat()
    submenu = []

    submenu.append(["Create user", user.create, menuFormat])
    return "User Related Commands", submenu, menuFormat
Пример #5
0
Файл: org.py Проект: navikt/ssdx
def login(term):

	subtitle = 'Login to Org'

	menuFormat = menuHelper.getDefaultFormat()
	items = [["Production Org / Developer Edition / DevHub", None, menuFormat], ["Sandbox", None, menuFormat], menuHelper.getReturnButton(2)]
	selection = menuHelper.giveUserChoices(term=term, showHeader=True, showFooter=True, items=items, selection=0, subtitle=subtitle, middleText="Choose Org type", printAtBottom=False)

	if (selection == 2): return
	param = ""
	if (selection == 0):
		setAsDefault = menuHelper.askUserYesOrNo(term, True, True, subtitle, ['Set this org as default DevHub? (scratch orgs will be made using this org)'], True, False, False, True)
		if (not setAsDefault): return
		if (setAsDefault):
			param = "-d"
	if (selection == 1):
		param = "-r https://test.salesforce.com"


	menuHelper.clear(term, True, True, title, subtitle, None)
	orgName = helper.askForInput( [ ["Enter name for org", [ helper.c.y ]] ] )
	if (orgName):
		param += " -a " + orgName
	menuHelper.clear(term, True, True, title, subtitle, None)

	helper.startLoading("Waiting for login in browser")
	helper.tryCommand(term, ["sfdx force:auth:web:login " + param], True, True, False)[0]
	helper.pressToContinue(term)
Пример #6
0
Файл: org.py Проект: navikt/ssdx
def openScratchOrgSpecificBrowser(term):
	menuFormat = menuHelper.getDefaultFormat()
	items = [['Chrome', None, menuFormat], ['Firefox', None, menuFormat], ['Opera', None, menuFormat]]
	if (helper.isMac()): items.append(['Safari', None, menuFormat])
	items.append(menuHelper.getReturnButton(2))
	selection = menuHelper.giveUserChoices(term=term, showHeader=True, showFooter=True, items=items, selection=0, subtitle='Open Scratch Org (specify browser)', middleText=None, printAtBottom=False)
	if (selection == len(items) - 1): return
		
	browserName = items[selection][0]
	browserChoice = browserName.lower()
	helper.startLoading("Opening Scratch Org in {}".format(browserName))

	output = helper.tryCommand(term=term, commands=["sfdx force:org:open -r --json"], clearBeforeShowingError=False, stopSpinnerAfterSuccess=False, printOutputAfterSuccess=False)

	if (not output[0]): # not failing

		jsonOutput = helper.loadJson(output[1][0])
		url = helper.ifKeyExists("url", jsonOutput["result"])	

		res = webbrowser.get(browserChoice).open_new_tab(url)
		if (res): helper.spinnerSuccess()
		else:
			menuHelper.clear(term, True, True, title, 'Open Scratch Org (specify browser)', None)
			helper.startLoading("Opening Scratch Org")
			helper.spinnerError()
			print("Either {} is not running, or it's not installed.".format(browserName))

	helper.pressToContinue(term)
Пример #7
0
def createOtherSubMenu(term):

    menuFormat = menuHelper.getDefaultFormat()
    submenu = []

    submenu.append(["Add Package Key", other.createPackageKey, menuFormat])
    submenu.append(
        ["Re-Import Dummy Data", other.reImportDummyData, menuFormat])
    return "Other Commands", submenu, menuFormat
Пример #8
0
def askUserForOrgs(term, lookingForRegularOrgs, text, subtitle, selectMultiple):
	root = "scratchOrgs"
	kind = "Scratch Orgs"
	
	if (lookingForRegularOrgs):
		root = "nonScratchOrgs"
		kind = "orgs"

	helper.startLoading("Loading {}".format(kind))
	output = helper.tryCommand(term=term, commands=["sfdx force:org:list --json"], clearBeforeShowingError=False, stopSpinnerAfterSuccess=True, printOutputAfterSuccess=False)

	if (output[0]):
		helper.pressToContinue(term)
		return

	jsonOutput = helper.loadJson(output[1][0])

	menuFormat = menuHelper.getDefaultFormat()
	items = []
	originalItems = []
	for row in jsonOutput['result'][root]:
		alias = helper.ifKeyExists('alias', row)
		username = helper.ifKeyExists('username', row)
		orgId = helper.ifKeyExists('orgId', row)
		expirationDate = helper.ifKeyExists('expirationDate', row)
		defaultMarker = helper.ifKeyExists('defaultMarker', row).replace('(U)', 'X').replace('(D)', 'X')
		
		if (defaultMarker != ''):
			if (helper.isMac()): defaultMarker = "✅ "
			else: defaultMarker = "✓"
		if (expirationDate != ''): expirationDate = '({})'.format(expirationDate)
		if (alias == ""): alias = username

		line = " ".join([alias, defaultMarker, expirationDate])
		items.append([line, None, menuFormat])
		originalItems.append(alias)
	
	if (len(items) == 0):
		menuHelper.clear(term, True, True, title, subtitle, None)
		print(helper.col("You have no active {}!".format(kind), [helper.c.r]))
		helper.pressToContinue(term)
		return True

	items.append(menuHelper.getReturnButton(2))
	
	if (selectMultiple):
		selected = menuHelper.giveUserChoicesWithMultipleAnswers(term=term, showHeader=True, showFooter=True, items=items, subtitle=subtitle, middleText=text, printAtBottom=False)
		
		values = []
		for item in selected:
			values.append(originalItems[item])

		return values
	else:
		selection = menuHelper.giveUserChoices(term=term, showHeader=True, showFooter=True, items=items, selection=0, subtitle=subtitle, middleText=text, printAtBottom=False)
		if (selection == len(originalItems)): return None
		return originalItems[selection]
Пример #9
0
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)