dbagger 0.1.0
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 +15 -0
- data/bin/dbagger +58 -0
- data/lib/dbagger.rb +51 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OWZmMjA2YTczYzQwYWM2OGQ3ZmQ3Mjk0YzdkZWIxNTBkM2ZlYTBiMg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjU0NWYzYmY5ZmIxNzM1ZDEwZjMwNDFkY2EyNWI2OGNmZTkxZjJhMg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OGU5OWU2YmE4YWY1MDI2YTI0NzU3NzYzOTJhNThjODgyMDZkMzRkOTNkMTA1
|
10
|
+
ZjIyY2UzYjBjZjk5NTU4YWRkMTA3NDBjN2E5ZTllZWVhZTkzODhiZTgwNDNm
|
11
|
+
MjhhY2Y0ZWQwY2JkYjU0NzdlZjgwNjYyMjQyNzM2YTBkYmU1NDg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NTAzNmUwYjYxMjhiYzg1ODM2MDA2NTUwMjk3YjI3YTg1MjQxM2FlMjc4Nzdi
|
14
|
+
NjBkYjBjNmEyYjJmOGViNWMxYWRlYmZlOGU4NzE5NzY0MDRhMWJkZThjZmJj
|
15
|
+
OGFlZWU3NmJlZThjMzY0MGU1NzBkMTZlMDlkODg3OGM3MzAzOTU=
|
data/bin/dbagger
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'optparse'
|
5
|
+
require 'dbagger'
|
6
|
+
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opt_parser = OptionParser.new do |opt|
|
10
|
+
opt.banner = "Usage: dbagger -u <username> -g <group1,group2>"
|
11
|
+
opt.separator ""
|
12
|
+
opt.separator "Options"
|
13
|
+
|
14
|
+
opt.on("-u","--username USERNAME","Username you want to create") do |username|
|
15
|
+
options[:username] = username
|
16
|
+
end
|
17
|
+
|
18
|
+
opt.on("-i","--gh-username USERNAME","Github username if different to --username") do |gh_username|
|
19
|
+
options[:gh_username] = gh_username
|
20
|
+
end
|
21
|
+
|
22
|
+
opt.on("-g","--groups GROUP1,GROUP2","Comma seperated list of groups to add user to") do |groups|
|
23
|
+
options[:groups] = groups
|
24
|
+
end
|
25
|
+
|
26
|
+
opt.on("-a","--api 'https://api.github.com'","defaults to 'https://api.github.com' if not set") do |github_api|
|
27
|
+
options[:github_api] = github_api.sub(/\/+$/,'')
|
28
|
+
end
|
29
|
+
|
30
|
+
opt.on("-s","--shell '/bin/bash'","defaults to '/bin/bash' if not set") do |shell|
|
31
|
+
options[:shell] = shell
|
32
|
+
end
|
33
|
+
|
34
|
+
opt.on("-a","--api github_API_URI","defaults to 'https://api.github.com' if not set") do |github_api|
|
35
|
+
options[:github_api] = github_api.sub(/\/+$/,'')
|
36
|
+
end
|
37
|
+
|
38
|
+
opt.on("-h","--help","help") do
|
39
|
+
puts opt_parser
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
opt_parser.parse!
|
44
|
+
|
45
|
+
options[:github_api] ||= ENV['github_api'] ||= 'https://api.github.com'
|
46
|
+
options[:shell] ||= '/bin/bash'
|
47
|
+
options[:gh_username] ||= options[:username]
|
48
|
+
if options[:username] && options[:groups]
|
49
|
+
if databag = Dbagger.collect_data(options)
|
50
|
+
puts databag.to_json
|
51
|
+
puts options if ENV['DEBUG']
|
52
|
+
else
|
53
|
+
puts 'something went wrong, check user username and api endpoint'
|
54
|
+
end
|
55
|
+
else
|
56
|
+
puts opt_parser
|
57
|
+
end
|
58
|
+
|
data/lib/dbagger.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# The main Dbagger driver
|
2
|
+
class Dbagger
|
3
|
+
# Connect to github API and grab user data
|
4
|
+
#
|
5
|
+
# Example:
|
6
|
+
# >> Dbagger.collect_data({...})
|
7
|
+
#
|
8
|
+
# Arguments:
|
9
|
+
# options: (Hash)
|
10
|
+
|
11
|
+
require 'rest_client'
|
12
|
+
require 'json'
|
13
|
+
|
14
|
+
def self.collect_data(options)
|
15
|
+
|
16
|
+
begin
|
17
|
+
response = RestClient.get("#{options[:github_api]}/users/#{options[:gh_username]}")
|
18
|
+
rescue => e
|
19
|
+
return false
|
20
|
+
end
|
21
|
+
gituser = JSON.parse(response.body)
|
22
|
+
|
23
|
+
return false if gituser['message'] == 'Not Found'
|
24
|
+
|
25
|
+
begin
|
26
|
+
response = RestClient.get("#{options[:github_api]}/users/#{options[:gh_username]}/keys")
|
27
|
+
rescue => e
|
28
|
+
return false
|
29
|
+
end
|
30
|
+
|
31
|
+
keys = []
|
32
|
+
|
33
|
+
return false if response.body == 'Not Found'
|
34
|
+
|
35
|
+
JSON.parse(response.body).each do |key|
|
36
|
+
keys.push(key['key'])
|
37
|
+
end
|
38
|
+
|
39
|
+
return false if keys.empty?
|
40
|
+
|
41
|
+
return {
|
42
|
+
id: options[:username],
|
43
|
+
ssh_keys: keys,
|
44
|
+
groups: options[:groups].split(','),
|
45
|
+
shell: options[:shell],
|
46
|
+
comment: gituser['name']
|
47
|
+
}
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dbagger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Paul Czarkowski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.6.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.6.7
|
27
|
+
description: creates user databags from github api results
|
28
|
+
email: username.taken@gmail.com
|
29
|
+
executables:
|
30
|
+
- dbagger
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- lib/dbagger.rb
|
35
|
+
- bin/dbagger
|
36
|
+
homepage: http://github.com/paulczar/dbagger
|
37
|
+
licenses:
|
38
|
+
- apache2
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 2.1.10
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: creates user databags from github api results
|
60
|
+
test_files: []
|