cifrado 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0746da846ed77bb7954fa0285936c7fcc391871
4
- data.tar.gz: 646ed7ce8284059a364373c443d00957b415bd8d
3
+ metadata.gz: 72a06074f4179b1d7c3e9912c30208c37d53ea86
4
+ data.tar.gz: 7e11beff0781e9c476dbe0a7df54e199b16712cc
5
5
  SHA512:
6
- metadata.gz: 099631ccabe814128d9cdd920761d5f930ce454bb85c9e6b97903c0449f4cf40fde243ec2f25e2408314c2a646d6a2570e07f55d0ed4ac839fc8de8c9b79739e
7
- data.tar.gz: 78b659ca0e2f3794f39f365bcfdfc2f24a0e4dd6902587bd9463ad4bb1bdaa8bdff0e3517db7094385648a5ab0e2c291ea64822a51786a5e79bbc22b2a53ec95
6
+ metadata.gz: a1c9b1336bab1b9ab5a6d0e050ddf95ade9c3b6f163c61bf26cfed830837a3af83a2149fe0ae61f5ab571f0bea2d960b298d8fd5e4d04c03ab575b0726f7df4d
7
+ data.tar.gz: b241cdd6d09ee1a5b477ba68731eb711e2f54491a1e2dae81154f1ea0c29e9dbc720365f5c689da270800e82588f9843d46d9ace42bce6f4fa64fa9f36e0a969
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
+ tests/cifradorc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # Cifrado 0.2.0 - Wed 19 Feb 2014
2
+
3
+ * HP Cloud support. See https://github.com/rubiojr/cifrado/wiki/Providers-HPCloud
4
+ * Added `config` command. See https://github.com/rubiojr/cifrado/commit/ea291b75fc45895ddfed9077caa6c225349b3145
5
+ * Bug Fixes
6
+
1
7
  # Cifrado 0.1.3 - Tue 05 Mar 2013
2
8
 
3
9
  * Fix regresion in the last release that may break regular OpenStack accounts
data/HACKING.md ADDED
@@ -0,0 +1,6 @@
1
+ # Testing
2
+
3
+ You'll need a valid tests/cifradorc configuration to run the tests against
4
+ a reall Swift install.
5
+
6
+ Run `shindo tests` from the project root to run the tests.
data/bin/cifrado CHANGED
@@ -4,4 +4,35 @@ require 'yaml'
4
4
  require 'uri'
5
5
 
6
6
  $0 = "cifrado #{ARGV.join(' ')}"
7
+
8
+ at_exit do
9
+ include Cifrado::Utils
10
+ include Cifrado
11
+ e = $!
12
+ if e
13
+ if e.is_a? Excon::Errors::Unauthorized
14
+ Log.error "Unauthorized"
15
+ Log.error "Double check the username, password and auth_url."
16
+ elsif e.is_a? Excon::Errors::SocketError
17
+ if e.message =~ /Unable to verify certificate|hostname (was|does) not match (with )?the server/
18
+ Log.error "Unable to verify SSL certificate."
19
+ Log.error "If the server is using a self-signed certificate, try using --insecure."
20
+ Log.error "Please be aware of the security implications."
21
+ else
22
+ Log.error e.message
23
+ end
24
+ elsif e.is_a? RuntimeError
25
+ Log.error e.message
26
+ elsif e.is_a? Interrupt
27
+ Log.info
28
+ Log.info 'At your command, Sir!'
29
+ else
30
+ Log.fatal e.message
31
+ end
32
+ system 'stty echo'
33
+ prettify_backtrace e
34
+ exit! 1
35
+ end
36
+ end
37
+
7
38
  Cifrado::CLI.start ARGV, :shell => Thor::Shell::Color.new
data/cifrado.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.name = "cifrado"
8
8
  gem.version = Cifrado::VERSION
9
9
  gem.authors = ["Sergio Rubio"]
10
- gem.signing_key = File.expand_path("~/.gem/gem-private_key.pem")
10
+ #gem.signing_key = File.expand_path("~/.gem/gem-private_key.pem")
11
11
  gem.cert_chain = ["gem-public_cert.pem"]
12
12
  gem.email = ["rubiojr@frameos.org"]
13
13
  gem.description = %q{OpenStack Swift CLI with encryption support}
@@ -0,0 +1,44 @@
1
+ module Cifrado
2
+ class CLI
3
+ desc 'configs', 'List available configuration'
4
+ option :print,
5
+ :type => :string,
6
+ :desc => 'Print the configuration selected'
7
+ option :current,
8
+ :type => :boolean,
9
+ :desc => 'Print the current configuration'
10
+ def configs
11
+ cdir = Cifrado::Config.instance.config_dir
12
+
13
+ current = "#{cdir}/cifradorc"
14
+ if options[:current]
15
+ if File.exist?(current)
16
+ Log.info conceal_password(File.read("#{cdir}/cifradorc"))
17
+ return 'cifradorc'
18
+ else
19
+ raise 'No configuration available.'
20
+ end
21
+ end
22
+
23
+ configs = Dir["#{cdir}/cifradorc.*"].map do |c|
24
+ File.basename(c).gsub('cifradorc.', '')
25
+ end
26
+
27
+ selected = options[:print]
28
+ if selected and configs.include?(selected)
29
+ Log.info conceal_password(File.read("#{cdir}/cifradorc.#{selected}"))
30
+ return selected
31
+ else
32
+ raise "Config #{selected} not available." if selected
33
+ end
34
+
35
+ configs.each { |c| Log.info(c) if c !~ /bak\.\d+/ }
36
+ configs
37
+ end
38
+
39
+ private
40
+ def conceal_password(buf)
41
+ buf.gsub(/^.*password:.*$/, ':password:')
42
+ end
43
+ end
44
+ end
@@ -114,8 +114,8 @@ module Cifrado
114
114
 
115
115
  private
116
116
  def save_settings(config)
117
- config_file = File.join(ENV['HOME'], '.config/cifrado/cifradorc')
118
- FileUtils.mkdir_p File.join(ENV['HOME'], '.config/cifrado')
117
+ config_dir = Cifrado::Config.instance.config_dir
118
+ config_file = File.join(config_dir, 'cifradorc')
119
119
  if File.exist?(config_file)
120
120
  raise 'Cifrado config file exists. Refusing to overwrite.'
121
121
  else
@@ -19,7 +19,7 @@ function get_id () {
19
19
 
20
20
  echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main > /etc/apt/sources.list.d/folsom.list
21
21
  apt-get update
22
- apt-get install -y ubuntu-cloud-keyring
22
+ apt-get install -y ubuntu-cloud-keyring ntp
23
23
  apt-get update
24
24
  apt-get install -y keystone python-software-properties telnet xfsprogs pwgen ssl-cert curl wget ca-certificates tcpflow
25
25
  add-apt-repository -y ppa:bvox/ppa
@@ -2,9 +2,10 @@ module Cifrado
2
2
  class CLI
3
3
  desc "setup", "Initial Cifrado configuration"
4
4
  def setup
5
- config_file = File.join(ENV['HOME'], '.config/cifrado/cifradorc')
6
- unless File.directory?('.config/cifrado')
7
- FileUtils.mkdir_p '.config/cifrado'
5
+ config_instance = Cifrado::Config.instance
6
+ config_file = File.join(config_instance.config_dir, 'cifradorc')
7
+ unless File.directory?(config_instance.config_dir)
8
+ FileUtils.mkdir_p config_instance.config_dir
8
9
  end
9
10
  if File.exist?(config_file)
10
11
  Log.warn "Config file #{set_color config_file, :bold} already exist."
@@ -20,9 +21,9 @@ module Cifrado
20
21
 
21
22
 
22
23
  puts "Running cifrado setup..."
23
- puts "Please provide OpenStack/Rackspace credentials."
24
+ puts "Please provide OpenStack/Rackspace/HPCloud credentials."
24
25
  puts
25
- puts "Cifrado can save this settings in #{config_file}"
26
+ puts "Cifrado can save these settings in #{config_file}"
26
27
  puts "for later use."
27
28
  puts "The settings (password included) are saved unencrypted."
28
29
  puts
@@ -241,12 +241,6 @@ module Cifrado
241
241
  File.delete out
242
242
  end
243
243
 
244
- if segments_uploaded.size == 0
245
- Log.warn 'All the segments have been previously uploaded.'
246
- Log.warn 'Skipping manifest creation.'
247
- return segments_uploaded
248
- end
249
-
250
244
  # We need this for segmented uploads
251
245
  Log.debug "Adding manifest path #{target_manifest}"
252
246
  xom = "#{Fog::OpenStack.escape(container + '_segments')}/" +
@@ -256,11 +250,17 @@ module Cifrado
256
250
  encrypted_name = encrypt_filename object, secure_password
257
251
  headers['X-Object-Meta-Encrypted-Name'] = encrypted_name
258
252
  end
253
+
254
+ # Make sure the container for the object manifest exists
259
255
  client.create_directory container
260
- client.service.put_object_manifest container,
261
- target_manifest,
262
- headers
263
- segments_uploaded.insert 0, target_manifest
256
+
257
+ unless client.head(container, target_manifest)
258
+ Log.debug "Adding object manifest #{target_manifest}"
259
+ client.service.put_object_manifest container,
260
+ target_manifest,
261
+ headers
262
+ segments_uploaded.insert 0, target_manifest
263
+ end
264
264
 
265
265
  segments_uploaded
266
266
  end
data/lib/cifrado/cli.rb CHANGED
@@ -58,7 +58,17 @@ module Cifrado
58
58
  end
59
59
 
60
60
  def check_options
61
- config_file = options[:config] || File.join(ENV['HOME'], '.config/cifrado/cifradorc')
61
+ config_dir = Cifrado::Config.instance.config_dir
62
+ config_file = options[:config] || File.join(config_dir, 'cifradorc')
63
+
64
+ # Cifrado can use config shortcuts, i.e. myhost without path
65
+ # is equivalent to ~/.config/cifrado/cifradorc.myhost
66
+ #
67
+ config_shortcut = File.join(config_dir, "cifradorc.#{config_file}")
68
+ if File.exist?(config_shortcut)
69
+ config_file = config_shortcut
70
+ end
71
+
62
72
  config = {}
63
73
 
64
74
  if File.exist?(config_file)
@@ -72,6 +82,8 @@ module Cifrado
72
82
  Cifrado::Log.error "Error loading config file"
73
83
  raise e
74
84
  end
85
+ else
86
+ Log.warn "Config file #{config_file} not found."
75
87
  end
76
88
 
77
89
  config[:username] = options[:username] || config[:username]
@@ -125,33 +137,5 @@ require 'cifrado/cli/jukebox'
125
137
  require 'cifrado/cli/cinema'
126
138
  require 'cifrado/cli/saio'
127
139
  require 'cifrado/cli/version'
140
+ require 'cifrado/cli/configs'
128
141
 
129
- at_exit do
130
- include Cifrado::Utils
131
- include Cifrado
132
- e = $!
133
- if e
134
- if e.is_a? Excon::Errors::Unauthorized
135
- Log.error "Unauthorized"
136
- Log.error "Double check the username, password and auth_url."
137
- elsif e.is_a? Excon::Errors::SocketError
138
- if e.message =~ /Unable to verify certificate|hostname (was|does) not match (with )?the server/
139
- Log.error "Unable to verify SSL certificate."
140
- Log.error "If the server is using a self-signed certificate, try using --insecure."
141
- Log.error "Please be aware of the security implications."
142
- else
143
- Log.error e.message
144
- end
145
- elsif e.is_a? RuntimeError
146
- Log.error e.message
147
- elsif e.is_a? Interrupt
148
- Log.info
149
- Log.info 'At your command, Sir!'
150
- else
151
- Log.fatal e.message
152
- end
153
- system 'stty echo'
154
- prettify_backtrace e
155
- exit! 1
156
- end
157
- end
@@ -4,15 +4,27 @@ module Cifrado
4
4
  class Config
5
5
  include Singleton
6
6
 
7
- def initialize
8
- unless File.directory?(cache_dir)
9
- Log.debug "Creating cache dir: #{cache_dir}"
10
- FileUtils.mkdir_p(cache_dir)
11
- end
7
+ def init_env
8
+ Log.debug "Creating cache dir: #{cache_dir}"
9
+ FileUtils.mkdir_p(cache_dir)
10
+ Log.debug "Creating config dir: #{config_dir}"
11
+ FileUtils.mkdir_p(config_dir)
12
+ end
13
+
14
+ def cache_dir=(dir)
15
+ @cache_dir = dir
12
16
  end
13
17
 
14
18
  def cache_dir
15
- File.join(ENV['HOME'], '.cache/cifrado')
19
+ @cache_dir ||= File.join(ENV['HOME'], '.cache/cifrado')
20
+ end
21
+
22
+ def config_dir=(dir)
23
+ @config_dir = dir
24
+ end
25
+
26
+ def config_dir
27
+ @config_dir ||= File.join(ENV['HOME'], '.config/cifrado')
16
28
  end
17
29
  end
18
30
  end
@@ -13,7 +13,7 @@ module Cifrado
13
13
  # @param [String] Destination directory of the chunks
14
14
  def initialize(filename,
15
15
  chunk_number = nil,
16
- cache_dir = File.join(ENV['HOME'], '.cache/cifrado') )
16
+ cache_dir = Cifrado::Config.instance.cache_dir)
17
17
  raise ArgumentError.new unless File.exist?(filename)
18
18
  @filename = File.basename filename
19
19
  @source = filename
@@ -33,7 +33,7 @@ module Cifrado
33
33
  def head(container = nil, object = nil)
34
34
  begin
35
35
  if container and object
36
- service.head_object(container, object).headers
36
+ service.head_object(container, clean_object_name(object)).headers
37
37
  elsif container
38
38
  service.head_container(container).headers
39
39
  else
@@ -1,3 +1,3 @@
1
1
  module Cifrado
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/cifrado.rb CHANGED
@@ -31,6 +31,8 @@ module Cifrado
31
31
  Log.debug "Initializing logger"
32
32
  end
33
33
 
34
+ Cifrado::Config.instance.init_env
35
+
34
36
  end
35
37
 
36
38
  vendored_fog = File.join(File.dirname(__FILE__), 'cifrado/vendor/fog/lib')
@@ -32,6 +32,15 @@ Shindo.tests('Cifrado | CLI#upload') do
32
32
  segments = cli.upload 'cifrado-tests', obj
33
33
  segments.size == 0
34
34
  end
35
+ # Delete object manifest and test if it's added again
36
+ cli.delete test_container_name, clean_object_name(obj)
37
+ test 'object manifest is always added' do
38
+ segments = cli.upload 'cifrado-tests', obj
39
+ segments.size == 1
40
+ end
41
+ test 'object manifest exist' do
42
+ !client.head(test_container_name, obj).nil?
43
+ end
35
44
  end
36
45
  tests 'single uploads' do
37
46
  obj = create_bin_payload 1
data/tests/helper.rb CHANGED
@@ -6,6 +6,9 @@ require 'digest/md5'
6
6
 
7
7
  include Cifrado
8
8
  include Cifrado::Utils
9
+
10
+ Cifrado::Config.instance.cache_dir = File.expand_path("~/.cache/cifrado-test")
11
+ Cifrado::Config.instance.config_dir = File.expand_path(File.dirname(__FILE__))
9
12
 
10
13
  unless ENV['DEBUG']
11
14
  Cifrado::Log.level = Logger::ERROR
@@ -16,7 +19,7 @@ def fog_settings
16
19
  end
17
20
 
18
21
  def client
19
- conf = YAML.load_file File.expand_path("~/.config/cifrado/cifradorc")
22
+ conf = YAML.load_file Cifrado::Config.instance.config_dir + "/cifradorc"
20
23
  client = SwiftClient.new :username => conf[:username],
21
24
  :api_key => conf[:password],
22
25
  :auth_url => conf[:auth_url],
@@ -106,7 +109,7 @@ def cleanup
106
109
  clean_test_payloads
107
110
  clean_test_container
108
111
  Dir["/tmp/cifrado*"].each { |f| FileUtils.rm_rf f }
109
- Dir[File.join(ENV['HOME'], ".cache/cifrado") + "/*segments*"].each { |f| FileUtils.rm_rf f }
112
+ Dir["#{Cifrado::Config.instance.cache_dir}/*"].each { |f| FileUtils.rm_f f }
110
113
  end
111
114
 
112
115
  def tmpfile
@@ -5,7 +5,7 @@ Shindo.tests('Cifrado | SwiftClient#head') do
5
5
  tests 'head object' do
6
6
  test "object #{clean_object} headers available" do
7
7
  client.upload test_container_name, obj1
8
- (client.head test_container_name, clean_object_name(obj1)).is_a?(Hash)
8
+ client.head(test_container_name, obj1).is_a?(Hash)
9
9
  end
10
10
  test 'head invalid object' do
11
11
  client.head(test_container_name, SecureRandom.hex).nil?
@@ -150,7 +150,6 @@ module Fog
150
150
  'Content-Type' => 'application/json',
151
151
  'X-Auth-Token' => @auth_token
152
152
  }.merge!(params[:headers] || {}),
153
- :host => @host,
154
153
  :path => "#{@path}/#{params[:path]}",
155
154
  }), &block)
156
155
  rescue Excon::Errors::Unauthorized => error
@@ -195,7 +195,6 @@ module Fog
195
195
  :expects => [200, 204],
196
196
  :headers => {'Content-Type' => 'application/json'},
197
197
  :body => Fog::JSON.encode(request_body),
198
- :host => uri.host,
199
198
  :method => 'POST',
200
199
  :path => (uri.path and not uri.path.empty?) ? uri.path : 'v2.0'
201
200
  })
metadata CHANGED
@@ -1,160 +1,140 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cifrado
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Rubio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDNDCCAhygAwIBAgIBADANBgkqhkiG9w0BAQUFADBAMRAwDgYDVQQDDAdydWJp
14
- b2pyMRcwFQYKCZImiZPyLGQBGRYHZnJhbWVvczETMBEGCgmSJomT8ixkARkWA29y
15
- ZzAeFw0xMzAyMTIyMDU0NTFaFw0xNDAyMTIyMDU0NTFaMEAxEDAOBgNVBAMMB3J1
16
- YmlvanIxFzAVBgoJkiaJk/IsZAEZFgdmcmFtZW9zMRMwEQYKCZImiZPyLGQBGRYD
17
- b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6gSsIib3HHQ87Dsu
18
- 9EZzKMk2oswglzatmxIbCKXTCflTFd7U4I3sinGCOPdkRmqf9vjJSv2ppFnq8D/J
19
- flUrqpvqnDSGWW4mHdCXGGkbgsmNGV2d3AYGC1fhstBTxJIvQaDibxrH5IIqBtNN
20
- wBGrOVuSb1HjqPpp+5MKcQdqYT4GW1rZkeV4FYXg+SThwjx+AlmvUKmMT9cmB2Ml
21
- JWpId4O027AjcdmOk1s1ZMIlr+ZzV0EDmqPyNFmxZm72QUsywijM9B76eVC5sdOH
22
- JKZK75oXtz0Pr++MYTlNaXHu98RzgMyOzLHM5LRCZg1f/zB9NbI2Fqm7IIfKpz0e
23
- 9KGBFQIDAQABozkwNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBSO48JZEE9yvI13QfH2
24
- UVEWt45QaTALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQADggEBABTq7sClnZ83
25
- ZeGgOUKMYq7/I5gGgZHyjIcuceMuVlhVWcjrxC1Fn7eqCZupAfveoxiNrWROmZ3C
26
- 26+nSlwMVQub9ruoGwejS1PSEBrtR56sZ78WNwUMogjzPUzDDgHZgDMneKLytSco
27
- ustJSPP8wjxoV+59JuIFY8oqFy3B0o9b7WU59RNwqdauaWye1JEWr5c18dM8VJKC
28
- 9gNNNiwrh1Q5Q3HwjjeNlUjGZmQcgceG4Xdoox89/HNm5by83mHknD++tqwa2n8F
29
- /Nnaz9wOXu6/VjBcnvFOGY8f32hVq619QiJVpV9zRgYa5M05mWRmwHByrb4yK0Ab
30
- 3GpyuMMNBMk=
31
- -----END CERTIFICATE-----
32
- date: 2013-03-05 00:00:00.000000000 Z
11
+ - gem-public_cert.pem
12
+ date: 2014-02-19 00:00:00.000000000 Z
33
13
  dependencies:
34
14
  - !ruby/object:Gem::Dependency
35
15
  name: excon
36
16
  requirement: !ruby/object:Gem::Requirement
37
17
  requirements:
38
- - - '>='
18
+ - - ">="
39
19
  - !ruby/object:Gem::Version
40
20
  version: '0'
41
21
  type: :runtime
42
22
  prerelease: false
43
23
  version_requirements: !ruby/object:Gem::Requirement
44
24
  requirements:
45
- - - '>='
25
+ - - ">="
46
26
  - !ruby/object:Gem::Version
47
27
  version: '0'
48
28
  - !ruby/object:Gem::Dependency
49
29
  name: thor
50
30
  requirement: !ruby/object:Gem::Requirement
51
31
  requirements:
52
- - - '>='
32
+ - - ">="
53
33
  - !ruby/object:Gem::Version
54
34
  version: '0.17'
55
35
  type: :runtime
56
36
  prerelease: false
57
37
  version_requirements: !ruby/object:Gem::Requirement
58
38
  requirements:
59
- - - '>='
39
+ - - ">="
60
40
  - !ruby/object:Gem::Version
61
41
  version: '0.17'
62
42
  - !ruby/object:Gem::Dependency
63
43
  name: ruby-progressbar
64
44
  requirement: !ruby/object:Gem::Requirement
65
45
  requirements:
66
- - - '>='
46
+ - - ">="
67
47
  - !ruby/object:Gem::Version
68
48
  version: '0'
69
49
  type: :runtime
70
50
  prerelease: false
71
51
  version_requirements: !ruby/object:Gem::Requirement
72
52
  requirements:
73
- - - '>='
53
+ - - ">="
74
54
  - !ruby/object:Gem::Version
75
55
  version: '0'
76
56
  - !ruby/object:Gem::Dependency
77
57
  name: multi_json
78
58
  requirement: !ruby/object:Gem::Requirement
79
59
  requirements:
80
- - - '>='
60
+ - - ">="
81
61
  - !ruby/object:Gem::Version
82
62
  version: '0'
83
63
  type: :runtime
84
64
  prerelease: false
85
65
  version_requirements: !ruby/object:Gem::Requirement
86
66
  requirements:
87
- - - '>='
67
+ - - ">="
88
68
  - !ruby/object:Gem::Version
89
69
  version: '0'
90
70
  - !ruby/object:Gem::Dependency
91
71
  name: mime-types
92
72
  requirement: !ruby/object:Gem::Requirement
93
73
  requirements:
94
- - - '>='
74
+ - - ">="
95
75
  - !ruby/object:Gem::Version
96
76
  version: '0'
97
77
  type: :runtime
98
78
  prerelease: false
99
79
  version_requirements: !ruby/object:Gem::Requirement
100
80
  requirements:
101
- - - '>='
81
+ - - ">="
102
82
  - !ruby/object:Gem::Version
103
83
  version: '0'
104
84
  - !ruby/object:Gem::Dependency
105
85
  name: yajl-ruby
106
86
  requirement: !ruby/object:Gem::Requirement
107
87
  requirements:
108
- - - '>='
88
+ - - ">="
109
89
  - !ruby/object:Gem::Version
110
90
  version: '0'
111
91
  type: :runtime
112
92
  prerelease: false
113
93
  version_requirements: !ruby/object:Gem::Requirement
114
94
  requirements:
115
- - - '>='
95
+ - - ">="
116
96
  - !ruby/object:Gem::Version
117
97
  version: '0'
118
98
  - !ruby/object:Gem::Dependency
119
99
  name: formatador
120
100
  requirement: !ruby/object:Gem::Requirement
121
101
  requirements:
122
- - - '>='
102
+ - - ">="
123
103
  - !ruby/object:Gem::Version
124
104
  version: '0'
125
105
  type: :runtime
126
106
  prerelease: false
127
107
  version_requirements: !ruby/object:Gem::Requirement
128
108
  requirements:
129
- - - '>='
109
+ - - ">="
130
110
  - !ruby/object:Gem::Version
131
111
  version: '0'
132
112
  - !ruby/object:Gem::Dependency
133
113
  name: shexy
134
114
  requirement: !ruby/object:Gem::Requirement
135
115
  requirements:
136
- - - '>='
116
+ - - ">="
137
117
  - !ruby/object:Gem::Version
138
118
  version: '0'
139
119
  type: :runtime
140
120
  prerelease: false
141
121
  version_requirements: !ruby/object:Gem::Requirement
142
122
  requirements:
143
- - - '>='
123
+ - - ">="
144
124
  - !ruby/object:Gem::Version
145
125
  version: '0'
146
126
  - !ruby/object:Gem::Dependency
147
127
  name: shindo
148
128
  requirement: !ruby/object:Gem::Requirement
149
129
  requirements:
150
- - - '>='
130
+ - - ">="
151
131
  - !ruby/object:Gem::Version
152
132
  version: '0'
153
133
  type: :development
154
134
  prerelease: false
155
135
  version_requirements: !ruby/object:Gem::Requirement
156
136
  requirements:
157
- - - '>='
137
+ - - ">="
158
138
  - !ruby/object:Gem::Version
159
139
  version: '0'
160
140
  description: OpenStack Swift CLI with encryption support
@@ -165,9 +145,10 @@ executables:
165
145
  extensions: []
166
146
  extra_rdoc_files: []
167
147
  files:
168
- - .gitignore
148
+ - ".gitignore"
169
149
  - CHANGELOG.md
170
150
  - Gemfile
151
+ - HACKING.md
171
152
  - LICENSE.txt
172
153
  - README.md
173
154
  - RELEASE.md
@@ -179,6 +160,7 @@ files:
179
160
  - lib/cifrado.rb
180
161
  - lib/cifrado/cli.rb
181
162
  - lib/cifrado/cli/cinema.rb
163
+ - lib/cifrado/cli/configs.rb
182
164
  - lib/cifrado/cli/delete.rb
183
165
  - lib/cifrado/cli/download.rb
184
166
  - lib/cifrado/cli/jukebox.rb
@@ -540,19 +522,18 @@ require_paths:
540
522
  - lib
541
523
  required_ruby_version: !ruby/object:Gem::Requirement
542
524
  requirements:
543
- - - '>='
525
+ - - ">="
544
526
  - !ruby/object:Gem::Version
545
527
  version: '0'
546
528
  required_rubygems_version: !ruby/object:Gem::Requirement
547
529
  requirements:
548
- - - '>='
530
+ - - ">="
549
531
  - !ruby/object:Gem::Version
550
532
  version: '0'
551
533
  requirements: []
552
534
  rubyforge_project:
553
- rubygems_version: 2.0.0
535
+ rubygems_version: 2.2.0
554
536
  signing_key:
555
537
  specification_version: 4
556
538
  summary: OpenStack Swift CLI with encryption support
557
539
  test_files: []
558
- has_rdoc:
checksums.yaml.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- �L������;­�Z�)ī��S��x�¨�mӉy"�k��
2
- �]���:�ԡ3y?�vܹ`���o*]3�Bd�����*Z��i� �at�C�3��xu�<v���"�_����Z�H O����h�~�JE��o�P���H�����Y���]�VQ���y4����=�UY��̳W��LW�1rƭ��[�Baq�8Y��t䈩?b�%����L��[ ��r�[�T����|�h1��r&/��>�#��J�c�Y���
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1 +0,0 @@
1
- ����,N���G�UU2�|�N�m}��&67k�"��P.���(�p���B�4i�&� ��)�Hq�.l����)a��^.jUv�e�;��nJ+N���=�ARnnF���`$���.:�8�2)y����{�o��)��d�U�C�fQ4�� ��G+>�ӿZ rw�c&U��? �GQ��3])�tf��o_��z�5��Z�"'֭A��jM�茔)|=�'�;���U