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.
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: []