remote_cp 0.0.6 → 0.0.7

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.
Files changed (5) hide show
  1. data/README.md +4 -4
  2. data/bin/rt +20 -12
  3. data/lib/remote_cp/version.rb +1 -1
  4. metadata +4 -5
  5. data/lib/rt +0 -103
data/README.md CHANGED
@@ -7,11 +7,11 @@ Install the gem
7
7
 
8
8
  $ gem install remote_cp
9
9
 
10
- Add the Amazon access and private key of your S3 bucket in your .bashrc file:
10
+ Setup your remote cp by editing ~/.remote_cp.yml config file:
11
11
 
12
- export AMAZON_ACCESS_KEY_ID='MYACCESSKEY'
13
- export AMAZON_SECRET_ACCESS_KEY='SECRET ACCESS KEY'
14
- export REMOTE_CP_BUCKET='bucket_name'
12
+ :access_key_id: MY_ACCESS_KEY
13
+ :secret_access_key: MY_SECRET
14
+ :bucket_name: MY_BUCKET_NAME
15
15
  ##Usage
16
16
  To copy a file to the remote clipboard:
17
17
 
data/bin/rt CHANGED
@@ -4,6 +4,7 @@ require 'zlib'
4
4
  require 'archive/tar/minitar'
5
5
  require 'thor'
6
6
  require 'aws/s3'
7
+ require 'yaml'
7
8
 
8
9
  class RemoteCp < Thor
9
10
  include Archive::Tar
@@ -11,8 +12,8 @@ class RemoteCp < Thor
11
12
 
12
13
  def initialize(*args)
13
14
  AWS::S3::Base.establish_connection!(
14
- :access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
15
- :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
15
+ :access_key_id => config[:access_key_id],
16
+ :secret_access_key => config[:secret_access_key]
16
17
  )
17
18
  super
18
19
  end
@@ -82,17 +83,8 @@ class RemoteCp < Thor
82
83
  end
83
84
 
84
85
  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
86
  def bucket_name
95
- ENV["REMOTE_CP_BUCKET"]
87
+ config[:bucket_name]
96
88
  end
97
89
 
98
90
  def filename
@@ -102,6 +94,22 @@ private
102
94
  def rm_content
103
95
  S3Object.find('content', bucket_name).value
104
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 you home dir."
111
+ end
112
+ end
105
113
  end
106
114
 
107
115
  RemoteCp.start
@@ -1,3 +1,3 @@
1
1
  module RemoteCp
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  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: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 6
10
- version: 0.0.6
9
+ - 7
10
+ version: 0.0.7
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-03-26 00:00:00 -04:00
18
+ date: 2011-03-27 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -80,7 +80,6 @@ files:
80
80
  - bin/rt
81
81
  - lib/remote_cp.rb
82
82
  - lib/remote_cp/version.rb
83
- - lib/rt
84
83
  - remote_cp.gemspec
85
84
  has_rdoc: true
86
85
  homepage: http://github.com/martinos/remote_cp
data/lib/rt DELETED
@@ -1,103 +0,0 @@
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