12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // ZGShellUtils.m
- // GJTools
- //
- // Created by zhuge on 15/11/6.
- // Copyright (c) 2015年 zhuge. All rights reserved.
- //
- #import "ZGShellUtils.h"
- @implementation ZGShellUtils
- +(void)execSync:(NSString *)cmd args:(NSArray *)args {
- NSTask *currentTask = [[NSTask alloc] init];
- [currentTask setLaunchPath:cmd];
- NSMutableDictionary *environmentDict = [NSMutableDictionary dictionaryWithDictionary:[[NSProcessInfo processInfo] environment]];
- NSString *path = [environmentDict objectForKey:@"PATH"];
- path = [NSString stringWithFormat:@"%@:%@", [[NSBundle mainBundle] pathForResource:@"ApkTools" ofType:nil], path];
- [environmentDict setValue:path forKey:@"PATH"];
- [environmentDict setValue:@"-Dfile.encoding=UTF-8" forKey:@"JAVA_TOOL_OPTIONS"];
- [currentTask setEnvironment:environmentDict];
-
- // Set arguments
- [currentTask setArguments:args];
-
- // Set output
- [currentTask setStandardOutput:[NSFileHandle fileHandleWithStandardOutput]];
- [currentTask setStandardError:[NSFileHandle fileHandleWithStandardError]];
-
- [currentTask launch];
- [currentTask waitUntilExit];
- }
- +(void)execSync:(NSString *)cmd args:(NSArray *)args data:(NSData *)data {
- NSTask *currentTask = [[NSTask alloc] init];
- [currentTask setLaunchPath:cmd];
- NSMutableDictionary *environmentDict = [NSMutableDictionary dictionaryWithDictionary:[[NSProcessInfo processInfo] environment]];
- NSString *path = [environmentDict objectForKey:@"PATH"];
- [environmentDict setValue:path forKey:@"PATH"];
- [environmentDict setValue:@"-Dfile.encoding=UTF-8" forKey:@"JAVA_TOOL_OPTIONS"];
- [currentTask setEnvironment:environmentDict];
-
- // Set arguments
- [currentTask setArguments:args];
- // set input
-
- currentTask.standardInput = [NSPipe pipe];
-
- [currentTask launch];
- [[currentTask.standardInput fileHandleForWriting] writeData:data];
- [currentTask waitUntilExit];
- }
- +(void)makeFileExecutable:(NSString *)filePath {
- [ZGShellUtils execSync:@"/bin/chmod" args:[NSArray arrayWithObjects:@"777", filePath, nil]];
- }
- +(void)execAsyn:(NSString *)cmd args:(NSArray *)args {
- NSTask *currentTask = [[NSTask alloc] init];
- [currentTask setLaunchPath:cmd];
- NSMutableDictionary *environmentDict = [NSMutableDictionary dictionaryWithDictionary:[[NSProcessInfo processInfo] environment]];
- NSString *path = [environmentDict objectForKey:@"PATH"];
- [environmentDict setValue:path forKey:@"PATH"];
- [environmentDict setValue:@"-Dfile.encoding=UTF-8" forKey:@"JAVA_TOOL_OPTIONS"];
- [currentTask setEnvironment:environmentDict];
-
- // Set arguments
- [currentTask setArguments:args];
- // set input
-
- [currentTask launch];
- }
- +(void)execInNewTerminalWindow:(NSString *)cmd {
- NSArray *args = @[cmd];
- NSString *scriptFileName = @"OpenTerminal";
- NSString *script = [NSString stringWithFormat:@"AppleScripts/%@", scriptFileName];
- if ([script hasSuffix:@"scpt"]) {
- script = [script stringByDeletingPathExtension];
- }
- NSString* path = [[NSBundle mainBundle] pathForResource:script ofType:@"scpt"];
- NSArray *cmd2 = [NSArray arrayWithObject:path];
- NSArray *new2 = [cmd2 arrayByAddingObjectsFromArray:args];
- [ZGShellUtils execSync:@"/usr/bin/osascript" args:new2];
- }
- @end
|