// // 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