pastie-api 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/pastie CHANGED
@@ -3,24 +3,44 @@
3
3
  lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4
4
  $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
5
5
 
6
+ require 'optparse'
6
7
  require 'pastie-api'
7
8
  require 'pastie-api/console'
9
+ require 'pastie-api/history'
8
10
 
9
- unless ARGV.empty?
10
- ARGV.each do |f|
11
- path = File.expand_path(f)
12
- if File.exists?(path)
13
- p = Pastie.create(File.read(path))
14
- unless p.nil?
15
- puts p.link.green
11
+ history = Pastie::History.new
12
+ options = {:private => true}
13
+
14
+ optparse = OptionParser.new do |opts|
15
+ opts.banner = "Usage: pastie [options] file1 file2 ... fileN"
16
+ opts.on('-i', '--info', 'Display this information.') { puts opts ; exit }
17
+ opts.on('-p', '--public', 'Paste files as public.') { options[:private] = false }
18
+ opts.on('-h', '--history', 'Show pastes history.') { history.print ; exit }
19
+ opts.on('-c', '--clear', 'Clear your pastes history.') { history.flush ; history.save ; exit }
20
+ end
21
+
22
+ begin
23
+ optparse.parse!
24
+ unless ARGV.empty?
25
+ ARGV.each do |f|
26
+ path = File.expand_path(f)
27
+ if File.exists?(path)
28
+ p = Pastie.create(File.read(path), options[:private])
29
+ unless p.nil?
30
+ history.add(p.link)
31
+ puts p.link.green
32
+ else
33
+ puts "Error: Cant create paste at this moment.".red
34
+ end
35
+ history.save
16
36
  else
17
- puts "Error: Cant create paste at this moment.".red
37
+ puts "Error: \"#{path}\" does not exist!".red
18
38
  end
19
- else
20
- puts "Error: \"#{path}\" does not exist!".red
21
39
  end
40
+ else
41
+ puts optparse
22
42
  end
23
- else
24
- puts "Error: Input file(s) required".red
25
- end
26
-
43
+ rescue OptionParser::InvalidOption, OptionParser::MissingArgument
44
+ puts optparse
45
+ exit
46
+ end
@@ -0,0 +1,51 @@
1
+ module Pastie
2
+ class History
3
+ attr_reader :path
4
+ attr_accessor :links
5
+
6
+ def initialize
7
+ @path = "#{RUBY_PLATFORM =~ /mswin32|mingw32/ ? ENV['USERPROFILE'] : ENV['HOME']}/.pastie"
8
+ @links = []
9
+ self.load
10
+ end
11
+
12
+ # Load history
13
+ def load
14
+ if File.exists?(@path) && File.readable?(@path)
15
+ File.open(@path).readlines("\r\n").each do |l|
16
+ @links << l.strip
17
+ end
18
+ else
19
+ if File.writable?(File.dirname(@path))
20
+ File.open(@path, 'w').close
21
+ end
22
+ end
23
+ end
24
+
25
+ # Add new paste to the history
26
+ def add(url)
27
+ @links << url
28
+ end
29
+
30
+ # Flush history
31
+ def flush
32
+ @links = []
33
+ end
34
+
35
+ # Save history
36
+ def save
37
+ File.open(@path, 'w') { |f| f.write(@links.join("\r\n")) }
38
+ end
39
+
40
+ # Print all existing pastes
41
+ def print
42
+ puts "====== Pastes History ======".green
43
+ unless @links.empty?
44
+ @links.each_with_index { |l, i| puts "#{i+1}. #{l}" }
45
+ else
46
+ puts "your history is empty..."
47
+ end
48
+ puts "============================".green
49
+ end
50
+ end
51
+ end
@@ -1,6 +1,6 @@
1
1
  module Pastie
2
2
  BASE_URL = 'http://pastie.org'
3
-
3
+
4
4
  # Gets existing paste
5
5
  def self.get(id)
6
6
  id = id.to_s
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pastie-api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dan Sosedoff
@@ -19,7 +19,7 @@ date: 2010-10-17 00:00:00 -05:00
19
19
  default_executable: pastie
20
20
  dependencies: []
21
21
 
22
- description: Pastie.org simplified API with terminal access
22
+ description: Simple API and shell access to Pastie.org
23
23
  email: dan.sosedoff@gmail.com
24
24
  executables:
25
25
  - pastie
@@ -34,6 +34,7 @@ files:
34
34
  - lib/pastie-api/request.rb
35
35
  - lib/pastie-api/paste.rb
36
36
  - lib/pastie-api/console.rb
37
+ - lib/pastie-api/history.rb
37
38
  has_rdoc: true
38
39
  homepage: http://github.com/sosedoff/pastie
39
40
  licenses: []
@@ -67,6 +68,6 @@ rubyforge_project:
67
68
  rubygems_version: 1.3.7
68
69
  signing_key:
69
70
  specification_version: 3
70
- summary: Pastie.org simplified API with terminal access
71
+ summary: Simple Pastie.org API
71
72
  test_files: []
72
73