hobo-inviqa 0.0.2 → 0.0.3

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.
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hobo-inviqa (0.0.2)
5
- bundler
6
- highline
7
- rake
8
- rake-hooks
9
- slop
4
+ hobo-inviqa (0.0.3)
5
+ bundler (~> 1.5.2)
6
+ highline (~> 1.6.20)
7
+ rake (~> 10.1.1)
8
+ rake-hooks (~> 1.2.3)
9
+ slop (~> 3.4.7)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
@@ -81,13 +81,11 @@ PLATFORMS
81
81
  ruby
82
82
 
83
83
  DEPENDENCIES
84
- aruba
85
- bundler
86
- fakefs
84
+ aruba (~> 0.5.4)
85
+ fakefs (~> 0.5.0)
87
86
  guard (~> 2.2.5)
88
87
  guard-cucumber (~> 1.4.1)
89
88
  guard-rspec (~> 4.2.4)
90
89
  hobo-inviqa!
91
- rake
92
- rr
93
- rspec
90
+ rr (~> 1.1.2)
91
+ rspec (~> 2.14.1)
@@ -0,0 +1,74 @@
1
+ # Hobo (gem)
2
+ Hobo is small rake based tool designed to assist with day to day tasks for developers.
3
+ Some highlights of functionality include:
4
+
5
+ - Fetch common tools
6
+ - Start most project VMs including setting up dependencies
7
+ - Utilize project seeds to kickstart a new project
8
+
9
+ Many more features are planned including assisting with host machine configuration, automatically pulling assets for the VM and providing commonly rewritten tasks as general utility libraries for use in Hobofiles.
10
+
11
+ # Pre-requisites
12
+ Hobo is a thin wrapper over our commonly used tools. As such, those tools still need to be present on your machine.
13
+ Hobo requires the following tools to be available on your path; if you can't execute these commands from a terminal you will need to install them before using hobo:
14
+
15
+ - git
16
+ - ruby
17
+ - rubygems
18
+ - bundler (rubygem)
19
+ - vagrant
20
+
21
+ # Installing
22
+ Simply execute the following command:
23
+ ```
24
+ gem install hobo-inviqa
25
+ ```
26
+
27
+ # Usage
28
+ Hobo is installed as a gem with a globally available binary called "hobo". Hobo allows you to get help for any command by specifying the --help option.
29
+ ```
30
+ hobo --help
31
+ ```
32
+
33
+ # Project specific commands
34
+ You can define project specific commands by creating a file in the root of the project called 'Hobofile'. Since hobo is based on Rake, you can use the normal Rake DSL to specify commands. Hobo also includes enhancements to this DSL that will be detailed later.
35
+
36
+ A task to download some specific files might look like:
37
+ ```
38
+ desc "My-project tasks"
39
+ namespace "my-project" do
40
+ desc "Download images"
41
+ task "download-images" do
42
+ Net::HTTP.get("my-domain.com", "/my-file.jpg")
43
+ end
44
+ end
45
+ ```
46
+
47
+ The above command would then be immediately available in hobo:
48
+ ```
49
+ hobo my-project download-files
50
+ ```
51
+
52
+ # Rake DSL enhancements
53
+ This section is yet to be written; please see lib/hobo/patches/rake.rb and the internal tasks (for usage) under lib/hobo/tasks for the time being.
54
+
55
+ - long_desc - Long description provided by help
56
+ - option - Specify command line option
57
+ - hidden - Hide task
58
+ - replace - Replace a task with a new one
59
+ - before - Execute task before other task
60
+ - after - Execute task after other task
61
+
62
+ Please note that replace, before and after should be used sparingly to augment or modify the internal tasks provided by hobo on a per project level.
63
+
64
+ # Contributing
65
+ If you wish to contribute to hobo:
66
+ - Clone this repository
67
+ - Execute bundle install
68
+ - Create a feature branch with descriptive name (i.e. feature/magento-tasks)
69
+ - Make changes
70
+ - Build and install the gem: rake build && rake install
71
+ - Push feature branch back to this repo
72
+ - Submit a PR with details of changes
73
+
74
+ You can run tests using Guard by executing "guard" in a terminal in the project folder. Guard will re-run tests where it knows how but otherwise run cucumber tests with "cucumber" (in the guard terminal) and rspec tests with "rspec" (in the guard terminal).
@@ -18,19 +18,16 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- # TODO pin
22
- spec.add_dependency "slop"
23
- spec.add_dependency "highline"
24
- spec.add_dependency "rake"
25
- spec.add_dependency "rake-hooks"
26
- spec.add_dependency "bundler"
21
+ spec.add_dependency "slop", "~> 3.4.7"
22
+ spec.add_dependency "highline", "~> 1.6.20"
23
+ spec.add_dependency "rake", "~> 10.1.1"
24
+ spec.add_dependency "rake-hooks", "~> 1.2.3"
25
+ spec.add_dependency "bundler", "~> 1.5.2"
27
26
 
28
- spec.add_development_dependency "bundler"
29
- spec.add_development_dependency "rake"
30
- spec.add_development_dependency "aruba"
31
- spec.add_development_dependency "rspec"
32
- spec.add_development_dependency "fakefs"
33
- spec.add_development_dependency "rr"
27
+ spec.add_development_dependency "aruba", "~> 0.5.4"
28
+ spec.add_development_dependency "rspec", "~> 2.14.1"
29
+ spec.add_development_dependency "fakefs", "~> 0.5.0"
30
+ spec.add_development_dependency "rr", "~> 1.1.2"
34
31
  spec.add_development_dependency "guard", "~> 2.2.5"
35
32
  spec.add_development_dependency "guard-rspec", "~> 4.2.4"
36
33
  spec.add_development_dependency "guard-cucumber", "~> 1.4.1"
@@ -58,6 +58,10 @@ module Hobo
58
58
  if Hobo.in_project? && File.exists?(Hobo.hobofile_path)
59
59
  load Hobo.hobofile_path
60
60
  end
61
+
62
+ if File.exists?(Hobo.user_hobofile_path)
63
+ load Hobo.user_hobofile_path
64
+ end
61
65
  end
62
66
 
63
67
  def define_global_opts slop
@@ -26,6 +26,15 @@ module Hobo
26
26
  end
27
27
  end
28
28
 
29
+ def vm_ip
30
+ [
31
+ 10,
32
+ [*0..255].sample,
33
+ [*0..255].sample,
34
+ [*2..255].sample
35
+ ].join('.')
36
+ end
37
+
29
38
  def version
30
39
  Dir.chdir @seed_path do
31
40
  Hobo::Helper.shell 'git', 'rev-parse', '--short', 'HEAD', :capture => true
@@ -45,5 +45,9 @@ module Hobo
45
45
  def user_config_file
46
46
  File.join(config_path, 'config.rb')
47
47
  end
48
+
49
+ def user_hobofile_path
50
+ File.join(config_path, 'Hobofile')
51
+ end
48
52
  end
49
53
  end
@@ -6,7 +6,7 @@ namespace :deps do
6
6
 
7
7
  desc "Install Gem dependencies"
8
8
  task :gems do
9
- locate("*Gemfile", missing: "No Gemfile found") do
9
+ locate "*Gemfile" do
10
10
  Hobo.ui.title "Installing Gem dependencies"
11
11
  Bundler.with_clean_env do
12
12
  shell "bundle", "install", realtime: true, indent: 2
@@ -20,19 +20,31 @@ namespace :deps do
20
20
  if File.exists? File.join(Hobo.project_path, "composer.json")
21
21
  Rake::Task["tools:composer"].invoke
22
22
  Hobo.ui.title "Installing composer dependencies"
23
- shell "php", File.join(Hobo.project_bin_path, 'composer.phar'), "install", "--ansi", realtime: true, indent: 2
23
+ Dir.chdir Hobo.project_path do
24
+ shell "php", File.join(Hobo.project_bin_path, 'composer.phar'), "install", "--ansi", realtime: true, indent: 2
25
+ end
24
26
  end
25
27
  Hobo.ui.separator
26
28
  end
27
29
 
28
30
  desc "Install vagrant plugins"
29
- task :vagrant_plugins do
30
- Hobo.ui.error "Vagrant plugins can't be installed automatically yet"
31
+ task :vagrant_plugins => [ "deps:gems" ] do
32
+ plugins = shell "vagrant plugin list", :capture => true
33
+ locate "*Vagrantfile" do
34
+ File.read("Vagrantfile").split("\n").each do |line|
35
+ next unless line.match /Vagrant\.require_plugin (.*)/
36
+ plugin = $1.gsub(/['"]*/, '')
37
+ next if plugins.include? "#{plugin} "
38
+ Hobo.ui.title "Installing vagrant plugin: #{plugin}"
39
+ bundle_shell "vagrant", "plugin", "install", plugin, :realtime => true, :indent => 2
40
+ Hobo.ui.separator
41
+ end
42
+ end
31
43
  end
32
44
 
33
45
  desc "Install chef dependencies"
34
46
  task :chef do
35
- locate("*Cheffile", missing: "No Cheffile found") do
47
+ locate "*Cheffile" do
36
48
  Hobo.ui.title "Installing chef dependencies"
37
49
  Bundler.with_clean_env do
38
50
  bundle_shell "librarian-chef", "install", "--verbose", realtime: true, indent: 2 do |line|
@@ -33,6 +33,8 @@ namespace :seed do
33
33
  config[:seed][:url]
34
34
  )
35
35
 
36
+ config[:vm_ip] = seed.vm_ip
37
+
36
38
  Hobo::Lib::Seed::Project.new().setup(seed, config)
37
39
 
38
40
  Hobo.ui.separator
@@ -2,16 +2,16 @@ desc "VM related commands"
2
2
  project_only
3
3
  namespace :vm do
4
4
  def vagrantfile &block
5
- locate("*Vagrantfile", missing: "No Vagrantfile found") do
5
+ locate "*Vagrantfile" do
6
6
  yield
7
7
  end
8
8
  end
9
9
 
10
- desc "Start VM"
11
- task :start => [ 'deps:gems', 'deps:chef', 'deps:composer', 'vm:up', 'vm:start' ]
10
+ desc "Start & provision VM"
11
+ task :up => [ 'deps:gems', 'deps:chef', 'deps:composer', 'deps:vagrant_plugins', 'vm:start', 'vm:provision' ]
12
12
 
13
13
  desc "Stop VM"
14
- task :stop do
14
+ task :stop => [ "deps:gems" ] do
15
15
  vagrantfile do
16
16
  Hobo.ui.title "Stopping VM"
17
17
  bundle_shell "vagrant", "suspend", "--color", realtime: true, indent: 2
@@ -20,18 +20,19 @@ namespace :vm do
20
20
  end
21
21
 
22
22
  desc "Rebuild VM"
23
- task :rebuild => [ 'vm:destroy', 'vm:start' ]
23
+ task :rebuild => [ 'vm:destroy', 'vm:up' ]
24
24
 
25
25
  desc "Destroy VM"
26
- task :destroy do
26
+ task :destroy => [ "deps:gems" ] do
27
27
  vagrantfile do
28
- Hobo.ui.title "Stopping VM"
29
- bundle_shell "vagrant", "destroy", "--color", realtime: true, indent: 2
28
+ Hobo.ui.title "Destroying VM"
29
+ bundle_shell "vagrant", "destroy", "--force", "--color", realtime: true, indent: 2
30
30
  Hobo.ui.separator
31
31
  end
32
32
  end
33
33
 
34
- task :up do
34
+ desc "Start VM without provision"
35
+ task :start => [ "deps:gems" ] do
35
36
  vagrantfile do
36
37
  Hobo.ui.title "Starting vagrant VM"
37
38
  bundle_shell "vagrant", "up", "--no-provision", "--color", realtime: true, indent: 2
@@ -39,7 +40,8 @@ namespace :vm do
39
40
  end
40
41
  end
41
42
 
42
- task :provision do
43
+ desc "Provision VM"
44
+ task :provision => [ "deps:gems" ] do
43
45
  vagrantfile do
44
46
  Hobo.ui.title "Provisioning VM"
45
47
  bundle_shell "vagrant", "provision", "--color", realtime: true, indent: 2
@@ -1,3 +1,3 @@
1
1
  module Hobo
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hobo-inviqa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,184 +9,152 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-30 00:00:00.000000000 Z
12
+ date: 2014-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: slop
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 3.4.7
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 3.4.7
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: highline
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 1.6.20
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 1.6.20
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rake
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 10.1.1
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 10.1.1
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rake-hooks
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ! '>='
67
+ - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: 1.2.3
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ! '>='
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: 1.2.3
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: bundler
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - ! '>='
83
+ - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 1.5.2
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: bundler
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: rake
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
91
+ - - ~>
124
92
  - !ruby/object:Gem::Version
125
- version: '0'
93
+ version: 1.5.2
126
94
  - !ruby/object:Gem::Dependency
127
95
  name: aruba
128
96
  requirement: !ruby/object:Gem::Requirement
129
97
  none: false
130
98
  requirements:
131
- - - ! '>='
99
+ - - ~>
132
100
  - !ruby/object:Gem::Version
133
- version: '0'
101
+ version: 0.5.4
134
102
  type: :development
135
103
  prerelease: false
136
104
  version_requirements: !ruby/object:Gem::Requirement
137
105
  none: false
138
106
  requirements:
139
- - - ! '>='
107
+ - - ~>
140
108
  - !ruby/object:Gem::Version
141
- version: '0'
109
+ version: 0.5.4
142
110
  - !ruby/object:Gem::Dependency
143
111
  name: rspec
144
112
  requirement: !ruby/object:Gem::Requirement
145
113
  none: false
146
114
  requirements:
147
- - - ! '>='
115
+ - - ~>
148
116
  - !ruby/object:Gem::Version
149
- version: '0'
117
+ version: 2.14.1
150
118
  type: :development
151
119
  prerelease: false
152
120
  version_requirements: !ruby/object:Gem::Requirement
153
121
  none: false
154
122
  requirements:
155
- - - ! '>='
123
+ - - ~>
156
124
  - !ruby/object:Gem::Version
157
- version: '0'
125
+ version: 2.14.1
158
126
  - !ruby/object:Gem::Dependency
159
127
  name: fakefs
160
128
  requirement: !ruby/object:Gem::Requirement
161
129
  none: false
162
130
  requirements:
163
- - - ! '>='
131
+ - - ~>
164
132
  - !ruby/object:Gem::Version
165
- version: '0'
133
+ version: 0.5.0
166
134
  type: :development
167
135
  prerelease: false
168
136
  version_requirements: !ruby/object:Gem::Requirement
169
137
  none: false
170
138
  requirements:
171
- - - ! '>='
139
+ - - ~>
172
140
  - !ruby/object:Gem::Version
173
- version: '0'
141
+ version: 0.5.0
174
142
  - !ruby/object:Gem::Dependency
175
143
  name: rr
176
144
  requirement: !ruby/object:Gem::Requirement
177
145
  none: false
178
146
  requirements:
179
- - - ! '>='
147
+ - - ~>
180
148
  - !ruby/object:Gem::Version
181
- version: '0'
149
+ version: 1.1.2
182
150
  type: :development
183
151
  prerelease: false
184
152
  version_requirements: !ruby/object:Gem::Requirement
185
153
  none: false
186
154
  requirements:
187
- - - ! '>='
155
+ - - ~>
188
156
  - !ruby/object:Gem::Version
189
- version: '0'
157
+ version: 1.1.2
190
158
  - !ruby/object:Gem::Dependency
191
159
  name: guard
192
160
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +215,7 @@ files:
247
215
  - Gemfile.lock
248
216
  - Guardfile
249
217
  - Hobofile
218
+ - README.md
250
219
  - Rakefile
251
220
  - bin/hobo
252
221
  - features/deps.feature
@@ -312,7 +281,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
312
281
  version: '0'
313
282
  segments:
314
283
  - 0
315
- hash: -1849982170960379119
284
+ hash: -3066616493160973172
316
285
  required_rubygems_version: !ruby/object:Gem::Requirement
317
286
  none: false
318
287
  requirements:
@@ -321,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
290
  version: '0'
322
291
  segments:
323
292
  - 0
324
- hash: -1849982170960379119
293
+ hash: -3066616493160973172
325
294
  requirements: []
326
295
  rubyforge_project:
327
296
  rubygems_version: 1.8.23