Sha256: 29e223769b7850740dd34c0a4524b7e48c902dc1df9546d72d823dd8d89c1b70
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true module JekyllPush # # class Branch attr_reader :target # @param target [String] the name of the Git branch to deploy to def initialize(target) @target = JekyllPush::Utils.slugify target @time = Time.now.strftime('%H:%M on %Y-%m-%d') (class << self; include JekyllPush::Travis; end) if on_travis? (class << self; include JekyllPush::Local; end) if local? @commit = commit @origin = origin @msg = msg raise JekyllPush::Error::NoOrigin, 'No remote origin was found for the project GitHub repository.' if @origin.empty? end # # @return [Boolean] def on_travis? !!ENV.fetch('CI', false) end # # @return [Boolean] def local? !on_travis? end # # @return [Array] def git_commands ['git init && git add .', "git commit -m '#{@commit}'", "git remote add origin #{@origin}", "git push origin master:refs/heads/#{@target} --force"] end # # @return [Nil] def push(dir) files = Dir.glob "#{dir}/**/*" raise JekyllPush::Error::NoFilesBuilt, "Found no files inside site directory '#{dir}' to push." if files.empty? puts Rainbow("\nFound the following _site files:").cyan pretty_list files puts Rainbow(@msg).cyan Dir.chdir dir File.open('.info', 'w') { |f| f.write @time } git_commands.each { |cmd| system_try cmd } end # # @return [Nil] def pretty_list(items) items.each { |i| puts "\t+ #{i.strip}" } end # # @return [Nil] def system_try(command) puts Rainbow("\nTrying `#{command}`").cyan success = system command return if success raise JekyllPush::Error::SystemCall, Rainbow("JekyllPush Failed on command '#{command}'.") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jekyll_push-0.1.1 | lib/jekyll_push/branch.rb |