def call(operation, use_mm_panel=True, **kwargs): settings = sublime.load_settings('mavensmate.sublime-settings') #if the mm tool is missing, we can't do anything if not os.path.exists(settings.get('mm_location')) and settings.get('mm_development_mode') == False: active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Could not find MavensMate.app. Download MavensMate.app from http://www.joe-ferraro.com/mavensmate/MavensMate.app and place in /Applications. Also, please ensure mm_app_location and mm_location are set properly in Sublime Text (MavensMate --> Settings --> User)' printer.write('\n'+message+'\n') return #if it's a legacy project, need to intercept the call and open the upgrade ui #TODO: this should probably be handled in mm if operation != 'new_project' and operation != 'new_project_from_existing_directory' and util.is_project_legacy() == True: operation = 'upgrade_project' threads = [] thread = MavensMateTerminalCall( operation, project_name=util.get_project_name(kwargs.get('context', None)), active_file=util.get_active_file(), params=kwargs.get('params', None), context=kwargs.get('context', None), message=kwargs.get('message', None), use_mm_panel=use_mm_panel, process_id=util.get_random_string(10), mm_location=settings.get('mm_location'), callback=kwargs.get('callback', None) ) if operation == 'index_apex': thread.daemon = True threads.append(thread) thread.start()
def create(self, files): for file in files: fileName, fileExtension = os.path.splitext(file) if fileExtension != '.resource': sublime.message_dialog("You can only create resource bundles for static resources") return printer = PanelPrinter.get(self.window.id()) printer.show() printer.write('\nCreating Resource Bundle(s)\n') if not os.path.exists(util.mm_project_directory()+'/resource-bundles'): os.makedirs(util.mm_project_directory()+'/resource-bundles') for file in files: fileName, fileExtension = os.path.splitext(file) baseFileName = fileName.split("/")[-1] if os.path.exists(os.path.join(util.mm_project_directory(),'resource-bundles',baseFileName+fileExtension)): printer.write('[OPERATION FAILED]: The resource bundle already exists\n') return cmd = 'unzip \''+file+'\' -d \''+util.mm_project_directory()+'/resource-bundles/'+baseFileName+fileExtension+'\'' os.system(cmd) printer.write('[Resource bundle creation complete]\n') printer.hide() util.send_usage_statistics('Create Resource Bundle')
def create(self, files): for file in files: fileName, fileExtension = os.path.splitext(file) if fileExtension != '.resource': sublime.message_dialog( "You can only create resource bundles for static resources") return printer = PanelPrinter.get(self.window.id()) printer.show() printer.write('\nCreating Resource Bundle(s)\n') if not os.path.exists(util.mm_project_directory() + '/resource-bundles'): os.makedirs(util.mm_project_directory() + '/resource-bundles') for file in files: fileName, fileExtension = os.path.splitext(file) baseFileName = fileName.split("/")[-1] if os.path.exists( os.path.join(util.mm_project_directory(), 'resource-bundles', baseFileName + fileExtension)): printer.write( '[OPERATION FAILED]: The resource bundle already exists\n') return cmd = 'unzip \'' + file + '\' -d \'' + util.mm_project_directory( ) + '/resource-bundles/' + baseFileName + fileExtension + '\'' os.system(cmd) printer.write('[Resource bundle creation complete]\n') printer.hide() util.send_usage_statistics('Create Resource Bundle')
def call(operation, use_mm_panel=True, **kwargs): settings = sublime.load_settings('mavensmate.sublime-settings') #if the mm tool is missing, we can't do anything if not os.path.exists(settings.get('mm_location')) and settings.get( 'mm_development_mode') == False: active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Could not find MavensMate.app. Download MavensMate.app from http://www.joe-ferraro.com/mavensmate/MavensMate.app and place in /Applications. Also, please ensure mm_app_location and mm_location are set properly in Sublime Text (MavensMate --> Settings --> User)' printer.write('\n' + message + '\n') return #if it's a legacy project, need to intercept the call and open the upgrade ui #TODO: this should probably be handled in mm if operation != 'new_project' and operation != 'new_project_from_existing_directory' and util.is_project_legacy( ) == True: operation = 'upgrade_project' threads = [] thread = MavensMateTerminalCall(operation, project_name=util.get_project_name( kwargs.get('context', None)), active_file=util.get_active_file(), params=kwargs.get('params', None), context=kwargs.get('context', None), message=kwargs.get('message', None), use_mm_panel=use_mm_panel, process_id=util.get_random_string(10), mm_location=settings.get('mm_location'), callback=kwargs.get('callback', None)) if operation == 'index_apex': thread.daemon = True threads.append(thread) thread.start()
def create(self, files, refresh=False): for file in files: fileName, fileExtension = os.path.splitext(file) if fileExtension != '.resource': sublime.message_dialog("You can only create resource bundles for static resources") return printer = PanelPrinter.get(self.window.id()) printer.show() if refresh: printer.write('\nRefreshing Resource Bundle(s)\n') else: printer.write('\nCreating Resource Bundle(s)\n') if not os.path.exists(os.path.join(util.mm_project_directory(),'resource-bundles')): os.makedirs(os.path.join(util.mm_project_directory(),'resource-bundles')) for f in files: fileName, fileExtension = os.path.splitext(f) if sys.platform == "win32": baseFileName = fileName.split("\\")[-1] else: baseFileName = fileName.split("/")[-1] if not refresh: if os.path.exists(os.path.join(util.mm_project_directory(),'resource-bundles',baseFileName+fileExtension)): printer.write('[OPERATION FAILED]: The resource bundle already exists\n') return if sys.platform == "win32": fz = zipfile.ZipFile(f, 'r') for fileinfo in fz.infolist(): path = os.path.join(util.mm_project_directory(),'resource-bundles',baseFileName+fileExtension) directories = fileinfo.filename.split('/') #directories = fileinfo.filename.split('\\') for directory in directories: if directory.startswith('__MACOSX'): continue path = os.path.join(path, directory) if directory == directories[-1]: break # the file if not os.path.exists(path): os.makedirs(path) try: outputfile = open(path, "wb") shutil.copyfileobj(fz.open(fileinfo.filename), outputfile) except: pass else: cmd = 'unzip \''+f+'\' -d \''+util.mm_project_directory()+'/resource-bundles/'+baseFileName+fileExtension+'\'' os.system(cmd) printer.write('[Resource bundle creation complete]\n') printer.hide() util.send_usage_statistics('Create Resource Bundle')
def __init__(self, operation, **kwargs): self.operation = operation #operation being requested self.project_name = kwargs.get('project_name', None) self.active_file = kwargs.get('active_file', None) self.params = kwargs.get('params', None) self.context = kwargs.get('context', None) self.mm_location = kwargs.get('mm_location', None) self.message = kwargs.get('message', None) self.view = None self.window = None self.printer = None self.process_id = time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) self.use_mm_panel = kwargs.get('use_mm_panel', False) self.result = None #result of operation self.callback = handle_result self.alt_callback = kwargs.get( 'callback', None) #this is a callback requested by a command self.window_id = None self.status_region = None self.settings = sublime.load_settings('mavensmate.sublime-settings') self.define_sublime_context() self.printer = PanelPrinter.get(self.window.id()) if self.message == None: self.message = command_helper.get_message(self.params, self.operation) if self.project_name == None: self.project_name = util.get_project_name(self.window) if self.use_mm_panel: self.printer.show() self.printer.writeln(' ') self.printer.writeln( ' ' ) self.printer.writeln('Operation: ' + self.message) self.printer.writeln('Timestamp: ' + self.process_id) self.printer.writeln(' Result: ') elif 'index' not in self.operation: ThreadProgress(self, self.message, 'Operation complete') threading.Thread.__init__(self)
def __init__(self, operation, **kwargs): self.operation = operation #operation being requested self.project_name = kwargs.get('project_name', None) self.active_file = kwargs.get('active_file', None) self.params = kwargs.get('params', None) self.context = kwargs.get('context', None) self.mm_location = kwargs.get('mm_location', None) self.message = kwargs.get('message', None) self.view = None self.window = None self.printer = None self.process_id = time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) self.use_mm_panel = kwargs.get('use_mm_panel', False) self.result = None #result of operation self.callback = handle_result self.alt_callback = kwargs.get('callback', None) #this is a callback requested by a command self.window_id = None self.status_region = None self.settings = sublime.load_settings('mavensmate.sublime-settings') self.define_sublime_context() self.printer = PanelPrinter.get(self.window.id()) if self.message == None: self.message = command_helper.get_message(self.params, self.operation) if self.project_name == None: self.project_name = util.get_project_name(self.window) if self.use_mm_panel: self.printer.show() self.printer.writeln(' ') self.printer.writeln(' ') self.printer.writeln('Operation: '+self.message) self.printer.writeln('Timestamp: '+self.process_id) self.printer.writeln(' Result: ') elif 'index' not in self.operation: ThreadProgress(self, self.message, 'Operation complete') threading.Thread.__init__(self)
def call(operation, use_mm_panel=True, **kwargs): debug('Calling mm_interface') debug('OPERATION: '+operation) debug(kwargs) settings = sublime.load_settings('mavensmate.sublime-settings') if settings.get("mm_debug_mode") and not os.path.isfile(settings.get("mm_python_location")): active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Could not find your system python install. Please set the location at mm_python_location' printer.write('\n'+message+'\n') return if 'darwin' in sys.platform: if not os.path.isfile(settings.get('mm_location')) and settings.get('mm_debug_mode') == False: active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Could not find MavensMate.app. Download MavensMate.app from mavensmate.com and place in /Applications. Also, please ensure mm_app_location and mm_location are set properly in Sublime Text (MavensMate --> Settings --> User)' printer.write('\n'+message+'\n') return if 'linux' in sys.platform: if not os.path.isfile(settings.get('mm_subl_location')): active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Could not locate Sublime Text "subl" executable. Please set mm_subl_location to location of "subl" on the disk.' printer.write('\n'+message+'\n') return if 'win32' in sys.platform: if not os.path.isfile(settings.get('mm_windows_subl_location')): active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Could not locate Sublime Text. Please set mm_windows_subl_location to location of sublime_text.exe on the disk.' printer.write('\n'+message+'\n') return if not util.valid_workspace(): active_window_id = sublime.active_window().id() printer = PanelPrinter.get(active_window_id) printer.show() message = '[OPERATION FAILED]: Please ensure mm_workspace is set to existing location(s) on your local drive' printer.write('\n'+message+'\n') return window, view = util.get_window_and_view_based_on_context(kwargs.get('context', None)) #if it's a legacy project, need to intercept the call and open the upgrade ui #TODO: this should probably be handled in mm if operation != 'new_project' and operation != 'new_project_from_existing_directory' and util.is_project_legacy(window) == True: operation = 'upgrade_project' threads = [] thread = MavensMateTerminalCall( operation, project_name=util.get_project_name(window), active_file=util.get_active_file(), params=kwargs.get('params', None), context=kwargs.get('context', None), message=kwargs.get('message', None), use_mm_panel=use_mm_panel, process_id=util.get_random_string(10), mm_location=settings.get('mm_location'), callback=kwargs.get('callback', None) ) if operation == 'index_apex': thread.daemon = True threads.append(thread) thread.start()