ZGShellUtils.m 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //
  2. // ZGShellUtils.m
  3. // GJTools
  4. //
  5. // Created by zhuge on 15/11/6.
  6. // Copyright (c) 2015年 zhuge. All rights reserved.
  7. //
  8. #import "ZGShellUtils.h"
  9. @implementation ZGShellUtils
  10. +(void)execSync:(NSString *)cmd args:(NSArray *)args {
  11. NSTask *currentTask = [[NSTask alloc] init];
  12. [currentTask setLaunchPath:cmd];
  13. NSMutableDictionary *environmentDict = [NSMutableDictionary dictionaryWithDictionary:[[NSProcessInfo processInfo] environment]];
  14. NSString *path = [environmentDict objectForKey:@"PATH"];
  15. path = [NSString stringWithFormat:@"%@:%@", [[NSBundle mainBundle] pathForResource:@"ApkTools" ofType:nil], path];
  16. [environmentDict setValue:path forKey:@"PATH"];
  17. [environmentDict setValue:@"-Dfile.encoding=UTF-8" forKey:@"JAVA_TOOL_OPTIONS"];
  18. [currentTask setEnvironment:environmentDict];
  19. // Set arguments
  20. [currentTask setArguments:args];
  21. // Set output
  22. [currentTask setStandardOutput:[NSFileHandle fileHandleWithStandardOutput]];
  23. [currentTask setStandardError:[NSFileHandle fileHandleWithStandardError]];
  24. [currentTask launch];
  25. [currentTask waitUntilExit];
  26. }
  27. +(void)execSync:(NSString *)cmd args:(NSArray *)args data:(NSData *)data {
  28. NSTask *currentTask = [[NSTask alloc] init];
  29. [currentTask setLaunchPath:cmd];
  30. NSMutableDictionary *environmentDict = [NSMutableDictionary dictionaryWithDictionary:[[NSProcessInfo processInfo] environment]];
  31. NSString *path = [environmentDict objectForKey:@"PATH"];
  32. [environmentDict setValue:path forKey:@"PATH"];
  33. [environmentDict setValue:@"-Dfile.encoding=UTF-8" forKey:@"JAVA_TOOL_OPTIONS"];
  34. [currentTask setEnvironment:environmentDict];
  35. // Set arguments
  36. [currentTask setArguments:args];
  37. // set input
  38. currentTask.standardInput = [NSPipe pipe];
  39. [currentTask launch];
  40. [[currentTask.standardInput fileHandleForWriting] writeData:data];
  41. [currentTask waitUntilExit];
  42. }
  43. +(void)makeFileExecutable:(NSString *)filePath {
  44. [ZGShellUtils execSync:@"/bin/chmod" args:[NSArray arrayWithObjects:@"777", filePath, nil]];
  45. }
  46. +(void)execAsyn:(NSString *)cmd args:(NSArray *)args {
  47. NSTask *currentTask = [[NSTask alloc] init];
  48. [currentTask setLaunchPath:cmd];
  49. NSMutableDictionary *environmentDict = [NSMutableDictionary dictionaryWithDictionary:[[NSProcessInfo processInfo] environment]];
  50. NSString *path = [environmentDict objectForKey:@"PATH"];
  51. [environmentDict setValue:path forKey:@"PATH"];
  52. [environmentDict setValue:@"-Dfile.encoding=UTF-8" forKey:@"JAVA_TOOL_OPTIONS"];
  53. [currentTask setEnvironment:environmentDict];
  54. // Set arguments
  55. [currentTask setArguments:args];
  56. // set input
  57. [currentTask launch];
  58. }
  59. +(void)execInNewTerminalWindow:(NSString *)cmd {
  60. NSArray *args = @[cmd];
  61. NSString *scriptFileName = @"OpenTerminal";
  62. NSString *script = [NSString stringWithFormat:@"AppleScripts/%@", scriptFileName];
  63. if ([script hasSuffix:@"scpt"]) {
  64. script = [script stringByDeletingPathExtension];
  65. }
  66. NSString* path = [[NSBundle mainBundle] pathForResource:script ofType:@"scpt"];
  67. NSArray *cmd2 = [NSArray arrayWithObject:path];
  68. NSArray *new2 = [cmd2 arrayByAddingObjectsFromArray:args];
  69. [ZGShellUtils execSync:@"/usr/bin/osascript" args:new2];
  70. }
  71. @end