休日の無駄の仕方にも良い無駄と悪い無駄があると思うんですよね。
本日お見せしますのは悪い無駄です。
# !/usr/bin/env swift
import Foundation
func argv() -> [String] {
return NSProcessInfo.processInfo().arguments.map{String($0)}
}
func read(path: String) -> String {
do {
return try String(
contentsOfFile: path,
encoding: NSUTF8StringEncoding)
} catch {
print("fuckin fail")
return "fail"
}
}
func write(path: String, content: String) {
do {
try content.writeToFile(
path,
atomically: true,
encoding: NSUTF8StringEncoding)
} catch {
print("fuckin fail")
}
}
func extractTrailingNumber(orig: NSString) -> String {
var ret: String = ""
let pattern = "^.+?([0-9]+)$"
do {
let re = try NSRegularExpression(
pattern: pattern,
options: NSRegularExpressionOptions.CaseInsensitive)
re.enumerateMatchesInString(
orig as String, options: [],
range: NSMakeRange(0, orig.length)) {
(result : NSTextCheckingResult?, _, _) in
for i in 0...result!.numberOfRanges - 1 {
let range = result!.rangeAtIndex(i)
ret = orig.substringWithRange(range)
}
}
} catch {
print("fuckin fail")
}
return ret
}
func cmd(cmd: String, args:[String]) -> String {
let pipe:NSPipe = NSPipe()
let task:NSTask = NSTask()
task.launchPath = cmd;
task.arguments = args;
task.standardOutput = pipe
task.launch()
let output = pipe.fileHandleForReading.readDataToEndOfFile()
let outputStr = NSString(data:output,encoding:NSUTF8StringEncoding)!
return outputStr as String
}
let branch = cmd("/usr/local/bin/git", args: ["name-rev", "--name-only", "HEAD"])
let issueNum = extractTrailingNumber(branch)
let arg_strs = argv()
let path = arg_strs[arg_strs.count - 2]
let orig = read(path)
write(path, content: "(refs #\(issueNum)) \(orig)")