remote_cp 0.0.8 → 0.0.9

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/Gemfile.lock CHANGED
@@ -1,8 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- remote_cp (0.0.1)
4
+ remote_cp (0.0.8)
5
5
  aws-s3
6
+ minitar
7
+ thor
6
8
 
7
9
  GEM
8
10
  remote: http://rubygems.org/
@@ -11,13 +13,15 @@ GEM
11
13
  builder
12
14
  mime-types
13
15
  xml-simple
14
- builder (2.1.2)
16
+ builder (3.0.0)
15
17
  mime-types (1.16)
18
+ minitar (0.5.3)
19
+ thor (0.14.6)
16
20
  xml-simple (1.0.12)
17
21
 
18
22
  PLATFORMS
19
23
  ruby
20
24
 
21
25
  DEPENDENCIES
22
- aws-s3
26
+ bundler (~> 1.0)
23
27
  remote_cp!
data/bin/rt CHANGED
@@ -5,22 +5,21 @@ require 'archive/tar/minitar'
5
5
  require 'thor'
6
6
  require 'aws/s3'
7
7
  require 'yaml'
8
+ require 'remote_cp'
8
9
 
9
- class RemoteCp < Thor
10
+ class Clipboard < Thor
10
11
  include Archive::Tar
11
- include AWS::S3
12
+ include AWS::S3
13
+ include RemoteCp
12
14
 
13
15
  def initialize(*args)
14
- AWS::S3::Base.establish_connection!(
15
- :access_key_id => config[:access_key_id],
16
- :secret_access_key => config[:secret_access_key]
17
- )
16
+ @clipboard = Clipboard.new
18
17
  super
19
18
  end
20
19
 
21
20
  desc "cp [FILENAME]", "copy FILENAME to the cloud. If FILENAME not given send STDIN to the cloud"
22
21
  def cp(filename = nil)
23
- type = nil
22
+ type = 'file'
24
23
  content_type = nil
25
24
 
26
25
  content = if filename.nil?
@@ -42,27 +41,22 @@ class RemoteCp < Thor
42
41
  File.open(full_path)
43
42
  end
44
43
  end
45
-
46
- # I think that all this info should be included file's metadata
47
- S3Object.store("file_name.txt", basename, bucket_name)
48
- S3Object.store("content", content, bucket_name, :content_type => content_type)
49
- S3Object.store("type", type, bucket_name)
44
+ @clipboard.push(content, basename, type, content_type)
50
45
  end
51
46
 
52
47
  desc "p", "paste from the cloud to current dir"
53
48
  def p
54
- file_name = S3Object.find("file_name.txt", bucket_name).value
55
- type = S3Object.find("type", bucket_name).value
56
-
49
+ file_name = @clipboard.filename
57
50
  if File.exist?(file_name)
58
51
  puts "#{file_name} already exist."
59
52
  print "Do you want to replace it (y/n)? "
60
53
  res = $stdin.gets.chomp
61
54
  return unless res == "y"
62
55
  end
63
-
64
- content = S3Object.find('content', bucket_name).value
65
- case type
56
+
57
+ content = @clipboard.content
58
+
59
+ case @clipboard.filetype
66
60
  when 'file'
67
61
  File.open(file_name, "w+") {|f| f << content}
68
62
  puts "#{file_name} copied."
@@ -74,42 +68,18 @@ class RemoteCp < Thor
74
68
 
75
69
  desc "fn", "Returns the file name of the copied file"
76
70
  def fn
77
- puts rm_filename
78
- end
79
-
80
- desc "cat", "Dump the copied file to stdout"
81
- def cat
82
- puts rm_content
83
- end
84
-
85
- private
86
- def bucket_name
87
- config[:bucket_name]
71
+ puts @clipboard.filename
88
72
  end
89
73
 
90
- def filename
91
- S3Object.find("file_name.txt", bucket_name).value
74
+ desc "ft", "Returns the file type"
75
+ def ft
76
+ puts @clipboard.filetype
92
77
  end
93
78
 
94
- def rm_content
95
- S3Object.find('content', bucket_name).value
96
- end
97
-
98
- def config
99
- config_filename = File.join(ENV["HOME"], ".remote_cp.yml")
100
-
101
- @config ||= if File.exist?(config_filename)
102
- conf = Hash.new {|key, val| raise "Missing key #{key} in config file: #{config_filename}"}
103
- conf.replace(YAML::load_file(config_filename))
104
- else
105
- config = {:access_key_id => "MY_ACCESS_KEY", :secret_access_key => "MY_SECRET", :bucket_name => "MY_BUCKET_NAME"}
106
- File.open(config_filename, "w") do |f|
107
- f << YAML::dump(config)
108
- end
109
- File.chmod(0600, config_filename)
110
- raise "Please setup your .remote_cp.yml config file in your home dir."
111
- end
79
+ desc "cat", "Dump the copied file to stdout"
80
+ def cat
81
+ puts @clipboard.content
112
82
  end
113
83
  end
114
84
 
115
- RemoteCp.start
85
+ Clipboard.start
@@ -1,3 +1,3 @@
1
1
  module RemoteCp
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
data/lib/remote_cp.rb CHANGED
@@ -4,101 +4,86 @@ require 'archive/tar/minitar'
4
4
  require 'thor'
5
5
  require 'aws/s3'
6
6
 
7
- class RemoteCp < Thor
8
- include Archive::Tar
9
- include AWS::S3
10
-
11
- def initialize(*args)
12
- AWS::S3::Base.establish_connection!(
13
- :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
14
- :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
15
- )
16
- super
17
- end
18
-
19
- desc "cp", "copy to the cloud clipboard"
20
- def cp(filename = nil)
21
- type = nil
22
- content_type = nil
7
+ include AWS::S3
23
8
 
24
- content = if filename.nil?
25
- basename = "anonymous"
26
- $stdin.read
27
- else
28
- full_path = File.expand_path(filename)
29
- basename = File.basename(full_path)
30
- if File.directory?(full_path)
31
- content_type = "application/gzip"
32
- io = StringIO.new("")
33
- tgz = Zlib::GzipWriter.new(io)
34
- Minitar.pack(basename, tgz)
35
- type = 'directory'
36
- io.rewind
37
- io.string
38
- else
39
- type = 'file'
40
- File.open(full_path)
41
- end
9
+ module RemoteCp
10
+ class Clipboard
11
+ include AWS::S3
12
+ attr_accessor :content_bucket, :filename_bucket, :type_bucket
13
+
14
+ def initialize
15
+ connect
16
+ @bucket = Bucket.find(bucket_name)
17
+ @content_bucket = @bucket['content'] || create_obj("content", "")
18
+ @filename_bucket = @bucket['file_name.txt'] || create_obj("file_name.txt", "")
19
+ @type_bucket = @bucket['type'] || create_obj("type", "")
42
20
  end
43
21
 
44
- # I think that all this info should be included file's metadata
45
- S3Object.store("file_name.txt", basename, 'RemoteClipboard')
46
- S3Object.store("content", content, 'RemoteClipboard', :content_type => content_type)
47
- S3Object.store("type", type, 'RemoteClipboard')
48
- end
49
-
50
- desc "p", "paste from the cloud to current dir"
51
- def rmp
52
- s3_connect
22
+ def connect
23
+ AWS::S3::Base.establish_connection!(
24
+ :access_key_id => config[:access_key_id],
25
+ :secret_access_key => config[:secret_access_key]
26
+ )
27
+ end
53
28
 
54
- file_name = S3Object.find("file_name.txt", 'RemoteClipboard').value
55
- type = S3Object.find("type", 'RemoteClipboard').value
29
+ def config
30
+ config_filename = File.join(ENV["HOME"], ".remote_cp.yml")
56
31
 
57
- if File.exist?(file_name)
58
- puts "#{file_name} already exist."
59
- print "Do you want to replace it (y/n)? "
60
- res = $stdin.gets.chomp
61
- return unless res == "y"
32
+ @config ||= if File.exist?(config_filename)
33
+ conf = Hash.new {|key, val| raise "Missing key #{key} in config file: #{config_filename}"}
34
+ conf.replace(YAML::load_file(config_filename))
35
+ else
36
+ config = {:access_key_id => "MY_ACCESS_KEY", :secret_access_key => "MY_SECRET", :bucket_name => "MY_BUCKET_NAME"}
37
+ File.open(config_filename, "w") do |f|
38
+ f << YAML::dump(config)
39
+ end
40
+ File.chmod(0600, config_filename)
41
+ raise "Please setup your .remote_cp.yml config file in your home dir."
42
+ end
62
43
  end
63
-
64
- content = S3Object.find('content', 'RemoteClipboard').value
65
- case type
66
- when 'file'
67
- File.open(file_name, "w+") {|f| f << content}
68
- puts "#{file_name} copied."
69
- when 'directory'
70
- tgz = Zlib::GzipReader.new(StringIO.new(content))
71
- Minitar.unpack(tgz, ".")
44
+
45
+ # str : content to copy
46
+ # type : :file, :directory
47
+ def push(str, filename = "anomymous", type = :file, content_type = nil)
48
+ # I think that all this info should be included file's metadata
49
+ # AWS::S3 does not support metadata setting on creation.
50
+ @filename_bucket.value = filename
51
+ @filename_bucket.save
52
+
53
+ @content_bucket.value = str
54
+ @content_bucket.content_type = content_type
55
+ @content_bucket.save
56
+
57
+ @type_bucket.value = type.to_s
58
+ @type_bucket.save
59
+ end
60
+
61
+ def pull
62
+ @content_bucket.value
63
+ end
64
+
65
+ def bucket_name
66
+ config[:bucket_name]
67
+ end
68
+
69
+ def filetype
70
+ @type_bucket.value
71
+ end
72
+
73
+ def content
74
+ @bucket['content'].value
72
75
  end
73
- end
74
-
75
- desc "fn", "Returns the file name of the copied file"
76
- def fn
77
- rm_filename
78
- end
79
-
80
- desc "cat", "Dump the copied file to stdout"
81
- def cat
82
- rm_content
83
- end
84
-
85
- private
86
- def s3_connect
87
- require 'aws/s3'
88
- include AWS::S3
89
- AWS::S3::Base.establish_connection!(
90
- :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
91
- :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
92
- )
93
- end
94
-
95
- def filename
96
- S3Object.find("file_name.txt", 'RemoteClipboard').value
97
- end
98
76
 
99
- def rm_content
100
- S3Object.find( 'content', 'RemoteClipboard').value
77
+ def filename
78
+ @filename_bucket.value
79
+ end
80
+
81
+ def create_obj(key, value)
82
+ obj = @bucket.new_object
83
+ obj.key = key
84
+ obj.value = value
85
+ obj.store
86
+ obj
87
+ end
101
88
  end
102
- end
103
-
104
- RemoteCp.start
89
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remote_cp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 8
10
- version: 0.0.8
9
+ - 9
10
+ version: 0.0.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Martin Chabot
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-15 00:00:00 -04:00
18
+ date: 2011-04-23 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency