devkit 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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDVmZGYwNTU1M2ZjODhhNmM2YWRlMTg2ZGQ3YjMwMTJiZDA2ZDIwOQ==
5
+ data.tar.gz: !binary |-
6
+ NWZiNjBiYWRjMWFmZGNiYjk4NWU2NWU5NmRjMDNkMDg0YjYwNzU0Mg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MDAwM2JkZWI5ZDI0ZmZmNGU0NjhjMTY2MzgyM2U0ODM0NmI0ZTViNjZhOGMx
10
+ NjVmNzM3ODJiOWFlM2VmNWYwYzc3YzhiODI1NzA3ODM2YjllNjJhZDFhMmJi
11
+ NDczMWMwMGQyODkxMGU1OTAzMzZiZGI1MGZlYmJkNGI1MDczYmQ=
12
+ data.tar.gz: !binary |-
13
+ NmEzNTUzYTBlMThlOGM3MjMxY2NlMGVlMDliNGNiYjQ1YjgzZDUwNGRkODdk
14
+ OGE0ZDk3ZTNiYWY0YTg3NmQ4ZTc4ZWI5ZDlkNDMxYmZmNjZlNGE2ZTExYjgz
15
+ ODY1NDJhNWI3MzEzYWE4ZDFmYjdkZDBkZDkwNDVmMjZjNGJmNDQ=
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
@@ -0,0 +1 @@
1
+ devkit
@@ -0,0 +1 @@
1
+ ruby-1.9.3
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in devkit.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2008-2013 The Egghead Creative
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,34 @@
1
+ # Dev Kit
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'devkit'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install devkit
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+ Refactor methods out of devkit module
23
+
24
+ ## Contributing
25
+
26
+ 1. Fork it
27
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
28
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
29
+ 4. Push to the branch (`git push origin my-new-feature`)
30
+ 5. Create new Pull Request
31
+
32
+ ## License
33
+
34
+ Copyright (c) 2008-2013 The Egghead Creative. This software is licensed under the MIT License.
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,184 @@
1
+ rspec:
2
+ INSTALL
3
+ =======
4
+
5
+ $ gem install rspec
6
+
7
+ RSPEC-RAILS
8
+ ===========
9
+
10
+ RAILS-3
11
+ =======
12
+
13
+ CONFIGURE THE GEMFILE
14
+ ======================
15
+ group :development, :test do
16
+ gem "rspec-rails", "~> 2.0"
17
+ end
18
+
19
+ INSTALL THE BUNDLE
20
+ ===============================
21
+ $ bundle install
22
+
23
+ BOOTSTRAP THE APP
24
+ =================
25
+ $ ./script/rails generate rspec:install
26
+ create .rspec
27
+ create spec
28
+ create spec/spec_helper.rb
29
+ create autotest
30
+ create autotest/discover.rb
31
+
32
+ RAILS-2
33
+ =======
34
+
35
+ INSTALL
36
+ =======
37
+ $ gem install rspec-rails -v 1.3.3
38
+
39
+ BOOTSTRAP THE APP
40
+ =================
41
+ $ ./script/generate rspec
42
+ create spec
43
+ create spec/spec_helper.rb
44
+ create spec/spec.opts
45
+ create previous_failures.txt
46
+ create script/spec_server
47
+ create script/spec
48
+
49
+ HOW TO USE
50
+ ==========
51
+
52
+ COMMAND LINE
53
+ =============
54
+ rspec --color --format doc spec/widget_spec.rb
55
+
56
+ RAILS 3 (RSPEC 2)
57
+ =============
58
+ ./rails/generate model User
59
+ rake -T spec # lists all rspec rake tasks
60
+ rake spec # run all specs
61
+ rake spec/models/mymodel_spec.rb # run a single spec file
62
+ rake spec/models/mymodel_spec.rb:27 # run a single example or group on line 27
63
+
64
+ RAILS 2 (RSPEC 1)
65
+ =============
66
+ ./script/generate rspec_model User
67
+ rake -T spec # lists all rspec rake tasks
68
+ rake spec # run all specs
69
+ rake spec SPEC=spec/models/mymodel_spec.rb SPEC_OPTS="-e \"should do
70
+ something\"" #run a single spec
71
+
72
+
73
+
74
+ module UserSpecHelper
75
+ def valid_user_attributes
76
+ { :email => "joe@bloggs.com",
77
+ :username => "joebloggs",
78
+ :password => "abcdefg"}
79
+ end
80
+ end
81
+
82
+
83
+ describe "A User (in general)" do
84
+ include UserSpecHelper
85
+
86
+ before(:each) do
87
+ @user = User.new
88
+ end
89
+
90
+ it "should be invalid without a username" do
91
+ pending "some other thing we depend on"
92
+ @user.attributes = valid_user_attributes.except(:username)
93
+ @user.should_not be_valid
94
+ @user.should have(1).error_on(:username)
95
+ @user.errors.on(:username).should == "is required"
96
+ @user.username = "someusername"
97
+ @user.should be_valid
98
+ end
99
+ end
100
+
101
+ EXPECTATIONS
102
+ =====================
103
+ target.should satisfy {|arg| ...}
104
+ target.should_not satisfy {|arg| ...}
105
+
106
+ target.should equal <value>
107
+ target.should_not equal <value>
108
+
109
+ target.should be_close <value>, <tolerance>
110
+ target.should_not be_close <value>, <tolerance>
111
+
112
+ target.should be <value>
113
+ target.should_not be <value>
114
+
115
+ target.should predicate [optional args]
116
+ target.should be_predicate [optional args]
117
+ target.should_not predicate [optional args]
118
+ target.should_not be_predicate [optional args]
119
+
120
+ target.should be < 6
121
+ target.should == 5
122
+ target.should be_between(1, 10)
123
+ target.should_not == 'Samantha'
124
+
125
+ target.should match <regex>
126
+ target.should_not match <regex>
127
+
128
+ target.should be_an_instance_of <class>
129
+ target.should_not be_an_instance_of <class>
130
+
131
+ target.should be_a_kind_of <class>
132
+ target.should_not be_a_kind_of <class>
133
+
134
+ target.should respond_to <symbol>
135
+ target.should_not respond_to <symbol>
136
+
137
+ lambda {a_call}.should raise_error
138
+ lambda {a_call}.should raise_error(<exception> [, message])
139
+ lambda {a_call}.should_not raise_error
140
+ lambda {a_call}.should_not raise_error(<exception> [, message])
141
+ lambda {a_call}.should change(instance, method).from(number).to(number)
142
+
143
+ proc.should throw <symbol>
144
+ proc.should_not throw <symbol>
145
+
146
+ target.should include <object>
147
+ target.should_not include <object>
148
+
149
+ target.should have(<number>).things
150
+ target.should have_at_least(<number>).things
151
+ target.should have_at_most(<number>).things
152
+
153
+ target.should have(<number>).errors_on(:field)
154
+
155
+ expect { thing.approve! }.to change(thing, :status).
156
+ from(Status::AWAITING_APPROVAL).
157
+ to(Status::APPROVED)
158
+
159
+ expect { thing.destroy }.to change(Thing, :count).by(-1)
160
+
161
+ Mocks and Stubs
162
+ ===============
163
+ user_mock = mock "User"
164
+ user_mock.should_receive(:authenticate).with("password").and_return(true)
165
+ user_mock.should_receive(:coffee).exactly(3).times.and_return(:americano)
166
+
167
+ user_mock.should_receive(:coffee).exactly(5).times.and_raise(NotEnoughCoffeeExc
168
+ ption)
169
+
170
+ people_stub = mock "people"
171
+ people_stub.stub!(:each).and_yield(mock_user)
172
+ people_stub.stub!(:bad_method).and_raise(RuntimeError)
173
+
174
+ user_stub = mock_model("User", :id => 23, :username => "pat", :email =>
175
+ "pat@example.com")
176
+
177
+ my_instance.stub!(:msg).and_return(value)
178
+ MyClass.stub!(:msg).and_return(value)
179
+
180
+ Examples (in the real world)
181
+
182
+ ============================
183
+ http://madhatted.com/2008/7/10/rspec-real-world-testing
184
+ presentation: http://kerryb.github.com/iprug-rspec-presentation/#31
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib devkit]))
3
+
4
+ require 'optparse'
5
+
6
+ args = ARGV
7
+
8
+ parser = OptionParser.new do |opts|
9
+ opts.banner = 'Usage: devkit [options] nick_name'
10
+ opts.separator ''
11
+
12
+ # specific options
13
+ opts.separator 'Devkit specific options:'
14
+
15
+ # devkit --init
16
+ opts.on_tail('-i', '--init', 'Intializing devkit, creating .devkit file') do
17
+ Devkit::Core.init!
18
+ end
19
+
20
+ # devkit --list
21
+ opts.on_tail('-l', '--list', 'Shows list of identities') do
22
+ Devkit::Identity.list
23
+ end
24
+
25
+ # devkit --purge
26
+ opts.on_tail('-p', '--purge', 'Removes all devkit generated files') do
27
+ Devkit::Core.purge!
28
+ end
29
+
30
+ # devkit --status
31
+ opts.on_tail('-s', '--status', 'Shows current identity') do
32
+ Devkit::Core.status
33
+ end
34
+
35
+ # devkit --remove praaveen
36
+ opts.on_tail('-r nick_name', '--remove nick_name', String, 'Removes identity from .devkit file') do |nick_name|
37
+ options = [:remove, nick_name]
38
+ Devkit::Identity.remove!(nick_name)
39
+ end
40
+
41
+ # devkit --change praaveen
42
+ opts.on_tail('-c nick_name', '--choose nick_name', String, 'Switches the identity') do |nick_name|
43
+ options = [:choose, nick_name]
44
+ Devkit::Identity.choose!(nick_name)
45
+ end
46
+
47
+ # devkit --add
48
+ opts.on_tail('-a', '--add', 'Adding a new identity to .devkit file') do
49
+ Devkit::Identity.add!
50
+ end
51
+
52
+ # devkit --drop
53
+ opts.on_tail('-d', '--drop', 'Drop existing identities') do
54
+ Devkit::Identity.drop!
55
+ end
56
+
57
+ # general options
58
+ opts.separator 'General options:'
59
+
60
+ # devkit --help
61
+ opts.on_tail('-h', '--help', 'Show this message') do
62
+ puts opts
63
+ exit
64
+ end
65
+
66
+ # devkit --version
67
+ opts.on_tail('-v', '--version', 'Show version') do
68
+ abort "Devkit v#{Devkit::VERSION}"
69
+ end
70
+ end
71
+
72
+ if args.any?
73
+ begin
74
+ parser.parse!(args)
75
+ rescue OptionParser::MissingArgument
76
+ puts "Missing an argument?"
77
+ puts ""
78
+ puts parser
79
+ rescue OptionParser::ParseError
80
+ puts "Missing an argument?"
81
+ puts ""
82
+ puts parser
83
+ end
84
+ else
85
+ puts parser
86
+ end
87
+
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'devkit/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "devkit"
8
+ spec.version = Devkit::VERSION
9
+ spec.authors = ["The Egghead Creative"]
10
+ spec.email = ["developers@eggheadcreative.com"]
11
+ spec.description = %q{Developer kit for switching between git and ssh identities}
12
+ spec.summary = %q{Developer kit for easily managing multiple user identities across machines}
13
+ spec.homepage = "http://eggheadcreative.com"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+
25
+ spec.add_runtime_dependency "highline"
26
+ spec.add_runtime_dependency "colorize"
27
+ end
@@ -0,0 +1,18 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__)))
2
+
3
+ require 'devkit/core'
4
+ require 'devkit/identity'
5
+ require 'devkit/git_identity'
6
+ require 'devkit/ssh_identity'
7
+ require 'devkit/version'
8
+
9
+ module Devkit
10
+ EXPIRY_TIME = 14400
11
+ DEVKIT_FILE_PATH = File.expand_path('~/.devkit')
12
+
13
+ class << self
14
+ def bin_path
15
+ %x[which devkit].chomp
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,53 @@
1
+ require "yaml"
2
+ require "highline/import"
3
+
4
+ module Devkit
5
+ class Core
6
+ class << self
7
+ def init!
8
+ if check_if_devkit_file_exists?
9
+ if agree(".devkit file already exist.You want to over ride existing file? (y/n)", true)
10
+ clear_existing_devkit_file
11
+ puts "Cleared existing identities in .devkit file"
12
+ else
13
+ puts "No changes made to the existing file."
14
+ end
15
+ else
16
+ puts "Creating .devkit file in your home directory. Try devkit --add for adding more identities to devkit."
17
+ File.new(DEVKIT_FILE_PATH, "w")
18
+ end
19
+ end
20
+
21
+ def purge!
22
+ if check_if_devkit_file_exists? && agree("Are you sure you want to clear existing devkit file? (y/n)", true)
23
+ clear_existing_devkit_file
24
+ end
25
+ end
26
+
27
+ def status
28
+ Devkit::GitIdentity::status
29
+ Devkit::SshIdentity::status
30
+ end
31
+
32
+ def clear_existing_devkit_file
33
+ File.truncate(DEVKIT_FILE_PATH, 0)
34
+ end
35
+
36
+ def identities
37
+ if check_if_devkit_file_exists?
38
+ YAML.load_file(DEVKIT_FILE_PATH) || {}
39
+ else
40
+ {}
41
+ end
42
+ end
43
+
44
+ def check_if_devkit_file_exists?
45
+ if File.exists?(DEVKIT_FILE_PATH)
46
+ return true
47
+ else
48
+ return false
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,41 @@
1
+ require 'colorize'
2
+
3
+ module Devkit
4
+ module GitIdentity
5
+ class << self
6
+ def check(identity)
7
+ config = identity["Full Name"] == %x[git config --global user.name].chomp &&
8
+ identity["Email"] == %x[git config --global user.email].chomp &&
9
+ identity["Github Id"] == %x[git config --global github.user].chomp
10
+
11
+ if config
12
+ puts "Git config switch successfull.".green
13
+ else
14
+ puts "Problem switching to #{identity['Full Name']}.".red
15
+ end
16
+ end
17
+
18
+ def status
19
+ username = `git config --global user.name`
20
+ print username
21
+ end
22
+
23
+ def choose(identity)
24
+ print "Switching git config to #{identity['Full Name']}, ".blue
25
+ $stdout.flush
26
+ system("git config --global user.name '#{identity['Full Name']}'")
27
+ system("git config --global user.email #{identity['Email']}")
28
+ system("git config --global github.user #{identity['Github Id']}")
29
+
30
+ check(identity)
31
+ end
32
+
33
+ def drop
34
+ puts "Dropping git config".blue
35
+ system("git config --global --unset-all user.name")
36
+ system("git config --global --unset-all user.email")
37
+ system("git config --global --unset-all github.user")
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,78 @@
1
+ require 'highline/import'
2
+ require 'colorize'
3
+
4
+ module Devkit
5
+ class Identity
6
+ attr_accessor :full_name, :email, :github_id, :ssh_identity
7
+
8
+ class << self
9
+ def list
10
+ puts Devkit::Core.identities.to_yaml
11
+ end
12
+
13
+ def remove!(nick_name)
14
+ existing_identities = Devkit::Core.identities
15
+ identity = existing_identities[nick_name]
16
+ if identity && agree("Are you sure you want to delete #{identity['Full Name']} (y/n)?", true)
17
+ new_identities = existing_identities.reject { |dev| dev == nick_name }
18
+ Devkit::Core.clear_existing_devkit_file
19
+ File.open(Devkit::DEVKIT_FILE_PATH, 'a+') do |f|
20
+ f.write(new_identities.to_yaml)
21
+ end
22
+ else
23
+ puts "#{nick_name} does not exist in .devkit identities"
24
+ #self.list
25
+ end
26
+ end
27
+
28
+ def choose!(nick_name)
29
+ identity = Devkit::Core.identities[nick_name]
30
+ if identity
31
+ Devkit::GitIdentity.choose(identity)
32
+ Devkit::SshIdentity.choose(identity)
33
+ expire_in(identity['Expires In'])
34
+ else
35
+ puts "#{nick_name} does not exist. Please try devkit --list to double check."
36
+ end
37
+ end
38
+
39
+ def drop!
40
+ Devkit::GitIdentity.drop
41
+ Devkit::SshIdentity.drop
42
+ end
43
+
44
+ def expire_in(time)
45
+ time ||= Devkit::EXPIRY_TIME
46
+ command = "sleep #{time} && #{Devkit.bin_path} --drop&"
47
+ puts "Setting the identity to expire in #{time} seconds"
48
+ system(command)
49
+ end
50
+
51
+ def add!
52
+ existing_identities = Devkit::Core.identities
53
+ nick_name = ask("Nick Name: ", String).to_s
54
+
55
+ if Devkit::Core.identities[nick_name]
56
+ puts "identity already exists"
57
+ list
58
+ else
59
+ new_identity = Hash.new
60
+ new_identity[nick_name] = Hash.new
61
+ new_identity[nick_name]["Full Name"] = ask("Full Name: ", String).to_s
62
+ new_identity[nick_name]["Email"] = ask("Email: ", String).to_s
63
+ new_identity[nick_name]["Github Id"] = ask("Github Id: ", String).to_s
64
+ new_identity[nick_name]["SSH Identity"] = ask("SSH Identity: ", String).to_s
65
+ new_identity[nick_name]["Expires In"] = EXPIRY_TIME
66
+
67
+ Devkit::Core.clear_existing_devkit_file
68
+
69
+ File.open(Devkit::DEVKIT_FILE_PATH, 'a+') do |f|
70
+ f.write(existing_identities.merge(new_identity).to_yaml)
71
+ end
72
+
73
+ list
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,53 @@
1
+ module Devkit
2
+ module SshIdentity
3
+ class << self
4
+ def choose(identity)
5
+ ssh_identity = File.join("~/.ssh/", identity['SSH Identity'])
6
+ print "Switching ssh identity to #{File.expand_path(ssh_identity)}, "
7
+ $stdout.flush
8
+
9
+ if File.exists?(File.expand_path(ssh_identity))
10
+ system("ssh-add -D")
11
+ system("ssh-add #{ssh_identity}")
12
+ else
13
+ puts "#{identity["Full Name"]}'s ssh keys not found. Skipping identity switch.".red
14
+ end
15
+
16
+ check(identity)
17
+ end
18
+
19
+ def check(identity)
20
+ ssh_identity = File.join("~/.ssh/", identity['SSH Identity'])
21
+ ssh_identities = %x[ssh-add -l].split("\n")
22
+
23
+ print "Checking identity, ".blue
24
+
25
+ $stdout.flush
26
+
27
+ if ssh_identities.length > 1
28
+ puts "Possible amibiguity. Please double check your identity".red
29
+ else
30
+ puts "Using ssh identity #{File.expand_path(ssh_identity)}".green
31
+ end
32
+ end
33
+
34
+ def status
35
+ ssh_identities = %x[ssh-add -l].split("\n")
36
+ puts ssh_identities
37
+ end
38
+
39
+ def drop
40
+ system("ssh-add -D")
41
+
42
+ ssh_identities = %x[ssh-add -l].split("\n")
43
+
44
+ if ssh_identities.length > 1
45
+ puts "Problem releasing existing identities. Possible amibiguity.".red
46
+ else
47
+ puts "Successfully dropped all the identities".green
48
+ end
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module Devkit
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Devkit::Core do
4
+ before do
5
+ #Devkit::Core.clean!
6
+ #Devkit::Core.init!
7
+ end
8
+
9
+ context 'developers config file' do
10
+ it 'developers config file path should be set' do
11
+ Devkit::Core::DEVKIT_FILE_PATH.should_not be_nil
12
+ end
13
+
14
+ it 'developers config file should be .developers' do
15
+ Devkit::Core::DEVKIT_FILE_PATH.should == File.expand_path('~/.developers')
16
+ end
17
+ end
18
+
19
+
20
+ #@TODO : Test it with a stub DEVELOPERS_FILE_PATH value
21
+ describe do
22
+ context '.init!' do
23
+ it 'should create .developers file if does not exist' do
24
+ File.exists?(File.expand_path('~/.developers')).should be_true
25
+ end
26
+ end
27
+ end
28
+
29
+ describe '.clean!' do
30
+ it 'should clean existing developers file' do
31
+ File.size(File.expand_path('~/.developers')).should equal(0)
32
+ end
33
+ end
34
+
35
+ describe '.developers' do
36
+ it 'should return list of existing developers' do
37
+ Devkit::Core::developers.is_a?(Hash).should be_true
38
+ end
39
+ end
40
+
41
+ describe '.check_if_developers_file_exists?' do
42
+ it 'should check if developers file exists' do
43
+ File.exists?(File.expand_path('~/.developers')).should be_true
44
+ end
45
+ end
46
+ end
@@ -0,0 +1 @@
1
+ require 'spec_helper'
@@ -0,0 +1 @@
1
+ require 'spec_helper'
@@ -0,0 +1 @@
1
+ require 'spec_helper'
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Devkit do
4
+
5
+ end
@@ -0,0 +1,8 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'devkit')
2
+
3
+ RSpec.configure do |config|
4
+ config.treat_symbols_as_metadata_keys_with_true_values = true
5
+ config.run_all_when_everything_filtered = true
6
+ config.filter_run :focus
7
+ config.order = 'random'
8
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: devkit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - The Egghead Creative
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
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: 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: highline
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
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: colorize
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
+ description: Developer kit for switching between git and ssh identities
84
+ email:
85
+ - developers@eggheadcreative.com
86
+ executables:
87
+ - devkit
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - .rspec
93
+ - .ruby-gemset
94
+ - .ruby-version
95
+ - Gemfile
96
+ - LICENSE.txt
97
+ - README.md
98
+ - Rakefile
99
+ - Rspec-example-matchers.txt
100
+ - bin/devkit
101
+ - devkit.gemspec
102
+ - lib/devkit.rb
103
+ - lib/devkit/core.rb
104
+ - lib/devkit/git_identity.rb
105
+ - lib/devkit/identity.rb
106
+ - lib/devkit/ssh_identity.rb
107
+ - lib/devkit/version.rb
108
+ - spec/devkit/core_spec.rb
109
+ - spec/devkit/git_identity_spec.rb
110
+ - spec/devkit/identity_spec.rb
111
+ - spec/devkit/ssh_identity_spec.rb
112
+ - spec/devkit_spec.rb
113
+ - spec/spec_helper.rb
114
+ homepage: http://eggheadcreative.com
115
+ licenses:
116
+ - MIT
117
+ metadata: {}
118
+ post_install_message:
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 2.0.6
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: Developer kit for easily managing multiple user identities across machines
138
+ test_files:
139
+ - spec/devkit/core_spec.rb
140
+ - spec/devkit/git_identity_spec.rb
141
+ - spec/devkit/identity_spec.rb
142
+ - spec/devkit/ssh_identity_spec.rb
143
+ - spec/devkit_spec.rb
144
+ - spec/spec_helper.rb