cachivache 0.2.3 → 0.3.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.
- checksums.yaml +4 -4
- data/bin/template/Gemfile +2 -1
- data/bin/template/Rakefile +37 -3
- data/bin/template/Vagrantfile +14 -12
- data/bin/template/cachivache.rb +1 -1
- data/bin/template/stuff/php-site-sample/cachivache-com.rb +4 -4
- data/bin/template/stuff/php-site-sample/config.rb +2 -2
- data/bin/template/{lib → utilities}/stuff-configuration.rb +2 -0
- data/lib/cachivache/version.rb +1 -1
- metadata +3 -12
- data/bin/template/lib/rake-helper.rb +0 -53
- data/bin/template/lib/shell-contexts/shell-context.rb +0 -63
- data/bin/template/lib/shell-contexts/shell-exec.rb +0 -19
- data/bin/template/lib/shell-contexts/shell_buffer.rb +0 -25
- data/bin/template/lib/shell-contexts/shell_debugger.rb +0 -11
- data/bin/template/lib/shell-file-context.rb +0 -36
- data/bin/template/lib/shell-if-context.rb +0 -21
- data/bin/template/lib/stuff-api-behaviour.rb +0 -145
- data/bin/template/lib/stuff-reminders-behaviour.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3057e44a88c0f053f9d6a60541f0acf8a45f9278
|
4
|
+
data.tar.gz: 26bfabc484bffff7e437b221cb4e82981959e6a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a2e63fbfbc9c455df606679bdfceca6b9622ed0a78ebbcceac470a34b8606928e64ee16b8eadef4cbe784d48428d7dd5c8064a6dc366f9d554e0bf541bee88d
|
7
|
+
data.tar.gz: b04204bfd561b2a22b24814d67fdd2b967ec8d0c8b0a324afde9c3f2e0043be730c7706154b33656ad63125bb60d1dec3ae6e9e63fc51f54aaa2b658598bd6d0
|
data/bin/template/Gemfile
CHANGED
data/bin/template/Rakefile
CHANGED
@@ -1,13 +1,47 @@
|
|
1
|
-
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
require_relative 'cachivache'
|
4
|
+
require 'cabeza-de-termo/cachivache-helpers/helpers'
|
5
|
+
|
6
|
+
######################################
|
7
|
+
# Include all stuffs behaviours
|
8
|
+
######################################
|
9
|
+
|
10
|
+
include Stuff::ApiBehaviour
|
11
|
+
include Stuff::RemindersBehaviour
|
12
|
+
include RakeAdaptor
|
13
|
+
ShellContext.set_current( ShellExec.new(self) )
|
14
|
+
|
15
|
+
######################################
|
16
|
+
# Validate the provision configuration
|
17
|
+
######################################
|
2
18
|
|
3
19
|
raise_validation_error "Please define the parameter Cachivache.git_user_email in './cachivache.rb' run 'vagrant provision' again" unless Cachivache.is_defined?(:git_user_email)
|
4
20
|
raise_validation_error "Please define the parameter Cachivache.git_user_name in './cachivache.rb' run 'vagrant provision' again" unless Cachivache.is_defined?(:git_user_name)
|
5
21
|
raise_validation_error "Please define some Cachivache.stuff_to_install in './cachivache.rb' run 'vagrant provision' again" if Cachivache.stuff_to_install.empty?
|
6
22
|
|
23
|
+
######################################
|
24
|
+
# Load all the .rb files in this folder
|
25
|
+
######################################
|
26
|
+
|
27
|
+
all_rb_files_in Cachivache.cachivache_folder do |file|
|
28
|
+
require file
|
29
|
+
end
|
30
|
+
|
31
|
+
######################################
|
32
|
+
# Define the tasks that run the provision
|
33
|
+
######################################
|
34
|
+
|
35
|
+
def stuff_to_install(&block)
|
36
|
+
Cachivache.stuff_to_install.each do |stuff_name|
|
37
|
+
block.call stuff_name
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
7
41
|
def provision_stuff_to_install()
|
8
42
|
stuff_to_install do |stuff_name|
|
9
43
|
show_info "Provisioning #{stuff_name}"
|
10
|
-
|
44
|
+
invoke_stuff stuff_name
|
11
45
|
end
|
12
46
|
show_info "All done!!!"
|
13
47
|
end
|
@@ -17,7 +51,7 @@ stuff :provision do
|
|
17
51
|
end
|
18
52
|
|
19
53
|
stuff :explain do
|
20
|
-
ShellContext.set_current ShellDebugger.new
|
54
|
+
ShellContext.set_current ShellDebugger.new(self)
|
21
55
|
provision_stuff_to_install
|
22
56
|
end
|
23
57
|
|
data/bin/template/Vagrantfile
CHANGED
@@ -39,23 +39,25 @@ Vagrant.configure(2) do |config|
|
|
39
39
|
type: "shell",
|
40
40
|
privileged: false,
|
41
41
|
inline: %Q{
|
42
|
-
|
43
|
-
|
42
|
+
# From https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-ubuntu-14-04
|
43
|
+
if [ ! -d $HOME/.rbenv/ ]; then
|
44
44
|
|
45
|
-
|
45
|
+
sudo apt-get update
|
46
46
|
|
47
|
-
|
48
|
-
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
|
49
|
-
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
|
47
|
+
sudo apt-get install git-core -y
|
50
48
|
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
git clone git://github.com/sstephenson/rbenv.git .rbenv
|
50
|
+
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
|
51
|
+
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
|
54
52
|
|
55
|
-
|
53
|
+
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
|
54
|
+
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
|
55
|
+
source ~/.bash_profile
|
56
56
|
|
57
|
-
|
58
|
-
|
57
|
+
git clone git://github.com/carsomyr/rbenv-bundler.git ~/.rbenv/plugins/bundler
|
58
|
+
|
59
|
+
sudo gem install bundler
|
60
|
+
fi
|
59
61
|
}
|
60
62
|
|
61
63
|
config.vm.provision "rake-provision",
|
data/bin/template/cachivache.rb
CHANGED
@@ -21,13 +21,13 @@ namespace :'cachivache-com' do
|
|
21
21
|
task :'enable-site' do
|
22
22
|
shell %Q{
|
23
23
|
# Copy .conf to /etc/apache2/sites-available
|
24
|
-
sudo cp -f #{Cachivache.
|
24
|
+
sudo cp -f #{Cachivache.stuff_folder}/php-site-sample/cachivache-com.conf /etc/apache2/sites-available
|
25
25
|
|
26
26
|
# Enable cachivache-com.conf
|
27
27
|
sudo a2ensite cachivache-com.conf
|
28
28
|
|
29
29
|
# Link the /data/www to the actual src location
|
30
|
-
sudo ln -s #{CachivacheDotCom.app_folder}/web /var/www/cachivache
|
30
|
+
sudo ln -s #{CachivacheDotCom.app_folder}/web /var/www/cachivache.com
|
31
31
|
}
|
32
32
|
end
|
33
33
|
|
@@ -54,7 +54,7 @@ namespace :'cachivache-com' do
|
|
54
54
|
|
55
55
|
task :'populate-mysql' do
|
56
56
|
shell %Q{
|
57
|
-
mysql -uroot -p#{MysqlServer.root_password} < #{Cachivache.
|
57
|
+
mysql -uroot -p#{MysqlServer.root_password} < #{Cachivache.stuff_folder}/php-site-sample/populate-mysql.sql
|
58
58
|
}
|
59
59
|
end
|
60
|
-
end
|
60
|
+
end
|
data/lib/cachivache/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cachivache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Rubi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -86,22 +86,13 @@ files:
|
|
86
86
|
- bin/template/Rakefile
|
87
87
|
- bin/template/Vagrantfile
|
88
88
|
- bin/template/cachivache.rb
|
89
|
-
- bin/template/lib/rake-helper.rb
|
90
|
-
- bin/template/lib/shell-contexts/shell-context.rb
|
91
|
-
- bin/template/lib/shell-contexts/shell-exec.rb
|
92
|
-
- bin/template/lib/shell-contexts/shell_buffer.rb
|
93
|
-
- bin/template/lib/shell-contexts/shell_debugger.rb
|
94
|
-
- bin/template/lib/shell-file-context.rb
|
95
|
-
- bin/template/lib/shell-if-context.rb
|
96
|
-
- bin/template/lib/stuff-api-behaviour.rb
|
97
|
-
- bin/template/lib/stuff-configuration.rb
|
98
|
-
- bin/template/lib/stuff-reminders-behaviour.rb
|
99
89
|
- bin/template/stuff/.gitkeep
|
100
90
|
- bin/template/stuff/php-site-sample/cachivache-com.conf
|
101
91
|
- bin/template/stuff/php-site-sample/cachivache-com.rb
|
102
92
|
- bin/template/stuff/php-site-sample/config.rb
|
103
93
|
- bin/template/stuff/php-site-sample/populate-mysql.sql
|
104
94
|
- bin/template/stuff/stuff-sample.rb
|
95
|
+
- bin/template/utilities/stuff-configuration.rb
|
105
96
|
- cachivache.gemspec
|
106
97
|
- lib/cachivache.rb
|
107
98
|
- lib/cachivache/add-stuff-libraries-command.rb
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'colorize'
|
3
|
-
require 'pathname'
|
4
|
-
|
5
|
-
require_relative '../cachivache'
|
6
|
-
|
7
|
-
# Helper - Iterate all .rb files in a folder
|
8
|
-
def all_rb_files_in(folder, &block)
|
9
|
-
Dir[Pathname.new(folder) + '**/*.rb'].each do |file|
|
10
|
-
block.call(file)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def stuff_to_install(&block)
|
15
|
-
Cachivache.stuff_to_install.each do |stuff_name|
|
16
|
-
block.call stuff_name
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
public
|
21
|
-
|
22
|
-
######################################
|
23
|
-
# require all the files in /lib first
|
24
|
-
######################################
|
25
|
-
|
26
|
-
all_rb_files_in Cachivache.cachivache_folder + '/lib' do |file|
|
27
|
-
require file
|
28
|
-
end
|
29
|
-
|
30
|
-
######################################
|
31
|
-
# Stuff Api behaviour
|
32
|
-
######################################
|
33
|
-
|
34
|
-
def stuff(task_definition, *args, &block)
|
35
|
-
task(task_definition, *args, &block)
|
36
|
-
end
|
37
|
-
|
38
|
-
def execute_shell_command(command)
|
39
|
-
sh command
|
40
|
-
end
|
41
|
-
|
42
|
-
include Stuff::ApiBehaviour
|
43
|
-
include Stuff::RemindersBehaviour
|
44
|
-
|
45
|
-
ShellContext.set_current( ShellExec.new(self) )
|
46
|
-
|
47
|
-
######################################
|
48
|
-
# Load the rest of the files
|
49
|
-
######################################
|
50
|
-
|
51
|
-
all_rb_files_in Cachivache.cachivache_folder do |file|
|
52
|
-
require file
|
53
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
class ShellContext
|
2
|
-
@current = nil
|
3
|
-
@reminders = []
|
4
|
-
|
5
|
-
def self.current()
|
6
|
-
@current
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.set_current(shell_context)
|
10
|
-
@current = shell_context
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.during_shell_context(new_shell_context, &block)
|
14
|
-
current_shell_context = @current
|
15
|
-
|
16
|
-
@current = new_shell_context
|
17
|
-
|
18
|
-
block.call
|
19
|
-
|
20
|
-
@current = current_shell_context
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.reminders()
|
24
|
-
@reminders
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.show_info(text)
|
28
|
-
puts '-----------------------------------------------'.red
|
29
|
-
puts text.green
|
30
|
-
puts '-----------------------------------------------'.red
|
31
|
-
end
|
32
|
-
|
33
|
-
# Instance methods
|
34
|
-
|
35
|
-
def shell(command)
|
36
|
-
raise 'Subclass responsibility'
|
37
|
-
end
|
38
|
-
|
39
|
-
def shell!(command)
|
40
|
-
raise 'Subclass responsibility'
|
41
|
-
end
|
42
|
-
|
43
|
-
def invoke(task_name, *args)
|
44
|
-
Rake::Task[task_name].invoke(*args)
|
45
|
-
end
|
46
|
-
|
47
|
-
def execute(task_name, *args)
|
48
|
-
Rake::Task[task_name].execute(*args)
|
49
|
-
end
|
50
|
-
|
51
|
-
def remind_to(text)
|
52
|
-
ShellContext.reminders << text
|
53
|
-
end
|
54
|
-
|
55
|
-
def raise_validation_error(message)
|
56
|
-
show_info(message)
|
57
|
-
exit
|
58
|
-
end
|
59
|
-
|
60
|
-
def show_info(text)
|
61
|
-
ShellContext.show_info(text)
|
62
|
-
end
|
63
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require_relative 'shell-context'
|
2
|
-
|
3
|
-
class ShellExec < ShellContext
|
4
|
-
def initialize(scope)
|
5
|
-
@scope = scope
|
6
|
-
end
|
7
|
-
|
8
|
-
def scope()
|
9
|
-
@scope
|
10
|
-
end
|
11
|
-
|
12
|
-
def shell(command)
|
13
|
-
shell! command
|
14
|
-
end
|
15
|
-
|
16
|
-
def shell!(command)
|
17
|
-
scope.execute_shell_command(command)
|
18
|
-
end
|
19
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative 'shell-context'
|
2
|
-
|
3
|
-
class ShellBuffer < ShellContext
|
4
|
-
def initialize(underlaying_shell_context)
|
5
|
-
@underlaying_shell_context = underlaying_shell_context
|
6
|
-
@contents = ''
|
7
|
-
end
|
8
|
-
|
9
|
-
def underlaying_shell_context()
|
10
|
-
@underlaying_shell_context
|
11
|
-
end
|
12
|
-
|
13
|
-
def contents
|
14
|
-
@contents
|
15
|
-
end
|
16
|
-
|
17
|
-
def shell(command)
|
18
|
-
contents << "\n" unless contents.empty?
|
19
|
-
contents << command
|
20
|
-
end
|
21
|
-
|
22
|
-
def shell!(command)
|
23
|
-
underlaying_shell_context.shell! command
|
24
|
-
end
|
25
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require_relative 'stuff-api-behaviour'
|
2
|
-
|
3
|
-
class ShellFileContext
|
4
|
-
include Stuff::ApiBehaviour
|
5
|
-
|
6
|
-
def self.with(args, &block)
|
7
|
-
new(args).evaluate_with block
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(args)
|
11
|
-
@filename = args[:file]
|
12
|
-
end
|
13
|
-
|
14
|
-
def evaluate_with(block)
|
15
|
-
instance_eval(&block)
|
16
|
-
end
|
17
|
-
|
18
|
-
# replace pattern: "user: ''", with: "user: 'admin'"
|
19
|
-
def replace(params)
|
20
|
-
pattern = params[:pattern]
|
21
|
-
replacement = params[:with]
|
22
|
-
%Q{
|
23
|
-
sudo sed -i 's|#{pattern}|#{replacement}|g' #{@filename}
|
24
|
-
}
|
25
|
-
end
|
26
|
-
|
27
|
-
# append '[mongo]'
|
28
|
-
# append :new_line
|
29
|
-
def append(text)
|
30
|
-
text = "\n" if text == :new_line
|
31
|
-
|
32
|
-
%Q{
|
33
|
-
echo "#{text}" | sudo tee -a #{@filename}
|
34
|
-
}
|
35
|
-
end
|
36
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require_relative 'stuff-api-behaviour'
|
2
|
-
|
3
|
-
class ShellIfContext
|
4
|
-
include Stuff::ApiBehaviour
|
5
|
-
|
6
|
-
def self.with(args, &block)
|
7
|
-
new(args).evaluate_with block
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(args)
|
11
|
-
@guard = args[:guard]
|
12
|
-
end
|
13
|
-
|
14
|
-
def evaluate_with(block)
|
15
|
-
shell "if #{@guard}; then"
|
16
|
-
|
17
|
-
instance_eval(&block)
|
18
|
-
|
19
|
-
shell "fi"
|
20
|
-
end
|
21
|
-
end
|
@@ -1,145 +0,0 @@
|
|
1
|
-
module Stuff
|
2
|
-
module ApiBehaviour
|
3
|
-
def shell_context()
|
4
|
-
ShellContext.current
|
5
|
-
end
|
6
|
-
|
7
|
-
def invoke(task_name, *args)
|
8
|
-
shell_context.invoke(task_name, *args)
|
9
|
-
end
|
10
|
-
|
11
|
-
def execute(task_name, *args)
|
12
|
-
shell_context.execute(task_name, *args)
|
13
|
-
end
|
14
|
-
|
15
|
-
def shell(command)
|
16
|
-
shell_context.shell(command)
|
17
|
-
end
|
18
|
-
|
19
|
-
def shell!(command)
|
20
|
-
shell_context.shell!(command)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Examples:
|
24
|
-
#
|
25
|
-
# shell_unless file_exists: '/bla.conf' do
|
26
|
-
# shell %Q{
|
27
|
-
# ls -la
|
28
|
-
# rm -rf bla
|
29
|
-
# }
|
30
|
-
# end
|
31
|
-
#
|
32
|
-
# shell_unless folder_exists: '/bla' do
|
33
|
-
# shell %Q{
|
34
|
-
# ls -la
|
35
|
-
# rm -rf bla
|
36
|
-
# }
|
37
|
-
# end
|
38
|
-
#
|
39
|
-
# shell_unless file: '/bla', contains: 'some regex' do
|
40
|
-
# shell %Q{
|
41
|
-
# ls -la
|
42
|
-
# rm -rf bla
|
43
|
-
# }
|
44
|
-
# end
|
45
|
-
#
|
46
|
-
# shell_unless command: 'java -version', contains: 'java 1.8' do
|
47
|
-
# shell %Q{
|
48
|
-
# ls -la
|
49
|
-
# rm -rf bla
|
50
|
-
# }
|
51
|
-
# end
|
52
|
-
#
|
53
|
-
def shell_unless(params, &block)
|
54
|
-
if params.key?(:file_exists)
|
55
|
-
shell unless_file_exists(params[:file_exists], &block)
|
56
|
-
return
|
57
|
-
end
|
58
|
-
if params.key?(:folder_exists)
|
59
|
-
shell unless_folder_exists(params[:folder_exists], &block)
|
60
|
-
return
|
61
|
-
end
|
62
|
-
if params.key?(:file) && params.key?(:contains)
|
63
|
-
shell unless_regex_in_file(params[:contains], params[:file], &block)
|
64
|
-
return
|
65
|
-
end
|
66
|
-
if params.key?(:command) && params.key?(:contains)
|
67
|
-
shell unless_regex_in_command(params[:contains], params[:command], &block)
|
68
|
-
return
|
69
|
-
end
|
70
|
-
raise 'Invalid unless option'
|
71
|
-
end
|
72
|
-
|
73
|
-
# Examples:
|
74
|
-
#
|
75
|
-
# in_file "/bla.conf" do
|
76
|
-
# shell replace pattern: "%user%", with: "admin"
|
77
|
-
#
|
78
|
-
# shell append "[cachivache]"
|
79
|
-
# shell append "path='/bla'"
|
80
|
-
# end
|
81
|
-
def in_file(filename, &block)
|
82
|
-
script = during_shell_buffer do
|
83
|
-
ShellFileContext.with(file: filename, &block)
|
84
|
-
end
|
85
|
-
|
86
|
-
shell script
|
87
|
-
end
|
88
|
-
|
89
|
-
# Examples:
|
90
|
-
#
|
91
|
-
# remind_to 'This is shown when the provision ends'
|
92
|
-
def remind_to(text)
|
93
|
-
shell_context.remind_to(text)
|
94
|
-
end
|
95
|
-
|
96
|
-
def raise_validation_error(message)
|
97
|
-
shell_context.raise_validation_error(message)
|
98
|
-
end
|
99
|
-
|
100
|
-
# Example:
|
101
|
-
#
|
102
|
-
# configure :Something do
|
103
|
-
# let(:bla) { '123' }
|
104
|
-
# let(:ble) { 'abc' }
|
105
|
-
# end
|
106
|
-
def configure(class_name, &block)
|
107
|
-
Stuff::Configuration.ensure_subclass_exists(class_name)
|
108
|
-
Stuff::Configuration.class_named(class_name).instance_eval(&block)
|
109
|
-
end
|
110
|
-
|
111
|
-
protected
|
112
|
-
|
113
|
-
def during_shell_buffer(&block)
|
114
|
-
temporary_shell_buffer = ShellBuffer.new(shell_context)
|
115
|
-
|
116
|
-
ShellContext.during_shell_context(temporary_shell_buffer, &block)
|
117
|
-
|
118
|
-
temporary_shell_buffer.contents
|
119
|
-
end
|
120
|
-
|
121
|
-
def unless_file_exists(filename, &block)
|
122
|
-
during_shell_buffer do
|
123
|
-
ShellIfContext.with(guard: "[ ! -e #{filename} ]", &block)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def unless_folder_exists(folder, &block)
|
128
|
-
during_shell_buffer do
|
129
|
-
ShellIfContext.with(guard: "[ ! -d #{folder} ]", &block)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def unless_regex_in_file(regex, filename, &block)
|
134
|
-
during_shell_buffer do
|
135
|
-
ShellIfContext.with(guard: "! grep -q \"#{regex}\" \"#{filename}\"", &block)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
def unless_regex_in_command(regex, command, &block)
|
140
|
-
during_shell_buffer do
|
141
|
-
ShellIfContext.with(guard: "! #{command} | grep -q \"#{regex}\"", &block)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|