devkit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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