Sha256: d122ef5959ca513b9f07bf02c8b72be353f31c2abc4638eac4143625637d1f70

Contents?: true

Size: 955 Bytes

Versions: 1

Compression:

Stored size: 955 Bytes

Contents

require "boop/version"
require "securerandom"

class Boop
  def initialize(base_url, repo_dir)
    @base_url = base_url
    @repo_dir = File.expand_path(repo_dir)
  end

  def paste(name, contents)
    save(:txt, name, contents)
  end

  def html(name, contents)
    save(:html, name, contents)
  end

  private
  def save(file_extension, name, contents)
    name ||= SecureRandom.uuid.tr('-', '')

    filename = "#{name}.#{file_extension}"

    path = File.join(@repo_dir, filename)

    File.open(path, 'w') { |f| f.write contents }

    commit_and_push!(filename)

    print_url(filename)
  end

  # TODO: Have commit message contain /p/blah or /h/blah, instead of just "blah".
  def commit_and_push!(filename)
    Dir.chdir(@repo_dir) do
      `git add #{filename} >/dev/null`
      `git commit -m "Add paste: #{filename}" >/dev/null`
      `git push >/dev/null`
    end
  end

  def print_url(filename)
    puts "#{@base_url}/#{filename}"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
boop-0.1.0 lib/boop.rb