mirror of
https://github.com/Morantron/tmux-fingers.git
synced 2024-06-26 07:29:11 +02:00
shitty dev/release script
This commit is contained in:
parent
03f0048468
commit
3c7c6a8673
77
dev/release.cr
Normal file
77
dev/release.cr
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
require "semantic_version"
|
||||||
|
require "yaml"
|
||||||
|
|
||||||
|
struct ShardFile
|
||||||
|
include YAML::Serializable
|
||||||
|
include YAML::Serializable::Unmapped
|
||||||
|
|
||||||
|
property version : String
|
||||||
|
end
|
||||||
|
|
||||||
|
current_version = SemanticVersion.parse(`shards version`.chomp)
|
||||||
|
current_branch = `git symbolic-ref --short HEAD`.chomp
|
||||||
|
pending_changes = `git status -s`.chomp
|
||||||
|
|
||||||
|
if current_branch != "develop"
|
||||||
|
puts "This script should be ran from develop branch"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if pending_changes != ""
|
||||||
|
puts "There are uncommited changes"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Which component you want to bump? major.minor.patch"
|
||||||
|
print "> "
|
||||||
|
|
||||||
|
component = gets
|
||||||
|
|
||||||
|
puts "Bumping #{component} in #{current_version}"
|
||||||
|
|
||||||
|
next_version = case component
|
||||||
|
when "major"
|
||||||
|
current_version.bump_major
|
||||||
|
when "minor"
|
||||||
|
current_version.bump_minor
|
||||||
|
when "patch"
|
||||||
|
current_version.bump_patch
|
||||||
|
else
|
||||||
|
current_version.bump_patch
|
||||||
|
end
|
||||||
|
|
||||||
|
shard = ShardFile.from_yaml(File.read("shard.yml"))
|
||||||
|
shard.version = next_version.to_s
|
||||||
|
|
||||||
|
File.write("shard.yml", shard.to_yaml)
|
||||||
|
|
||||||
|
current_date = Time.local.to_s("%d %b %Y")
|
||||||
|
|
||||||
|
`git add shard.yml`
|
||||||
|
`git commit -am "bump version in shard.yml"`
|
||||||
|
|
||||||
|
content_to_prepend = "## #{next_version.to_s} - #{current_date}\n\nEDIT THIS:\n\n#{`git log --oneline #{current_version}..@`.chomp}\n\n"
|
||||||
|
|
||||||
|
original_content = File.read("CHANGELOG.md")
|
||||||
|
File.write("CHANGELOG.md", content_to_prepend + original_content)
|
||||||
|
|
||||||
|
Process.run(ENV["EDITOR"], args: ["CHANGELOG.md"], input: :inherit, output: :inherit, error: :inherit)
|
||||||
|
|
||||||
|
`git add CHANGELOG.md`
|
||||||
|
`git commit -am 'updated CHANGELOG.md`
|
||||||
|
|
||||||
|
print "Confirm release? Y/n"
|
||||||
|
answer = gets
|
||||||
|
|
||||||
|
if answer == "n"
|
||||||
|
puts "Canceling release"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
`git checkout master`
|
||||||
|
`git merge develop`
|
||||||
|
`git tag #{next_version.to_s}`
|
||||||
|
|
||||||
|
puts "Run the following command to push the release"
|
||||||
|
puts ""
|
||||||
|
puts "git push && git push --tags"
|
Loading…
Reference in New Issue
Block a user