archive_uploader 0.1.0 → 0.2
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 +4 -4
- data/Gemfile +8 -1
- data/Guardfile +1 -1
- data/archive_uploader.gemspec +0 -4
- data/bin/archive_uploader +3 -1
- data/lib/archive_uploader.rb +13 -4
- data/lib/archive_uploader/cli.rb +79 -0
- data/lib/archive_uploader/curb.rb +11 -1
- data/lib/archive_uploader/version.rb +1 -1
- data/spec/archive_uploader/cli_spec.rb +33 -0
- data/spec/archive_uploader/curb_spec.rb +16 -1
- data/spec/archive_uploader_spec.rb +17 -0
- metadata +7 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1107ecbcb18b38de6731e64ca3bd90e61b1f6ec5
|
4
|
+
data.tar.gz: 5adbcf5ff19e898e74bd1633a896c84f540ed4f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a830ce2bf306e5c152cef5d21e896bd46aaa75c8f69c80c5e73b9e56e66468fc8e8d68f8bcc7b0970efd25348c283a758471841aac8e35b417e1b9ffa80078c
|
7
|
+
data.tar.gz: 95b6f09668382378c044ae155c4811a4281aaf127d087c02db4ec78e7f36f7ec421ae29c897cb5b43f537ed6e27eb4e2fc5d1cfcfcd8747078abfc5cb2cf9a8f
|
data/Gemfile
CHANGED
data/Guardfile
CHANGED
data/archive_uploader.gemspec
CHANGED
@@ -20,8 +20,4 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "rspec"
|
24
|
-
spec.add_development_dependency "guard"
|
25
|
-
spec.add_development_dependency "guard-rspec"
|
26
|
-
spec.add_development_dependency "pry"
|
27
23
|
end
|
data/bin/archive_uploader
CHANGED
data/lib/archive_uploader.rb
CHANGED
@@ -1,21 +1,30 @@
|
|
1
1
|
require 'curl'
|
2
|
+
require 'optparse'
|
3
|
+
require 'ostruct'
|
2
4
|
require 'tempfile'
|
3
5
|
require "archive_uploader/archiver"
|
4
6
|
require "archive_uploader/curb"
|
5
7
|
require "archive_uploader/git"
|
6
8
|
require "archive_uploader/version"
|
7
|
-
require
|
9
|
+
require "archive_uploader/cli"
|
8
10
|
|
9
11
|
module ArchiveUploader
|
10
12
|
module_function
|
11
|
-
def start(
|
13
|
+
def start(options)
|
14
|
+
@options = options
|
15
|
+
puts get_url
|
12
16
|
puts "Start uploading files"
|
13
|
-
@file = Archiver.new(:files =>
|
17
|
+
@file = Archiver.new(:files => options.directories).perform!
|
14
18
|
@git_data = Git.data
|
15
19
|
# puts @git_data
|
16
|
-
puts Curb.new(:file => @file.path, :fields => @git_data, :url => ENV["ARCHIVE_UPLOADER_URL"]).perform!
|
20
|
+
puts Curb.new(:file => @file.path, :fields => @git_data, :url => ENV["ARCHIVE_UPLOADER_URL"], :auth => options.auth).perform!
|
17
21
|
|
18
22
|
ensure
|
19
23
|
FileUtils.rm(@file)
|
20
24
|
end
|
25
|
+
|
26
|
+
|
27
|
+
def get_url
|
28
|
+
ENV["ARCHIVE_UPLOADER_URL"] || @options.url
|
29
|
+
end
|
21
30
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module ArchiveUploader
|
2
|
+
AUTH_METHODS = [:basic]
|
3
|
+
class CLIError < StandardError; end
|
4
|
+
class CLI
|
5
|
+
# return a structure describing the options
|
6
|
+
def self.parse(args)
|
7
|
+
options = OpenStruct.new
|
8
|
+
options.directories = []
|
9
|
+
options.verbose = false
|
10
|
+
options.auth = OpenStruct.new
|
11
|
+
|
12
|
+
opt_parser = OptionParser.new do |opts|
|
13
|
+
opts.banner = "Usage: archive_uploader [options]"
|
14
|
+
|
15
|
+
opts.separator ""
|
16
|
+
opts.separator "Specific options:"
|
17
|
+
|
18
|
+
# Directory
|
19
|
+
opts.on("-d", "--directory PATH",
|
20
|
+
"Add directory to archive") do |dir|
|
21
|
+
options.directories << dir
|
22
|
+
end
|
23
|
+
|
24
|
+
# List of arguments.
|
25
|
+
opts.on("-D x,y,z", Array, "Add list of files/directories") do |list|
|
26
|
+
options.directories += list
|
27
|
+
end
|
28
|
+
|
29
|
+
# Optional argument; auth method
|
30
|
+
opts.on("-a", "--authmethod [TYPE]",
|
31
|
+
"Set auth method",
|
32
|
+
" (default disabled)") do |method|
|
33
|
+
|
34
|
+
raise CLIError unless AUTH_METHODS.include?(method.to_sym)
|
35
|
+
# Screw ruby object defining #method
|
36
|
+
options.auth._method = method.to_sym
|
37
|
+
end
|
38
|
+
|
39
|
+
# Optional argument; auth user
|
40
|
+
opts.on("-u", "--authuser [USER]",
|
41
|
+
"Set auth user",
|
42
|
+
" (default none)") do |user|
|
43
|
+
options.auth.user = user
|
44
|
+
end
|
45
|
+
|
46
|
+
# Optional argument; auth password
|
47
|
+
opts.on("-p", "--authpassword [PASSWORD]",
|
48
|
+
"Set auth password",
|
49
|
+
" (default none)") do |password|
|
50
|
+
options.auth.password = password
|
51
|
+
end
|
52
|
+
|
53
|
+
# Verbose
|
54
|
+
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
55
|
+
options.verbose = v
|
56
|
+
end
|
57
|
+
|
58
|
+
opts.separator ""
|
59
|
+
opts.separator "Common options:"
|
60
|
+
|
61
|
+
# No argument, shows at tail. This will print an options summary.
|
62
|
+
# Try it and see!
|
63
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
64
|
+
puts opts
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
|
68
|
+
# Another typical switch to print the version.
|
69
|
+
opts.on_tail("--version", "Show version") do
|
70
|
+
puts ArchiveUploder::VERSION.join('.')
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
opt_parser.parse!(args)
|
76
|
+
options
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -3,12 +3,22 @@ module ArchiveUploader
|
|
3
3
|
def initialize(options={})
|
4
4
|
@options = options
|
5
5
|
@curl = Curl::Easy.new(@options[:url])
|
6
|
+
check_for_auth
|
6
7
|
end
|
7
8
|
|
8
9
|
def perform!
|
9
10
|
@curl.multipart_form_post = true
|
10
11
|
@curl.http_post(*post_data)
|
11
12
|
end
|
13
|
+
|
14
|
+
def check_for_auth
|
15
|
+
return unless @options[:auth]
|
16
|
+
if @options[:auth]._method == :basic
|
17
|
+
@curl.http_auth_types = :basic
|
18
|
+
@curl.username = @options[:auth].user
|
19
|
+
@curl.password = @options[:auth].password
|
20
|
+
end
|
21
|
+
end
|
12
22
|
|
13
23
|
def post_data
|
14
24
|
fields = @options[:fields].collect do |field, value|
|
@@ -17,4 +27,4 @@ module ArchiveUploader
|
|
17
27
|
[Curl::PostField.file('file[file]', @options[:file])] + fields
|
18
28
|
end
|
19
29
|
end
|
20
|
-
end
|
30
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ArchiveUploader::CLI do
|
4
|
+
it "returns list of directories when sent with -D" do
|
5
|
+
@argv = ["-D", "spec,bin"]
|
6
|
+
opts = ArchiveUploader::CLI.parse(@argv)
|
7
|
+
opts.directories.should =~ ["spec", "bin"]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns list of directories when sent with -d" do
|
11
|
+
@argv = ["-d", "spec", "-d", "bin"]
|
12
|
+
opts = ArchiveUploader::CLI.parse(@argv)
|
13
|
+
opts.directories.should =~ ["spec", "bin"]
|
14
|
+
end
|
15
|
+
|
16
|
+
it "sets auth.method to basic" do
|
17
|
+
@argv = ["-a", "basic"]
|
18
|
+
opts = ArchiveUploader::CLI.parse(@argv)
|
19
|
+
opts.auth._method.should eql(:basic)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "sets auth.user to root" do
|
23
|
+
@argv = ["-u", "root"]
|
24
|
+
opts = ArchiveUploader::CLI.parse(@argv)
|
25
|
+
opts.auth.user.should eql("root")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "sets auth.password to password" do
|
29
|
+
@argv = ["-p", "asdf"]
|
30
|
+
opts = ArchiveUploader::CLI.parse(@argv)
|
31
|
+
opts.auth.password.should eql("asdf")
|
32
|
+
end
|
33
|
+
end
|
@@ -46,4 +46,19 @@ describe ArchiveUploader::Curb do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
|
+
describe "auth data" do
|
51
|
+
before :each do
|
52
|
+
@fields = {:branch => "master", :commit => "12345abc"}
|
53
|
+
@auth = OpenStruct.new(:_method => :basic, :user => "asdf", :password => "1234")
|
54
|
+
@curb = ArchiveUploader::Curb.new(:url => @url, :file => @tmpfile, :fields => @fields, :auth => @auth)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "sets auth vars to curl object" do
|
58
|
+
@curl = @curb.instance_variable_get("@curl")
|
59
|
+
@curl.http_auth_types.should eql(1)
|
60
|
+
@curl.username.should eql("asdf")
|
61
|
+
@curl.password.should eql("1234")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
describe ArchiveUploader do
|
5
|
+
#it "sets basic methods (black box)" do
|
6
|
+
#@argv = ["-a", "basic", "-u", "user123", "-p", "sekret"]
|
7
|
+
|
8
|
+
#ArchiveUploader::Curb.any_instance.stub(:new) do
|
9
|
+
#@curl.http_auth_types.should eql(1)
|
10
|
+
#@curl.username.should eql("user123")
|
11
|
+
#@curl.password.should eql("sekret")
|
12
|
+
#end
|
13
|
+
|
14
|
+
#options = ArchiveUploader::CLI.parse(@argv)
|
15
|
+
#ArchiveUploader.start(options)
|
16
|
+
#end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: archive_uploader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Teodor Pripoae
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,62 +38,6 @@ dependencies:
|
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
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: guard
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard-rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - '>='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
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: pry
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
41
|
description: Upload stats to stat_fu webserver
|
98
42
|
email:
|
99
43
|
- teodor.pripoae@gmail.com
|
@@ -113,10 +57,13 @@ files:
|
|
113
57
|
- bin/archive_uploader
|
114
58
|
- lib/archive_uploader.rb
|
115
59
|
- lib/archive_uploader/archiver.rb
|
60
|
+
- lib/archive_uploader/cli.rb
|
116
61
|
- lib/archive_uploader/curb.rb
|
117
62
|
- lib/archive_uploader/git.rb
|
118
63
|
- lib/archive_uploader/version.rb
|
64
|
+
- spec/archive_uploader/cli_spec.rb
|
119
65
|
- spec/archive_uploader/curb_spec.rb
|
66
|
+
- spec/archive_uploader_spec.rb
|
120
67
|
- spec/spec_helper.rb
|
121
68
|
homepage: ''
|
122
69
|
licenses:
|
@@ -143,5 +90,7 @@ signing_key:
|
|
143
90
|
specification_version: 4
|
144
91
|
summary: Upload stats to stat_fu webserver
|
145
92
|
test_files:
|
93
|
+
- spec/archive_uploader/cli_spec.rb
|
146
94
|
- spec/archive_uploader/curb_spec.rb
|
95
|
+
- spec/archive_uploader_spec.rb
|
147
96
|
- spec/spec_helper.rb
|