Sha256: b5c902da76f58f3192ed375e16097025ede03cb1a5d7358779c1e24df7abb546

Contents?: true

Size: 1.83 KB

Versions: 6

Compression:

Stored size: 1.83 KB

Contents

module Frank
  module Publish

    class SCP
      def self.execute!
        exit_unless_configured

        puts "\nFrank is..."
        puts " - \033[32mExporting templates\033[0m"

        tmp_folder = "/tmp/frankexp-#{Frank.proj_name}"

        # remove stale folder if it exists
        FileUtils.rm_rf(tmp_folder) if File.exist?(tmp_folder)

        # dump the project in production mode to tmp folder
        Frank.export.path = tmp_folder
        Frank.export.silent = true
        Frank::Compile.export!

        puts " - \033[32mPublishing to:\033[0m `#{Frank.publish.host}:#{Frank.publish.path}'"

        ssh_options = {
          :password => Frank.publish.password,
          :port     => Frank.publish.port
        }

        current = nil

        # upload the files and report progress
        Net::SSH.start(Frank.publish.host, Frank.publish.username, ssh_options) do |ssh|
          ssh.scp.upload!("#{tmp_folder}/", Frank.publish.path, :recursive => true, :chunk_size => 2048) do |ch, name, sent, total|

            puts "   - #{name[tmp_folder.length..-1]}" unless name == current

            current = name
          end
        end

        # cleanup by removing tmp folder
        FileUtils.rm_rf(tmp_folder)

        puts "\n\033[32mPublish complete!\033[0m"
      end

      def self.exit_unless_configured
        required_settings = { :host => Frank.publish.host, :path => Frank.publish.path, :username => Frank.publish.username }
        should_exit       = false
        message           = "\033[31m"

        required_settings.each do |name, value|
          if value.nil?
            message << "Frank.publish.#{name} is required to publish. You can configure it in setup.rb\n"
            exiting = true
          end
        end

        message << "\033[0m"

        puts message and exit! if should_exit
      end

    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
frank-1.0.8 lib/frank/publish.rb
frank-1.0.7 lib/frank/publish.rb
frank-1.0.6 lib/frank/publish.rb
frank-1.0.5 lib/frank/publish.rb
frank-1.0.4 lib/frank/publish.rb
frank-1.0.3 lib/frank/publish.rb