beg 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source :rubygems
2
+ group :development do
3
+ gem 'minitest'
4
+ gem 'pry', github: 'pry'
5
+ gem 'pry-de' # Pull in pry-full plus a few choice bits. More to come
6
+ gem 'guard'
7
+ gem 'guard-minitest'
8
+ gem 'rb-inotify', require: false # No harm when installed on OS X
9
+ gem 'rb-fsevent', require: false # No harm when installed on Linux!
10
+ gem 'turn'
11
+ gem 'rake'
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,135 @@
1
+ GIT
2
+ remote: git://github.com/pry/pry.git
3
+ revision: 14f7f86b8bff218f6a8b13c801b07ffb485648cb
4
+ specs:
5
+ pry (0.9.11)
6
+ coderay (~> 1.0.5)
7
+ method_source (~> 0.8)
8
+ slop (~> 3.3.1)
9
+
10
+ GEM
11
+ remote: http://rubygems.org/
12
+ specs:
13
+ ansi (1.4.3)
14
+ awesome_print (1.1.0)
15
+ binding_of_caller (0.6.8)
16
+ bond (0.4.2)
17
+ coderay (1.0.8)
18
+ columnize (0.3.6)
19
+ debugger (1.1.4)
20
+ columnize (>= 0.3.1)
21
+ debugger-linecache (~> 1.1.1)
22
+ debugger-ruby_core_source (~> 1.1.3)
23
+ debugger-linecache (1.1.2)
24
+ debugger-ruby_core_source (>= 1.1.1)
25
+ debugger-ruby_core_source (1.1.4)
26
+ diff-lcs (1.1.3)
27
+ diffy (2.1.0)
28
+ eventmachine (1.0.0)
29
+ ffi (1.1.5)
30
+ grit (2.5.0)
31
+ diff-lcs (~> 1.1)
32
+ mime-types (~> 1.15)
33
+ posix-spawn (~> 0.3.6)
34
+ guard (1.5.3)
35
+ listen (>= 0.4.2)
36
+ lumberjack (>= 1.0.2)
37
+ pry (>= 0.9.10)
38
+ thor (>= 0.14.6)
39
+ guard-minitest (0.5.0)
40
+ guard (>= 0.4)
41
+ highline (1.6.15)
42
+ interception (0.3)
43
+ jist (1.1.0)
44
+ json
45
+ json (1.7.5)
46
+ listen (0.5.3)
47
+ lumberjack (1.0.2)
48
+ method_source (0.8.1)
49
+ mime-types (1.19)
50
+ minitest (4.2.0)
51
+ nokogiri (1.5.5)
52
+ plymouth (0.3.3)
53
+ pry-exception_explorer (~> 0.1.7)
54
+ posix-spawn (0.3.6)
55
+ pry-awesome_print (9.6.5)
56
+ awesome_print (~> 1.1.0)
57
+ pry-de (0.0.4)
58
+ guard
59
+ pry-full
60
+ pry-debugger (0.2.0)
61
+ debugger (~> 1.1.3)
62
+ pry (~> 0.9.9)
63
+ pry-developer_tools (0.1.1)
64
+ pry (>= 0.9.8.pre, < 0.11)
65
+ pry-doc (0.4.4)
66
+ pry (>= 0.9.9.6)
67
+ yard (~> 0.8.1)
68
+ pry-editline (1.1.1)
69
+ pry-exception_explorer (0.1.9)
70
+ pry-stack_explorer (>= 0.3.9)
71
+ pry-full (0.6)
72
+ bond
73
+ jist
74
+ plymouth
75
+ pry-awesome_print
76
+ pry-debugger
77
+ pry-developer_tools
78
+ pry-doc
79
+ pry-editline
80
+ pry-exception_explorer
81
+ pry-git
82
+ pry-highlight
83
+ pry-pretty-numeric
84
+ pry-remote-em
85
+ pry-rescue
86
+ pry-stack_explorer
87
+ pry-syntax-hacks
88
+ pry-theme
89
+ pry-git (0.2.3)
90
+ diffy
91
+ grit
92
+ pry (>= 0.9.8)
93
+ pry-highlight (0.0.1)
94
+ coderay
95
+ json
96
+ nokogiri
97
+ pry
98
+ pry-pretty-numeric (0.1.1)
99
+ pry
100
+ pry-remote-em (0.7.3)
101
+ eventmachine
102
+ highline
103
+ pry (~> 0.9)
104
+ pry-rescue (0.13.pre.4)
105
+ interception (>= 0.3)
106
+ pry
107
+ pry-stack_explorer (0.4.7)
108
+ binding_of_caller (~> 0.6.8)
109
+ pry-syntax-hacks (0.0.6)
110
+ pry (>= 0.9.8)
111
+ pry-theme (0.1.3)
112
+ json
113
+ rake (0.9.2.2)
114
+ rb-fsevent (0.9.2)
115
+ rb-inotify (0.8.8)
116
+ ffi (>= 0.5.0)
117
+ slop (3.3.3)
118
+ thor (0.16.0)
119
+ turn (0.9.6)
120
+ ansi
121
+ yard (0.8.3)
122
+
123
+ PLATFORMS
124
+ ruby
125
+
126
+ DEPENDENCIES
127
+ guard
128
+ guard-minitest
129
+ minitest
130
+ pry!
131
+ pry-de
132
+ rake
133
+ rb-fsevent
134
+ rb-inotify
135
+ turn
data/Guardfile ADDED
@@ -0,0 +1,8 @@
1
+ # More info at https://github.com/guard/guard#readme
2
+ guard 'minitest' do
3
+ # with Minitest::Unit
4
+ watch %r|^test/.*_test\.rb|
5
+ watch %r|^lib/(.*)\.rb| do |m| "test/#{m[1]}_test.rb" end
6
+ watch %r|^test/test_helper\.rb| do 'test' end
7
+ end
8
+ # vim:ft=ruby
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ task :default do
2
+ puts 'Just run bin/beg. It replaces default rake tasks for tests.'
3
+ end
data/beg.gemspec ADDED
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ Gem::Specification.new do |gem|
3
+ gem.name = 'beg'
4
+ gem.homepage = 'http://github.com/rking/beg'
5
+ gem.summary = "'bundle exec guard' plus bonus features (mostly TΟDO)"
6
+ gem.description = 'Run a guard-like loop without a Guardfile'
7
+ gem.version = '0.0.1'
8
+ gem.license = 'CC0'
9
+ gem.email = 'beg@sharpsaw.org'
10
+ gem.authors = %w(☈king)
11
+
12
+ gem.files = `git ls-files`.split $/
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename f }
14
+ gem.test_files = gem.files.grep %r{^(test|spec|features)/}
15
+ gem.require_paths = %w(lib)
16
+ %w(pry-de guard).each do |dep| gem.add_dependency dep end
17
+ end
data/bin/beg ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ ## bundle exec guard + bonus workflow menu
3
+ require 'beg'
4
+ Beg.cli ARGV
data/junk/inner ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ alias actual_puts puts
4
+ def puts line
5
+ actual_puts "[Child pid: #$$ pgrp: #{Process.getpgrp}] #{line}"
6
+ end
7
+ # Heh, these may try to write an fd they can't write.
8
+ # trap :TTOU do puts 'TTOU' end
9
+ # trap :TTIN do puts 'TTOU' end
10
+ $stdin = open '/dev/tty'
11
+ fail unless $stdin
12
+ require 'termios'
13
+ p [ :getpgrp, Process.getpgrp, :pid, $$ ]
14
+ r = Termios.tcsetpgrp $stdin, Process.getpgrp
15
+ p [ :r, r ]
16
+ p [ :tcgetpgrp, Termios.tcgetpgrp($stdin) ]
17
+ puts "Now hit ^j, ^c or ^z…"
18
+ x = $stdin.readline
19
+ puts "Got #{x}"
data/junk/outer ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ alias actual_puts puts
3
+ def puts line
4
+ actual_puts "[Parent] #{line}"
5
+ end
6
+ trap :CHLD do
7
+ puts '(SIGCHLD)'
8
+ end
9
+
10
+ trap :TSTP do
11
+ puts 'Odd. (SIGTSTP)'
12
+ end
13
+
14
+ puts 'Expecting the next command to be controllable from here.'
15
+ kid_pid = spawn './inner', pgroup: true, in: __FILE__
16
+ puts 'After spawn'
17
+ $stdin.close
18
+
19
+ Process.wait kid_pid
20
+ puts $stdin.readline
21
+ puts 'At last line of "outer"'
data/lib/beg.rb ADDED
@@ -0,0 +1,38 @@
1
+ class Beg
2
+ attr_accessor :argv
3
+
4
+ def self.cli argv
5
+ Beg.new(argv).run
6
+ end
7
+
8
+ def initialize argv = []; @argv = argv end
9
+
10
+ def run
11
+ if File.exists? 'Guardfile'
12
+ run_with_guardfile
13
+ else
14
+ run_poor_man_style
15
+ end
16
+ end
17
+
18
+ def run_with_guardfile
19
+ verbose_system %w(bundle exec guard) + @argv
20
+ end
21
+
22
+ def run_poor_man_style
23
+ loop do
24
+ verbose_system ['inotifywait'] + Dir.glob('**/*.rb')
25
+ verbose_system %w(bundle exec rake test)
26
+ end
27
+ end
28
+
29
+ def verbose_system cmd
30
+ str = color 36, cmd.join(' ')
31
+ puts "Running: " + str
32
+ system *cmd
33
+ end
34
+
35
+ def color num, str
36
+ "\e[%dm%s\e[0m" % [num, str]
37
+ end
38
+ end
data/test/beg_test.rb ADDED
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+ require 'beg'
3
+
4
+ class BegTest < MiniTest::Unit::TestCase
5
+ def with_fake_system_interaction returns
6
+ beg = Beg.new
7
+ def beg.loop; yield end # Just go through once, thanks. ☺
8
+ calls = { verbose_system: [], dir_glob: [] }
9
+ beg.stub :verbose_system, -> *args {
10
+ calls[:verbose_system] << args
11
+ } do
12
+ File.stub :exists?, -> *arg {
13
+ calls[:file_exists] = arg
14
+ r = returns[:file_exists]
15
+ returns[:file_exists][arg[0]]
16
+ } do
17
+ Dir.stub :glob, -> *args {
18
+ calls[:dir_glob] << args
19
+ returns[:dir_glob]
20
+ } do
21
+ yield beg
22
+ end
23
+ end
24
+ end
25
+ calls
26
+ end
27
+ def test_poor_mans
28
+ calls = with_fake_system_interaction \
29
+ file_exists: {'Guardfile' => false},
30
+ dir_glob: ['lib/foo.rb'] do |beg|
31
+ beg.run
32
+ end
33
+ watch_cmd, test_cmd = calls[:verbose_system]
34
+ assert_equal 'Guardfile', calls[:file_exists][0]
35
+ assert_equal [%w(inotifywait lib/foo.rb)], watch_cmd
36
+ assert_equal [%w(bundle exec rake test)], test_cmd
37
+ end
38
+
39
+ def test_with_guardfile
40
+ calls = with_fake_system_interaction \
41
+ file_exists: {'Guardfile' => true} do |beg|
42
+ beg.argv = ['--someflag']
43
+ beg.run
44
+ end
45
+ watch_cmd, test_cmd = calls[:verbose_system]
46
+ assert_equal 'Guardfile', calls[:file_exists][0]
47
+ assert_equal [%w(bundle exec guard --someflag)], calls[:verbose_system][0]
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'pry-rescue/minitest'
3
+ $:.unshift './lib'
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: beg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - ☈king
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pry-de
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: guard
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Run a guard-like loop without a Guardfile
47
+ email: beg@sharpsaw.org
48
+ executables:
49
+ - beg
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - Gemfile.lock
56
+ - Guardfile
57
+ - Rakefile
58
+ - beg.gemspec
59
+ - bin/beg
60
+ - junk/inner
61
+ - junk/outer
62
+ - lib/beg.rb
63
+ - test/beg_test.rb
64
+ - test/test_helper.rb
65
+ homepage: http://github.com/rking/beg
66
+ licenses:
67
+ - CC0
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 1.8.24
87
+ signing_key:
88
+ specification_version: 3
89
+ summary: ! '''bundle exec guard'' plus bonus features (mostly TΟDO)'
90
+ test_files:
91
+ - test/beg_test.rb
92
+ - test/test_helper.rb
93
+ has_rdoc: