module Dev::Executables::Commands::Release
Public Instance Methods
release(command = nil, version = nil)
click to toggle source
Comandi per gestire l'apertura e la chiusura di un nuovo rilascio.
@param [String] command il comando da eseguire. @param [String] version la versione del rilascio.
@return [nil]
# File lib/dev/executables/commands/release.rb, line 13 def release(command = nil, version = nil) raise Dev::Executable::ExecutionError.new "Wrong command syntax: "\ "specify whether to open or close a release. "\ "Example: dev release open 1.0.0" unless command.in? [ 'open', 'close' ] version = version.to_s.squish if @project.valid_app? case command when 'open' then release_open(version) when 'close' then release_close(version) end end end
release_close(version)
click to toggle source
Chiude una release esistente.
@param [String] version la versione del rilascio.
@return [nil]
# File lib/dev/executables/commands/release.rb, line 76 def release_close(version) print "Preparing to close the release for app " print @project.current_app.teal print " with version " puts version.teal puts status = `git status` if status.include? "Changes not staged for commit:" raise Dev::Executable::ExecutionError.new "Your current branch has unstaged changes. Please "\ "commit or stash them before closing the release." end branches = `git branch -a` unless branches.include? ("release/#{version}\n") raise Dev::Executable::ExecutionError.new "No release for version '#{version}' could be found "\ "for this app's repository." end print "\tClosing.. " exec "git checkout master" exec "git merge --no-ff release/#{version}" exec "git tag -a #{version} -m \"release #{version}\"" git_output = exec "git push origin master" if git_output.include?('fatal') or git_output.include?('rejected') or git_output.include?('error') print "X\n".red puts "\t\tSomething went wrong, take a look at the output from git:".indianred puts "\t\t#{git_output.split("\n").map(&:squish).join("\n\t\t")}".indianred puts else print "√\n".green puts "\t\tDone. Output from git:".cadetblue puts "\t\t#{git_output.split("\n").map(&:squish).join("\n\t\t")}".cadetblue print "\tMerging release on develop.." exec "git checkout develop" exec "git merge --no-ff release/#{version}" git_output = exec "git push origin develop" if git_output.include?('fatal') or git_output.include?('rejected') or git_output.include?('error') print "X\n".red puts "\t\tSomething went wrong, take a look at the output from git:".indianred puts "\t\t#{git_output.split("\n").map(&:squish).join("\n\t\t")}".indianred puts else print "√\n".green puts "\t\tDone. Output from git:".cadetblue puts "\t\t#{git_output.split("\n").map(&:squish).join("\n\t\t")}".cadetblue puts end exec "git checkout master" end end
release_open(version)
click to toggle source
Apre una nuova release.
@param [String] version la versione del rilascio.
@return [nil]
# File lib/dev/executables/commands/release.rb, line 33 def release_open(version) print "Preparing to open a new release for app " print @project.current_app.teal print " with version " puts version.teal puts branches = `git branch -a` unless branches.include? ("develop\n") print "\tCreating develop branch.." exec "git checkout -b develop" exec "git add ." exec "git commit -m \"Dev: automatically created 'develop' branch\"" exec "git push -u origin develop" print "√\n".green puts end print "\tOpening.. " git_output = exec "git checkout -b release/#{version} develop" if git_output.include?('fatal') or git_output.include?('rejected') or git_output.include?('error') print "X\n".red puts "\t\tSomething went wrong, take a look at the output from git:".indianred puts "\t\t#{git_output.split("\n").map(&:squish).join("\n\t\t")}".indianred puts else print "√\n".green puts "\t\tDone. Output from git:".cadetblue puts "\t\t#{git_output.split("\n").map(&:squish).join("\n\t\t")}".cadetblue puts end print "\tBumping version to #{version}.. " @project.bump_app_version_to(version) print "√\n".green puts end