def run(self):
        # find project.json by starting with the dir of the file being edited
        file_name = self.findProjectJsonFile()

        if file_name is None:
            print('Unable to locate project.json from file ['+self.window.active_view().file_name()+']')
            # todo: write an error to the status bar
            return

        try:
            json_file = json.load(open(file_name))
        except UnicodeDecodeError:
            msg = 'Unable to open "'+file_name+'" Please save the file with UTF-8 encoding and try again'
            print(msg)
            sublime.error_message(msg)
            retrun
        except IOError:
            print('project.json not found')
            return
        self.commands = []
        try:
            json_commands = json_file['commands']
            for command in json_commands:
                args = json_commands[command]
                if command.lower() == 'web' or command.lower() == 'kestrel':
                    url_regex = r'(?:--server.urls |server.urls=)(http:\/\/[^\s]+)'
                    match = re.search(url_regex, args)
                    try:
                        url = match.group(1)
                    except __HOLE__ as e:
                        url = 'http://localhost:5000'
                    self.commands.append(['dnx ' + command, 'Run server at ' + url])
                else:
                    self.commands.append(['dnx ' + command, args])
        except LookupError:
            pass
        self.commands.append(['dnu restore', 'Restore packages'])
        self.commands.append(['dnu pack', 'Bundle application for deployment'])
        self.commands.append(['dnu build', 'Build NuGet packages for the project in given directory'])
        self.window.show_quick_panel(self.commands, self.commandlist)
dataset/ETHPy150Open OmniSharp/Kulture/Kulture.py/KRunCommand.run