def __init__(self, app_path, shortcut, prefix, env_name, env_setup_cmd):
        # Store the required values out of the shortcut definition.
        self.app_path = app_path
        self.prefix = prefix
        self.name = shortcut['name']
        self.cmd = shortcut['cmd']
        self.icns = shortcut['icns']
        self.env_name = env_name
        self.env_setup_cmd = env_setup_cmd


        for a, b in [
            ('${BIN_DIR}', join(prefix, 'bin')),
            ('${MENU_DIR}', join(prefix, 'Menu')),
            ]:
            self.cmd = self.cmd.replace(a, b)
            self.icns = self.icns.replace(a, b)

        # Calculate some derived values just once.
        self.contents_dir = join(self.app_path, 'Contents')
        self.resources_dir = join(self.contents_dir, 'Resources')
        self.macos_dir = join(self.contents_dir, 'MacOS')
        self.executable = self.name
        self.executable_path = join(self.macos_dir, self.executable)
Required:
dataset/ETHPy150Open ContinuumIO/menuinst/menuinst/darwin.py/Application.__init__