s3tatistic 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/s3tatistic +36 -0
- data/lib/s3tatistic/amazon_s3.rb +43 -0
- data/lib/s3tatistic.rb +7 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f1a280d4769e8428c710252ddf3ef1dbc952e3f5
|
4
|
+
data.tar.gz: 9c04845ad85429683d3e28443446bf6201bdf048
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5e92c81951296796e8d7fdcc86a43270579bc805bb0dcb4d6aa006869ae3b364e2835977e9821444d01741253d4c4e5ee7b90004d9226f0c95d141eca259f775
|
7
|
+
data.tar.gz: ed87bb2c998caf171e41ea017d932f6994a634a6321642b7626d19ef5495e1f7325832deda51d32213a2dded8ce7cb89a03210e78fe7602805c405d580c196c4
|
data/bin/s3tatistic
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 's3tatistic'
|
5
|
+
require 'commander/import'
|
6
|
+
|
7
|
+
program :name, 's3tatistic'
|
8
|
+
program :version, '0.1.0'
|
9
|
+
program :description, 'Show statistics for your S3 buckets!'
|
10
|
+
|
11
|
+
command :buckets do |c|
|
12
|
+
c.syntax = 's3tatistic buckets [options]'
|
13
|
+
c.summary = 'list all buckets names'
|
14
|
+
c.description = 'Shows a list of all the buckets avaliable'
|
15
|
+
# c.example 'description', 'command example'
|
16
|
+
c.option '--block SIZE', 'Shows the file size in (k/m/g/t)'
|
17
|
+
c.action do |args, options|
|
18
|
+
options.default \
|
19
|
+
block: 'k'
|
20
|
+
$VERBOSE = nil # temp fix until better formatter
|
21
|
+
buckets = S3tatistic::AmazonS3.buckets
|
22
|
+
|
23
|
+
puts S3tatistic::Formatter.format_buckets(buckets, options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
command :info do |c|
|
28
|
+
c.syntax = 's3tatistic info [options]'
|
29
|
+
c.summary = ''
|
30
|
+
c.description = ''
|
31
|
+
c.action do |args, options|
|
32
|
+
# Do something or c.when_called S3tatistic::Commands::Creation,
|
33
|
+
puts 'oh no, not yet implemented'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
|
3
|
+
class S3tatistic::AmazonS3
|
4
|
+
class << self
|
5
|
+
def ss3 # static s3
|
6
|
+
@@s3 ||= Aws::S3::Resource.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def buckets
|
10
|
+
ss3.buckets.map(&:name).map {|b| info(b) rescue next}.select{|b| !b.nil?}
|
11
|
+
end
|
12
|
+
|
13
|
+
def info(bucket_name)
|
14
|
+
bucket = find_bucket(bucket_name)
|
15
|
+
objects = eager_objects(bucket) # AWS don't yield it correctly, so we get eager
|
16
|
+
{
|
17
|
+
name: bucket.name,
|
18
|
+
created_at: bucket.creation_date,
|
19
|
+
files_count: objects.count,
|
20
|
+
files_size: files_size(objects),
|
21
|
+
last_modified: last_modified(objects)
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def find_bucket(name)
|
26
|
+
ss3.bucket(name)
|
27
|
+
end
|
28
|
+
|
29
|
+
def eager_objects(bucket)
|
30
|
+
eager_load = []
|
31
|
+
bucket.objects.each { |o| eager_load << o }
|
32
|
+
eager_load
|
33
|
+
end
|
34
|
+
|
35
|
+
def files_size(objects)
|
36
|
+
objects.map(&:size).reduce(&:+) # yay, functional ruby
|
37
|
+
end
|
38
|
+
|
39
|
+
def last_modified(objects)
|
40
|
+
objects.sort_by(&:last_modified).reverse.first.key
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/s3tatistic.rb
ADDED
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: s3tatistic
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julien Lucca
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-03-10 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: julienlucca@gmail.com
|
15
|
+
executables:
|
16
|
+
- s3tatistic
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- bin/s3tatistic
|
21
|
+
- lib/s3tatistic.rb
|
22
|
+
- lib/s3tatistic/amazon_s3.rb
|
23
|
+
homepage:
|
24
|
+
licenses:
|
25
|
+
- MIT
|
26
|
+
metadata: {}
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 2.6.10
|
44
|
+
signing_key:
|
45
|
+
specification_version: 4
|
46
|
+
summary: Show statistics for your S3 buckets!
|
47
|
+
test_files: []
|