diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPConstants.h | 7 | ||||
-rw-r--r-- | Source/SPConstants.m | 70 | ||||
-rw-r--r-- | Source/SPStringAdditions.m | 21 |
3 files changed, 61 insertions, 37 deletions
diff --git a/Source/SPConstants.h b/Source/SPConstants.h index 64003bad..da17cf78 100644 --- a/Source/SPConstants.h +++ b/Source/SPConstants.h @@ -433,6 +433,12 @@ extern NSString *SPBundleInputSourceEntireContent; extern NSString *SPBundleInputSourceCurrentWord; extern NSString *SPBundleInputSourceCurrentQuery; extern NSString *SPBundleInputSourceCurrentLine; +extern NSString *SPBundleInputSourceSelectedTableRowsAsTab; +extern NSString *SPBundleInputSourceSelectedTableRowsAsCsv; +extern NSString *SPBundleInputSourceSelectedTableRowsAsSqlInsert; +extern NSString *SPBundleInputSourceTableRowsAsTab; +extern NSString *SPBundleInputSourceTableRowsAsCsv; +extern NSString *SPBundleInputSourceTableRowsAsSqlInsert; extern NSString *SPBundleInputSourceNone; extern NSString *SPBundleOutputActionNone; extern NSString *SPBundleOutputActionInsertAsText; @@ -455,6 +461,7 @@ extern NSString *SPBundleInternPathToFileKey; extern NSString *SPBundleInternKeyEquivalentKey; extern NSString *SPBundleFileName; extern NSString *SPBundleTaskInputFilePath; +extern NSString *SPBundleTaskScriptCommandFilePath; // sequel URL scheme extern NSString *SPURLSchemeQueryInputPathHeader; diff --git a/Source/SPConstants.m b/Source/SPConstants.m index f0277c72..892941cf 100644 --- a/Source/SPConstants.m +++ b/Source/SPConstants.m @@ -243,37 +243,45 @@ NSString *SPFavoriteSSLCACertFileLocationEnabledKey = @"sslCACertFileLocati NSString *SPFavoriteSSLCACertFileLocationKey = @"sslCACertFileLocation"; // Bundle Files and Bundle Editor -NSString *SPBundleScopeQueryEditor = @"editor"; -NSString *SPBundleScopeDataTable = @"datatable"; -NSString *SPBundleScopeInputField = @"inputfield"; -NSString *SPBundleScopeGeneral = @"general"; -NSString *SPBundleInputSourceSelectedText = @"selectedtext"; -NSString *SPBundleInputSourceEntireContent = @"entirecontent"; -NSString *SPBundleInputSourceCurrentWord = @"currentword"; -NSString *SPBundleInputSourceCurrentQuery = @"currentquery"; -NSString *SPBundleInputSourceCurrentLine = @"currentline"; -NSString *SPBundleInputSourceNone = @"none"; -NSString *SPBundleOutputActionNone = @"none"; -NSString *SPBundleOutputActionInsertAsText = @"insertastext"; -NSString *SPBundleOutputActionInsertAsSnippet = @"insertassnippet"; -NSString *SPBundleOutputActionReplaceSelection = @"replaceselection"; -NSString *SPBundleOutputActionReplaceContent = @"replacecontent"; -NSString *SPBundleOutputActionShowAsTextTooltip = @"showastexttooltip"; -NSString *SPBundleOutputActionShowAsHTMLTooltip = @"showashtmltooltip"; -NSString *SPBundleFileCommandKey = @"command"; -NSString *SPBundleFileScopeKey = @"scope"; -NSString *SPBundleFileNameKey = @"name"; -NSString *SPBundleFileCategoryKey = @"category"; -NSString *SPBundleFileInputSourceKey = @"input"; -NSString *SPBundleFileInputSourceFallBackKey = @"input_fallback"; -NSString *SPBundleFileOutputActionKey = @"output"; -NSString *SPBundleFileKeyEquivalentKey = @"keyEquivalent"; -NSString *SPBundleFileTooltipKey = @"tooltip"; -NSString *SPBundleInternLabelKey = @"label"; -NSString *SPBundleInternPathToFileKey = @"path"; -NSString *SPBundleInternKeyEquivalentKey = @"keyEquivalent"; -NSString *SPBundleFileName = @"info.plist"; -NSString *SPBundleTaskInputFilePath = @"/tmp/SP_BUNDLE_TASK_INPUT"; +NSString *SPBundleScopeQueryEditor = @"editor"; +NSString *SPBundleScopeDataTable = @"datatable"; +NSString *SPBundleScopeInputField = @"inputfield"; +NSString *SPBundleScopeGeneral = @"general"; +NSString *SPBundleInputSourceSelectedText = @"selectedtext"; +NSString *SPBundleInputSourceEntireContent = @"entirecontent"; +NSString *SPBundleInputSourceCurrentWord = @"currentword"; +NSString *SPBundleInputSourceCurrentQuery = @"currentquery"; +NSString *SPBundleInputSourceCurrentLine = @"currentline"; +NSString *SPBundleInputSourceSelectedTableRowsAsTab = @"selectedtablerowsastab"; +NSString *SPBundleInputSourceSelectedTableRowsAsCsv = @"selectedtablerowsascsv"; +NSString *SPBundleInputSourceSelectedTableRowsAsSqlInsert = @"selectedtablerowsassqlinsert"; +NSString *SPBundleInputSourceTableRowsAsTab = @"tablerowsastab"; +NSString *SPBundleInputSourceTableRowsAsCsv = @"tablerowsascsv"; +NSString *SPBundleInputSourceTableRowsAsSqlInsert = @"tablerowsassqlinsert"; +NSString *SPBundleInputSourceNone = @"none"; +NSString *SPBundleOutputActionNone = @"none"; +NSString *SPBundleOutputActionInsertAsText = @"insertastext"; +NSString *SPBundleOutputActionInsertAsSnippet = @"insertassnippet"; +NSString *SPBundleOutputActionReplaceSelection = @"replaceselection"; +NSString *SPBundleOutputActionReplaceContent = @"replacecontent"; +NSString *SPBundleOutputActionShowAsTextTooltip = @"showastexttooltip"; +NSString *SPBundleOutputActionShowAsHTMLTooltip = @"showashtmltooltip"; +NSString *SPBundleFileCommandKey = @"command"; +NSString *SPBundleFileScopeKey = @"scope"; +NSString *SPBundleFileNameKey = @"name"; +NSString *SPBundleFileCategoryKey = @"category"; +NSString *SPBundleFileInputSourceKey = @"input"; +NSString *SPBundleFileInputSourceFallBackKey = @"input_fallback"; +NSString *SPBundleFileOutputActionKey = @"output"; +NSString *SPBundleFileKeyEquivalentKey = @"keyEquivalent"; +NSString *SPBundleFileTooltipKey = @"tooltip"; +NSString *SPBundleInternLabelKey = @"label"; +NSString *SPBundleInternPathToFileKey = @"path"; +NSString *SPBundleInternKeyEquivalentKey = @"keyEquivalent"; + +NSString *SPBundleFileName = @"command.plist"; +NSString *SPBundleTaskInputFilePath = @"/tmp/SP_BUNDLE_TASK_INPUT"; +NSString *SPBundleTaskScriptCommandFilePath = @"/tmp/SP_SCRIPT_COMMAND"; // sequel URL scheme NSString *SPURLSchemeQueryInputPathHeader = @"/tmp/SP_QUERY_"; diff --git a/Source/SPStringAdditions.m b/Source/SPStringAdditions.m index 7f93659e..3198f2ff 100644 --- a/Source/SPStringAdditions.m +++ b/Source/SPStringAdditions.m @@ -417,12 +417,15 @@ BOOL userTerminated = NO; BOOL redirectForScript = NO; + BOOL isDir = NO; + NSMutableArray *scriptHeaderArguments = [NSMutableArray array]; NSString *scriptPath = @""; - NSString *scriptContentPath = @"/tmp/SP_SCRIPT_COMMAND"; - [[NSFileManager defaultManager] removeItemAtPath:scriptContentPath error:nil]; + [[NSFileManager defaultManager] removeItemAtPath:SPBundleTaskScriptCommandFilePath error:nil]; + // Parse first line for magic header #! ; if found save the script content and run the command after #! with that file. + // This allows to write perl, ruby, osascript scripts natively. if([self length] > 3 && [self hasPrefix:@"#!"] && [shellEnvironment objectForKey:@"SP_BUNDLE_PATH"]) { NSRange firstLineRange = NSMakeRange(2, [self rangeOfString:@"\n"].location - 2); @@ -437,14 +440,13 @@ [scriptHeaderArguments removeObject:scriptPath]; } - BOOL isDir = NO; if([scriptPath hasPrefix:@"/"] && [[NSFileManager defaultManager] fileExistsAtPath:scriptPath isDirectory:&isDir] && !isDir) { NSString *script = [self substringWithRange:NSMakeRange(NSMaxRange(firstLineRange), [self length] - NSMaxRange(firstLineRange))]; NSError *writeError = nil; - [script writeToFile:scriptContentPath atomically:YES encoding:NSUTF8StringEncoding error:writeError]; + [script writeToFile:SPBundleTaskScriptCommandFilePath atomically:YES encoding:NSUTF8StringEncoding error:writeError]; if(writeError == nil) { redirectForScript = YES; - [scriptHeaderArguments insertObject:scriptContentPath atIndex:0]; + [scriptHeaderArguments insertObject:SPBundleTaskScriptCommandFilePath atIndex:0]; } else { NSBeep(); NSLog(@"Couldn't write script file."); @@ -475,6 +477,11 @@ } [doc setProcessID:processID]; + [theEnv setObject:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryInputPathHeader, processID] forKey:@"SP_QUERY_FILE_PATH"]; + [theEnv setObject:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, processID] forKey:@"SP_QUERY_RESULT_FILE_PATH"]; + [theEnv setObject:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, processID] forKey:@"SP_QUERY_RESULT_STATUS_FILE_PATH"]; + [theEnv setObject:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultMetaPathHeader, processID] forKey:@"SP_QUERY_RESULT_META_FILE_PATH"]; + if([doc shellVariables]) [theEnv addEntriesFromDictionary:[doc shellVariables]]; @@ -483,6 +490,8 @@ if(path != nil) [bashTask setCurrentDirectoryPath:path]; + else if([shellEnvironment objectForKey:@"SP_BUNDLE_PATH"] && [[NSFileManager defaultManager] fileExistsAtPath:[shellEnvironment objectForKey:@"SP_BUNDLE_PATH"] isDirectory:&isDir] && isDir) + [bashTask setCurrentDirectoryPath:[shellEnvironment objectForKey:@"SP_BUNDLE_PATH"]]; if(redirectForScript) [bashTask setArguments:scriptHeaderArguments]; @@ -530,7 +539,7 @@ } if(redirectForScript) - [[NSFileManager defaultManager] removeItemAtPath:scriptContentPath error:nil]; + [[NSFileManager defaultManager] removeItemAtPath:SPBundleTaskScriptCommandFilePath error:nil]; // If return from bash re-activate Sequel Pro [NSApp activateIgnoringOtherApps:YES]; |