remote_cp 0.0.1 → 0.0.3

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/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  pkg/*
2
2
  *.gem
3
3
  .bundle
4
+ .DS_Store
data/Gemfile.lock CHANGED
@@ -2,13 +2,22 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  remote_cp (0.0.1)
5
+ aws-s3
5
6
 
6
7
  GEM
7
8
  remote: http://rubygems.org/
8
9
  specs:
10
+ aws-s3 (0.6.2)
11
+ builder
12
+ mime-types
13
+ xml-simple
14
+ builder (2.1.2)
15
+ mime-types (1.16)
16
+ xml-simple (1.0.12)
9
17
 
10
18
  PLATFORMS
11
19
  ruby
12
20
 
13
21
  DEPENDENCIES
22
+ aws-s3
14
23
  remote_cp!
data/README ADDED
@@ -0,0 +1,2 @@
1
+ # RemoteCp is a tool intended facilitate the copying of files accross the internet.
2
+
data/bin/rt ADDED
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'zlib'
4
+ require 'archive/tar/minitar'
5
+ require 'thor'
6
+ require 'aws/s3'
7
+
8
+ class RemoteCp < Thor
9
+ include Archive::Tar
10
+ include AWS::S3
11
+
12
+ def initialize(*args)
13
+ AWS::S3::Base.establish_connection!(
14
+ :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
15
+ :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
16
+ )
17
+ super
18
+ end
19
+
20
+ desc "cp [FILENAME]", "copy FILENAME to the cloudi. If FILENAME not given send STDIN to the cloud"
21
+ def cp(filename = nil)
22
+ type = nil
23
+ content_type = nil
24
+
25
+ content = if filename.nil?
26
+ basename = "anonymous"
27
+ $stdin.read
28
+ else
29
+ full_path = File.expand_path(filename)
30
+ basename = File.basename(full_path)
31
+ if File.directory?(full_path)
32
+ content_type = "application/gzip"
33
+ io = StringIO.new("")
34
+ tgz = Zlib::GzipWriter.new(io)
35
+ Minitar.pack(basename, tgz)
36
+ type = 'directory'
37
+ io.rewind
38
+ io.string
39
+ else
40
+ type = 'file'
41
+ File.open(full_path)
42
+ end
43
+ end
44
+
45
+ # I think that all this info should be included file's metadata
46
+ S3Object.store("file_name.txt", basename, 'RemoteClipboard')
47
+ S3Object.store("content", content, 'RemoteClipboard', :content_type => content_type)
48
+ S3Object.store("type", type, 'RemoteClipboard')
49
+ end
50
+
51
+ desc "p", "paste from the cloud to current dir"
52
+ def p
53
+ file_name = S3Object.find("file_name.txt", 'RemoteClipboard').value
54
+ type = S3Object.find("type", 'RemoteClipboard').value
55
+
56
+ if File.exist?(file_name)
57
+ puts "#{file_name} already exist."
58
+ print "Do you want to replace it (y/n)? "
59
+ res = $stdin.gets.chomp
60
+ return unless res == "y"
61
+ end
62
+
63
+ content = S3Object.find('content', 'RemoteClipboard').value
64
+ case type
65
+ when 'file'
66
+ File.open(file_name, "w+") {|f| f << content}
67
+ puts "#{file_name} copied."
68
+ when 'directory'
69
+ tgz = Zlib::GzipReader.new(StringIO.new(content))
70
+ Minitar.unpack(tgz, ".")
71
+ end
72
+ end
73
+
74
+ desc "fn", "Returns the file name of the copied file"
75
+ def fn
76
+ rm_filename
77
+ end
78
+
79
+ desc "cat", "Dump the copied file to stdout"
80
+ def cat
81
+ rm_content
82
+ end
83
+
84
+ private
85
+ def s3_connect
86
+ require 'aws/s3'
87
+ include AWS::S3
88
+ AWS::S3::Base.establish_connection!(
89
+ :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
90
+ :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
91
+ )
92
+ end
93
+
94
+ def filename
95
+ S3Object.find("file_name.txt", 'RemoteClipboard').value
96
+ end
97
+
98
+ def rm_content
99
+ S3Object.find( 'content', 'RemoteClipboard').value
100
+ end
101
+ end
102
+
103
+ RemoteCp.start
@@ -1,3 +1,3 @@
1
1
  module RemoteCp
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/remote_cp.rb CHANGED
@@ -1,37 +1,84 @@
1
- module RemoteCp
2
- def rmcp(filename = nil)
3
- if filename == nil
1
+ require 'rubygems'
2
+ require 'zlib'
3
+ require 'archive/tar/minitar'
4
+ require 'thor'
5
+ require 'aws/s3'
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
23
+
24
+ content = if filename.nil?
4
25
  basename = "anonymous"
5
- content = $stdin.read
26
+ $stdin.read
6
27
  else
7
28
  full_path = File.expand_path(filename)
8
29
  basename = File.basename(full_path)
9
- content = File.open(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
10
42
  end
11
- s3_connect
43
+
44
+ # I think that all this info should be included file's metadata
12
45
  S3Object.store("file_name.txt", basename, 'RemoteClipboard')
13
- S3Object.store("content", content, 'RemoteClipboard')
46
+ S3Object.store("content", content, 'RemoteClipboard', :content_type => content_type)
47
+ S3Object.store("type", type, 'RemoteClipboard')
14
48
  end
15
-
49
+
50
+ desc "p", "paste from the cloud to current dir"
16
51
  def rmp
17
52
  s3_connect
53
+
18
54
  file_name = S3Object.find("file_name.txt", 'RemoteClipboard').value
55
+ type = S3Object.find("type", 'RemoteClipboard').value
56
+
19
57
  if File.exist?(file_name)
20
58
  puts "#{file_name} already exist."
21
59
  print "Do you want to replace it (y/n)? "
22
60
  res = $stdin.gets.chomp
23
61
  return unless res == "y"
24
62
  end
63
+
25
64
  content = S3Object.find('content', 'RemoteClipboard').value
26
- File.open(file_name, "w+") {|f| f << content}
27
- puts "#{file_name} copied."
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, ".")
72
+ end
28
73
  end
29
-
30
- def rmfn
74
+
75
+ desc "fn", "Returns the file name of the copied file"
76
+ def fn
31
77
  rm_filename
32
78
  end
33
79
 
34
- def rmcat
80
+ desc "cat", "Dump the copied file to stdout"
81
+ def cat
35
82
  rm_content
36
83
  end
37
84
 
@@ -45,13 +92,13 @@ private
45
92
  )
46
93
  end
47
94
 
48
- def rm_filename
49
- s3_connect
50
- file_name = S3Object.find("file_name.txt", 'RemoteClipboard').value
95
+ def filename
96
+ S3Object.find("file_name.txt", 'RemoteClipboard').value
51
97
  end
52
98
 
53
99
  def rm_content
54
- s3_connect
55
- content = S3Object.find( 'content', 'RemoteClipboard').value
100
+ S3Object.find( 'content', 'RemoteClipboard').value
56
101
  end
57
102
  end
103
+
104
+ RemoteCp.start
data/lib/rt ADDED
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'zlib'
4
+ require 'archive/tar/minitar'
5
+ require 'thor'
6
+ require 'aws/s3'
7
+
8
+ class RemoteCp < Thor
9
+ include Archive::Tar
10
+ include AWS::S3
11
+
12
+ def initialize(*args)
13
+ AWS::S3::Base.establish_connection!(
14
+ :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
15
+ :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
16
+ )
17
+ super
18
+ end
19
+
20
+ desc "cp [FILENAME]", "copy FILENAME to the cloudi. If FILENAME not given send STDIN to the cloud"
21
+ def cp(filename = nil)
22
+ type = nil
23
+ content_type = nil
24
+
25
+ content = if filename.nil?
26
+ basename = "anonymous"
27
+ $stdin.read
28
+ else
29
+ full_path = File.expand_path(filename)
30
+ basename = File.basename(full_path)
31
+ if File.directory?(full_path)
32
+ content_type = "application/gzip"
33
+ io = StringIO.new("")
34
+ tgz = Zlib::GzipWriter.new(io)
35
+ Minitar.pack(basename, tgz)
36
+ type = 'directory'
37
+ io.rewind
38
+ io.string
39
+ else
40
+ type = 'file'
41
+ File.open(full_path)
42
+ end
43
+ end
44
+
45
+ # I think that all this info should be included file's metadata
46
+ S3Object.store("file_name.txt", basename, 'RemoteClipboard')
47
+ S3Object.store("content", content, 'RemoteClipboard', :content_type => content_type)
48
+ S3Object.store("type", type, 'RemoteClipboard')
49
+ end
50
+
51
+ desc "p", "paste from the cloud to current dir"
52
+ def p
53
+ file_name = S3Object.find("file_name.txt", 'RemoteClipboard').value
54
+ type = S3Object.find("type", 'RemoteClipboard').value
55
+
56
+ if File.exist?(file_name)
57
+ puts "#{file_name} already exist."
58
+ print "Do you want to replace it (y/n)? "
59
+ res = $stdin.gets.chomp
60
+ return unless res == "y"
61
+ end
62
+
63
+ content = S3Object.find('content', 'RemoteClipboard').value
64
+ case type
65
+ when 'file'
66
+ File.open(file_name, "w+") {|f| f << content}
67
+ puts "#{file_name} copied."
68
+ when 'directory'
69
+ tgz = Zlib::GzipReader.new(StringIO.new(content))
70
+ Minitar.unpack(tgz, ".")
71
+ end
72
+ end
73
+
74
+ desc "fn", "Returns the file name of the copied file"
75
+ def fn
76
+ rm_filename
77
+ end
78
+
79
+ desc "cat", "Dump the copied file to stdout"
80
+ def cat
81
+ rm_content
82
+ end
83
+
84
+ private
85
+ def s3_connect
86
+ require 'aws/s3'
87
+ include AWS::S3
88
+ AWS::S3::Base.establish_connection!(
89
+ :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
90
+ :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
91
+ )
92
+ end
93
+
94
+ def filename
95
+ S3Object.find("file_name.txt", 'RemoteClipboard').value
96
+ end
97
+
98
+ def rm_content
99
+ S3Object.find( 'content', 'RemoteClipboard').value
100
+ end
101
+ end
102
+
103
+ RemoteCp.start
data/remote_cp.gemspec CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.rubyforge_project = "remote_cp"
16
16
 
17
17
  s.add_dependency "aws-s3"
18
+ s.add_dependency "thor"
18
19
  s.files = `git ls-files`.split("\n")
19
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
21
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
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: 29
5
- prerelease: false
4
+ hash: 25
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 3
10
+ version: 0.0.3
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-01-29 00:00:00 -05:00
18
+ date: 2011-03-25 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -32,11 +32,25 @@ dependencies:
32
32
  version: "0"
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: thor
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
35
49
  description: Tools to facilitate file transfert across machine
36
50
  email:
37
51
  - chabotm@gmail.com
38
- executables: []
39
-
52
+ executables:
53
+ - rt
40
54
  extensions: []
41
55
 
42
56
  extra_rdoc_files: []
@@ -45,9 +59,12 @@ files:
45
59
  - .gitignore
46
60
  - Gemfile
47
61
  - Gemfile.lock
62
+ - README
48
63
  - Rakefile
64
+ - bin/rt
49
65
  - lib/remote_cp.rb
50
66
  - lib/remote_cp/version.rb
67
+ - lib/rt
51
68
  - remote_cp.gemspec
52
69
  has_rdoc: true
53
70
  homepage: http://github.com/martinos/remote_cp
@@ -79,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
96
  requirements: []
80
97
 
81
98
  rubyforge_project: remote_cp
82
- rubygems_version: 1.3.7
99
+ rubygems_version: 1.5.0
83
100
  signing_key:
84
101
  specification_version: 3
85
102
  summary: Tools to facilitate file transfert across machine