dbagger 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/bin/dbagger +58 -0
  3. data/lib/dbagger.rb +51 -0
  4. 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: []