0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.git/hooks/prepare-commit-msg in swift

Last updated at Posted at 2016-03-05

休日の無駄の仕方にも良い無駄と悪い無駄があると思うんですよね。
本日お見せしますのは悪い無駄です。

# !/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)")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?