git-workflow/cmd/feature.ab

66 lines
1.5 KiB
Text

import * from "../config.ab"
import * from "../git/branch.ab"
fun branch(feature: Text): Text {
let prefix = get_feature_prefix()
return "{prefix}{feature}"
}
fun feature_start(feature: Text, description: Text): Null {
let branch = branch(feature)
unsafe branch_create(branch, get_dev_branch())
unsafe branch_set_description(branch, description)
}
fun feature_checkout(feature: Text): Null {
unsafe branch_checkout(branch(feature))
}
fun feature_publish(feature: Text): Null {
unsafe branch_push(
branch(feature),
get_push_remote()
)
}
fun feature_finish(feature: Text): Null {
echo "Finish feature {feature}"
}
fun feature_delete(feature: Text): Null {
let dev_branch = get_dev_branch()
let branch = branch(feature)
if branch_get_current() == dev_branch {
branch_checkout(dev_branch)
}
branch_delete(branch)
}
fun feature_rebase(feature: Text): Null {
echo "Rebase feature {feature}"
}
fun help(args: [Text]): Null {
echo "Feature help"
}
pub fun feature_cmd(args: [Text]): Null {
let cmd = args[1]
let feature = args[2]
if {
cmd == "": help(args)
cmd == "start": feature_start(feature, args[3])
cmd == "checkout": feature_checkout(feature)
cmd == "publish": feature_publish(feature)
cmd == "finish": feature_finish(feature)
cmd == "rebase": feature_rebase(feature)
cmd == "delete": feature_delete(feature)
else: echo "Unknown command feature '{cmd}'"
}
}