aliyun-oss-sync 0.0.1
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.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +70 -0
- data/README.md +25 -0
- data/Rakefile +44 -0
- data/aosss.gemspec +30 -0
- data/aosss.rdoc +5 -0
- data/bin/aliyun-oss-sync +82 -0
- data/features/aosss.feature +8 -0
- data/features/step_definitions/aosss_steps.rb +6 -0
- data/features/support/env.rb +15 -0
- data/lib/aosss.rb +20 -0
- data/lib/aosss/sync.rb +119 -0
- data/lib/aosss/version.rb +3 -0
- data/test/default_test.rb +14 -0
- data/test/test_helper.rb +9 -0
- metadata +178 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 77bf52c78219f3aa6964e3bdfdd4ea1f1b13daf4
|
4
|
+
data.tar.gz: 9ffb4d6a1597dba5f12a9364bbfc334f8028eadd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fd721ebdb99518edcccad6ee6945d0a1876460018a11dfdc75d4bf07c7f12448620101d34f377d9a57c6684b98dfd0841fa0f411ac0e56fc3f59d148c712047b
|
7
|
+
data.tar.gz: 5865bb41615fe77af1fb5c0548e6a5f42985ef732724ee7c78296b3fefade4fe28310e81c1bf7a66834019f3e93a08470e7ba0ff05e1d4bf629198f702c9f958
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
aliyun-oss-sync (0.0.1)
|
5
|
+
aliyun-oss
|
6
|
+
colored
|
7
|
+
gli (= 2.9.0)
|
8
|
+
listen
|
9
|
+
mime-types
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: http://ruby.taobao.org/
|
13
|
+
specs:
|
14
|
+
aliyun-oss (0.7.0.1349333720)
|
15
|
+
builder
|
16
|
+
mime-types
|
17
|
+
xml-simple
|
18
|
+
aruba (0.5.4)
|
19
|
+
childprocess (>= 0.3.6)
|
20
|
+
cucumber (>= 1.1.1)
|
21
|
+
rspec-expectations (>= 2.7.0)
|
22
|
+
builder (3.2.2)
|
23
|
+
celluloid (0.15.2)
|
24
|
+
timers (~> 1.1.0)
|
25
|
+
celluloid-io (0.15.0)
|
26
|
+
celluloid (>= 0.15.0)
|
27
|
+
nio4r (>= 0.5.0)
|
28
|
+
childprocess (0.5.1)
|
29
|
+
ffi (~> 1.0, >= 1.0.11)
|
30
|
+
colored (1.2)
|
31
|
+
cucumber (1.3.13)
|
32
|
+
builder (>= 2.1.2)
|
33
|
+
diff-lcs (>= 1.1.3)
|
34
|
+
gherkin (~> 2.12)
|
35
|
+
multi_json (>= 1.7.5, < 2.0)
|
36
|
+
multi_test (>= 0.1.1)
|
37
|
+
diff-lcs (1.2.5)
|
38
|
+
ffi (1.9.3)
|
39
|
+
gherkin (2.12.2)
|
40
|
+
multi_json (~> 1.3)
|
41
|
+
gli (2.9.0)
|
42
|
+
json (1.8.1)
|
43
|
+
listen (2.7.1)
|
44
|
+
celluloid (>= 0.15.2)
|
45
|
+
celluloid-io (>= 0.15.0)
|
46
|
+
rb-fsevent (>= 0.9.3)
|
47
|
+
rb-inotify (>= 0.9)
|
48
|
+
mime-types (2.2)
|
49
|
+
multi_json (1.9.2)
|
50
|
+
multi_test (0.1.1)
|
51
|
+
nio4r (1.0.0)
|
52
|
+
rake (10.2.1)
|
53
|
+
rb-fsevent (0.9.4)
|
54
|
+
rb-inotify (0.9.3)
|
55
|
+
ffi (>= 0.5.0)
|
56
|
+
rdoc (4.1.1)
|
57
|
+
json (~> 1.4)
|
58
|
+
rspec-expectations (2.14.5)
|
59
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
60
|
+
timers (1.1.0)
|
61
|
+
xml-simple (1.1.3)
|
62
|
+
|
63
|
+
PLATFORMS
|
64
|
+
ruby
|
65
|
+
|
66
|
+
DEPENDENCIES
|
67
|
+
aliyun-oss-sync!
|
68
|
+
aruba
|
69
|
+
rake
|
70
|
+
rdoc
|
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# aliyun-oss-sync
|
2
|
+
|
3
|
+
阿里云OSS同步工具
|
4
|
+
|
5
|
+
## 安装
|
6
|
+
|
7
|
+
gem install aliyun-oss-sync
|
8
|
+
|
9
|
+
## 同步
|
10
|
+
|
11
|
+
### 本地文件同步到OSS
|
12
|
+
|
13
|
+
OSS_ACCESS_ID=your-access-id \
|
14
|
+
OSS_ACCESS_SECRET=your-access-secret \
|
15
|
+
aliyun-oss-sync push bucket名称:远程目录 本地目录
|
16
|
+
|
17
|
+
### OSS文件同步到本地
|
18
|
+
|
19
|
+
OSS_ACCESS_ID=your-access-id \
|
20
|
+
OSS_ACCESS_SECRET=your-access-secret \
|
21
|
+
aliyun-oss-sync pull bucket名称:远程目录 本地目录
|
22
|
+
|
23
|
+
具体的参数可以用 `aliyun-oss-sync --help [子命令]` 查看
|
24
|
+
|
25
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rake/clean'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rubygems/package_task'
|
4
|
+
require 'rdoc/task'
|
5
|
+
require 'cucumber'
|
6
|
+
require 'cucumber/rake/task'
|
7
|
+
Rake::RDocTask.new do |rd|
|
8
|
+
rd.main = "README.rdoc"
|
9
|
+
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
10
|
+
rd.title = 'Your application title'
|
11
|
+
end
|
12
|
+
|
13
|
+
spec = eval(File.read('aosss.gemspec'))
|
14
|
+
|
15
|
+
Gem::PackageTask.new(spec) do |pkg|
|
16
|
+
end
|
17
|
+
CUKE_RESULTS = 'results.html'
|
18
|
+
CLEAN << CUKE_RESULTS
|
19
|
+
desc 'Run features'
|
20
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
21
|
+
opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
|
22
|
+
opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
|
23
|
+
t.cucumber_opts = opts
|
24
|
+
t.fork = false
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Run features tagged as work-in-progress (@wip)'
|
28
|
+
Cucumber::Rake::Task.new('features:wip') do |t|
|
29
|
+
tag_opts = ' --tags ~@pending'
|
30
|
+
tag_opts = ' --tags @wip'
|
31
|
+
t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
|
32
|
+
t.fork = false
|
33
|
+
end
|
34
|
+
|
35
|
+
task :cucumber => :features
|
36
|
+
task 'cucumber:wip' => 'features:wip'
|
37
|
+
task :wip => 'features:wip'
|
38
|
+
require 'rake/testtask'
|
39
|
+
Rake::TestTask.new do |t|
|
40
|
+
t.libs << "test"
|
41
|
+
t.test_files = FileList['test/*_test.rb']
|
42
|
+
end
|
43
|
+
|
44
|
+
task :default => [:test,:features]
|
data/aosss.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Ensure we require the local version and not one we might have installed already
|
2
|
+
require File.join([File.dirname(__FILE__),'lib','aosss','version.rb'])
|
3
|
+
spec = Gem::Specification.new do |s|
|
4
|
+
s.name = 'aliyun-oss-sync'
|
5
|
+
s.version = Aosss::VERSION
|
6
|
+
s.author = 'qhwa'
|
7
|
+
s.email = 'qhwa@163.com'
|
8
|
+
s.homepage = 'http://q.pnq.cc'
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.summary = 'Sync script for aliyun OSS'
|
11
|
+
s.files = `git ls-files`.split("
|
12
|
+
")
|
13
|
+
s.require_paths << 'lib'
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.extra_rdoc_files = ['README.md','aosss.rdoc']
|
16
|
+
s.rdoc_options << '--title' << 'aosss' << '--main' << 'README.rdoc' << '-ri'
|
17
|
+
s.bindir = 'bin'
|
18
|
+
s.executables << 'aliyun-oss-sync'
|
19
|
+
|
20
|
+
|
21
|
+
s.add_development_dependency('rake')
|
22
|
+
s.add_development_dependency('rdoc')
|
23
|
+
s.add_development_dependency('aruba')
|
24
|
+
|
25
|
+
s.add_runtime_dependency('gli','2.9.0')
|
26
|
+
s.add_runtime_dependency('aliyun-oss')
|
27
|
+
s.add_runtime_dependency('listen')
|
28
|
+
s.add_runtime_dependency('colored')
|
29
|
+
s.add_runtime_dependency('mime-types')
|
30
|
+
end
|
data/aosss.rdoc
ADDED
data/bin/aliyun-oss-sync
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'gli'
|
3
|
+
begin # XXX: Remove this begin/rescue before distributing your app
|
4
|
+
require 'aosss'
|
5
|
+
rescue LoadError
|
6
|
+
STDERR.puts "In development, you need to use `bundle exec bin/aosss` to run your app"
|
7
|
+
STDERR.puts "At install-time, RubyGems will make sure lib, etc. are in the load path"
|
8
|
+
STDERR.puts "Feel free to remove this message from bin/aosss now"
|
9
|
+
exit 64
|
10
|
+
end
|
11
|
+
|
12
|
+
include GLI::App
|
13
|
+
|
14
|
+
program_desc 'aliyun oss sync'
|
15
|
+
version Aosss::VERSION
|
16
|
+
|
17
|
+
#desc 'Describe some switch here'
|
18
|
+
#switch [:s,:switch]
|
19
|
+
|
20
|
+
desc 'aliyun access key id'
|
21
|
+
flag [:k, :key]
|
22
|
+
|
23
|
+
desc 'aliyun access key secret'
|
24
|
+
flag [:s, :secret]
|
25
|
+
|
26
|
+
pre do |global,command,options,args|
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
post do |global,command,options,args|
|
31
|
+
end
|
32
|
+
|
33
|
+
on_error do |exception|
|
34
|
+
# Error logic here
|
35
|
+
# return false to skip default error handling
|
36
|
+
puts exception.message
|
37
|
+
puts exception.backtrace
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
desc 'pull files from Aliyun OSS to local directory'
|
43
|
+
arg_name 'bucket'
|
44
|
+
|
45
|
+
command :pull do |c|
|
46
|
+
|
47
|
+
c.action do |global, options, args|
|
48
|
+
Aosss.pull key: global[:key],
|
49
|
+
secret: global[:secret],
|
50
|
+
remote: args[0],
|
51
|
+
local_path: args[1] || Dir.pwd
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
desc 'push files from local directory to Aliyun OSS'
|
57
|
+
command :push do |c|
|
58
|
+
c.desc 'only test, not do real file uploading'
|
59
|
+
c.switch [:d, :dryrun]
|
60
|
+
|
61
|
+
c.desc 'copy method'
|
62
|
+
c.default_value 'skip'
|
63
|
+
c.flag :method
|
64
|
+
|
65
|
+
c.action do |global, options, args|
|
66
|
+
Aosss.push key: global[:key],
|
67
|
+
secret: global[:secret],
|
68
|
+
dryrun: options[:dryrun],
|
69
|
+
method: options[:method],
|
70
|
+
remote: args[0],
|
71
|
+
local_path: args[1] || Dir.pwd
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc 'sync files between local directory and Aliyun OSS'
|
76
|
+
command :sync do |c|
|
77
|
+
c.action do
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
exit run(ARGV)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'aruba/cucumber'
|
2
|
+
|
3
|
+
ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
4
|
+
LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
|
5
|
+
|
6
|
+
Before do
|
7
|
+
# Using "announce" causes massive warnings on 1.9.2
|
8
|
+
@puts = true
|
9
|
+
@original_rubylib = ENV['RUBYLIB']
|
10
|
+
ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
After do
|
14
|
+
ENV['RUBYLIB'] = @original_rubylib
|
15
|
+
end
|
data/lib/aosss.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'aosss/version.rb'
|
2
|
+
require 'aosss/sync.rb'
|
3
|
+
|
4
|
+
module Aosss
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def pull( options )
|
8
|
+
Sync.new( options ).pull
|
9
|
+
end
|
10
|
+
|
11
|
+
def push( options )
|
12
|
+
Sync.new( options ).push
|
13
|
+
end
|
14
|
+
|
15
|
+
def sync( options )
|
16
|
+
Sync.new( options ).sync
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/lib/aosss/sync.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'colored'
|
2
|
+
require 'aliyun/oss'
|
3
|
+
require 'listen'
|
4
|
+
require 'find'
|
5
|
+
require 'pathname'
|
6
|
+
|
7
|
+
module Aosss
|
8
|
+
|
9
|
+
class Sync
|
10
|
+
|
11
|
+
attr_reader :bucket, :key, :secret, :remote, :remote_path, :local_path
|
12
|
+
|
13
|
+
def initialize( options )
|
14
|
+
@key = options[:key] || ENV['OSS_ACCESS_ID']
|
15
|
+
@secret = options[:secret] || ENV['OSS_ACCESS_SECRET']
|
16
|
+
@remote = options[:remote]
|
17
|
+
@dryrun = options[:dryrun]
|
18
|
+
@method = options[:method]
|
19
|
+
@local_path = File.expand_path(options[:local_path])
|
20
|
+
parse_remote
|
21
|
+
init_connection
|
22
|
+
end
|
23
|
+
|
24
|
+
def pull
|
25
|
+
step_info "pulling #{"(dryrun)" if @dryrun}"
|
26
|
+
|
27
|
+
print indent << "#{bucket}:#{remote_path}"
|
28
|
+
print " => "
|
29
|
+
print "local:#{local_path}\n"
|
30
|
+
end
|
31
|
+
|
32
|
+
def push
|
33
|
+
step_info "pushing #{"(dryrun)" if @dryrun}"
|
34
|
+
|
35
|
+
print "\n#{indent} " <<
|
36
|
+
"#{bucket}:#{remote_path}".bold <<
|
37
|
+
" => local:#{local_path}".bold <<
|
38
|
+
"\n\n"
|
39
|
+
|
40
|
+
Find.find( local_path ) do |path|
|
41
|
+
if File.basename(path).start_with? ?.
|
42
|
+
Find.prune
|
43
|
+
elsif !File.directory?(path)
|
44
|
+
file = short_path(path)
|
45
|
+
|
46
|
+
print indent << "=> ".black << file
|
47
|
+
|
48
|
+
if @method == "skip" and exist_on_oss?( File.join( remote_path, file ) )
|
49
|
+
print " ~skip\n".yellow
|
50
|
+
else
|
51
|
+
push_to_oss( file ) unless @dryrun
|
52
|
+
print " ✔\n".green
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def parse_remote
|
62
|
+
@bucket, @remote_path = @remote.split(":")
|
63
|
+
@remote_path ||= "/"
|
64
|
+
end
|
65
|
+
|
66
|
+
def init_connection
|
67
|
+
step_info "init connection"
|
68
|
+
Aliyun::OSS::Base.establish_connection!(
|
69
|
+
:access_key_id => key,
|
70
|
+
:secret_access_key => secret
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
def step_info( msg )
|
75
|
+
puts "----> #{msg}"
|
76
|
+
end
|
77
|
+
|
78
|
+
def indent
|
79
|
+
" " * 6
|
80
|
+
end
|
81
|
+
|
82
|
+
def short_path( path )
|
83
|
+
Pathname.new( path ).relative_path_from( Pathname.new( local_path ) ).to_path
|
84
|
+
end
|
85
|
+
|
86
|
+
def push_to_oss( file )
|
87
|
+
Aliyun::OSS::OSSObject.store(
|
88
|
+
File.join( remote_path, file ),
|
89
|
+
open(file),
|
90
|
+
bucket
|
91
|
+
)
|
92
|
+
end
|
93
|
+
|
94
|
+
def open( file )
|
95
|
+
File.open( File.expand_path(file, local_path) )
|
96
|
+
end
|
97
|
+
|
98
|
+
def exist_on_oss?( file )
|
99
|
+
oss_bucket
|
100
|
+
Aliyun::OSS::OSSObject.exists? file, bucket
|
101
|
+
end
|
102
|
+
|
103
|
+
def oss_bucket
|
104
|
+
@oss_bucket ||= Aliyun::OSS::Bucket.find bucket
|
105
|
+
end
|
106
|
+
|
107
|
+
public
|
108
|
+
|
109
|
+
def watch
|
110
|
+
Listen.to!( local_path, relative_paths: true ) do |modified, added, removed|
|
111
|
+
modified.each {|file| push_to_oss(file) }
|
112
|
+
added.each {|file| push_to_oss(file) }
|
113
|
+
removed.each {|file| del_in_oss(file) }
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aliyun-oss-sync
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- qhwa
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: aruba
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: gli
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.9.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.9.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aliyun-oss
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: listen
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: colored
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mime-types
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description:
|
126
|
+
email: qhwa@163.com
|
127
|
+
executables:
|
128
|
+
- aliyun-oss-sync
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files:
|
131
|
+
- README.md
|
132
|
+
- aosss.rdoc
|
133
|
+
files:
|
134
|
+
- Gemfile
|
135
|
+
- Gemfile.lock
|
136
|
+
- README.md
|
137
|
+
- Rakefile
|
138
|
+
- aosss.gemspec
|
139
|
+
- aosss.rdoc
|
140
|
+
- bin/aliyun-oss-sync
|
141
|
+
- features/aosss.feature
|
142
|
+
- features/step_definitions/aosss_steps.rb
|
143
|
+
- features/support/env.rb
|
144
|
+
- lib/aosss.rb
|
145
|
+
- lib/aosss/sync.rb
|
146
|
+
- lib/aosss/version.rb
|
147
|
+
- test/default_test.rb
|
148
|
+
- test/test_helper.rb
|
149
|
+
homepage: http://q.pnq.cc
|
150
|
+
licenses: []
|
151
|
+
metadata: {}
|
152
|
+
post_install_message:
|
153
|
+
rdoc_options:
|
154
|
+
- "--title"
|
155
|
+
- aosss
|
156
|
+
- "--main"
|
157
|
+
- README.rdoc
|
158
|
+
- "-ri"
|
159
|
+
require_paths:
|
160
|
+
- lib
|
161
|
+
- lib
|
162
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
requirements: []
|
173
|
+
rubyforge_project:
|
174
|
+
rubygems_version: 2.2.2
|
175
|
+
signing_key:
|
176
|
+
specification_version: 4
|
177
|
+
summary: Sync script for aliyun OSS
|
178
|
+
test_files: []
|