automaker 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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/README.rdoc +28 -0
- data/Rakefile +19 -0
- data/VERSION +1 -0
- data/automaker.gemspec +49 -0
- data/bin/automaker +5 -0
- data/lib/automaker.rb +46 -0
- metadata +71 -0
data/.document
ADDED
data/.gitignore
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
= automaker
|
2
|
+
|
3
|
+
This tool is inspired by autotest/autospec and automatically calls make when something changes in the directory it monitors. I added the 'r' in automakeR because I don't want to clash with GNU automake.
|
4
|
+
|
5
|
+
== Prerequisites and dependencies
|
6
|
+
|
7
|
+
* uses FSEvents API so work only on Mac OS X
|
8
|
+
* requires fsevents gem
|
9
|
+
|
10
|
+
== Installing
|
11
|
+
|
12
|
+
It's on gemcutter so just do:
|
13
|
+
|
14
|
+
$ sudo gem install fsevents automaker
|
15
|
+
|
16
|
+
== Using
|
17
|
+
|
18
|
+
Like autospec:
|
19
|
+
|
20
|
+
$ automaker [/path/to/watch]
|
21
|
+
|
22
|
+
== Todo
|
23
|
+
|
24
|
+
* need to make it return a proper exit code
|
25
|
+
* make it react to ctrl-c autospec-style
|
26
|
+
- ctrl-c c to make clean
|
27
|
+
- ctrl-c a to make all
|
28
|
+
- ctrl-c ctrl-c to exit
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "automaker"
|
8
|
+
gem.summary = "Not autotest, not autospec, but automake(r)"
|
9
|
+
gem.description = "Will monitor a directory using fsevents api and call make when something changes. Only works on Mac OS X."
|
10
|
+
gem.email = "ronaldpaulusevers@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/ronaldevers/automaker"
|
12
|
+
gem.authors = ["Ronald Evers"]
|
13
|
+
gem.add_dependency "fsevents", ">= 0.1.1"
|
14
|
+
end
|
15
|
+
Jeweler::GemcutterTasks.new
|
16
|
+
rescue LoadError
|
17
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
18
|
+
end
|
19
|
+
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/automaker.gemspec
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{automaker}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Ronald Evers"]
|
12
|
+
s.date = %q{2009-12-15}
|
13
|
+
s.default_executable = %q{automaker}
|
14
|
+
s.description = %q{Will monitor a directory using fsevents api and call make when something changes. Only works on Mac OS X.}
|
15
|
+
s.email = %q{ronaldpaulusevers@gmail.com}
|
16
|
+
s.executables = ["automaker"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".document",
|
22
|
+
".gitignore",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"automaker.gemspec",
|
27
|
+
"bin/automaker",
|
28
|
+
"lib/automaker.rb"
|
29
|
+
]
|
30
|
+
s.homepage = %q{http://github.com/ronaldevers/automaker}
|
31
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
32
|
+
s.require_paths = ["lib"]
|
33
|
+
s.rubygems_version = %q{1.3.5}
|
34
|
+
s.summary = %q{Not autotest, not autospec, but automake(r)}
|
35
|
+
|
36
|
+
if s.respond_to? :specification_version then
|
37
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
38
|
+
s.specification_version = 3
|
39
|
+
|
40
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
41
|
+
s.add_runtime_dependency(%q<fsevents>, [">= 0.1.1"])
|
42
|
+
else
|
43
|
+
s.add_dependency(%q<fsevents>, [">= 0.1.1"])
|
44
|
+
end
|
45
|
+
else
|
46
|
+
s.add_dependency(%q<fsevents>, [">= 0.1.1"])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
data/bin/automaker
ADDED
data/lib/automaker.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'fsevents'
|
3
|
+
|
4
|
+
class Automaker
|
5
|
+
def initialize
|
6
|
+
if !check_arguments
|
7
|
+
print_usage
|
8
|
+
else
|
9
|
+
@path_to_watch = ARGV.shift
|
10
|
+
@filters = ARGV
|
11
|
+
run_stream
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def check_arguments
|
16
|
+
ARGV.size > 1
|
17
|
+
end
|
18
|
+
|
19
|
+
def print_usage
|
20
|
+
$stderr.puts "Usage: automaker </path/to/watch> <filter> [filter [filter [ etc.. ]]]
|
21
|
+
You must specify the path to watch. Make is only triggered if a file whose name
|
22
|
+
one of the filters is changed. (Otherwise you will likely enter an infinite loop.)"
|
23
|
+
end
|
24
|
+
|
25
|
+
def run_stream
|
26
|
+
stream = FSEvents::Stream.watch(@path_to_watch) { |events|
|
27
|
+
puts "FILES MODIFIED"
|
28
|
+
puts events.modified_files
|
29
|
+
make if should_make(events.modified_files)
|
30
|
+
}
|
31
|
+
stream.run
|
32
|
+
end
|
33
|
+
|
34
|
+
def should_make(modified_files)
|
35
|
+
modified_files.each { |filename|
|
36
|
+
@filters.each { |filter|
|
37
|
+
return true if filename.include?(filter)
|
38
|
+
}
|
39
|
+
}
|
40
|
+
false
|
41
|
+
end
|
42
|
+
|
43
|
+
def make
|
44
|
+
system("cd #{@path_to_watch} && make")
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: automaker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ronald Evers
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-12-15 00:00:00 +01:00
|
13
|
+
default_executable: automaker
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: fsevents
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.1.1
|
24
|
+
version:
|
25
|
+
description: Will monitor a directory using fsevents api and call make when something changes. Only works on Mac OS X.
|
26
|
+
email: ronaldpaulusevers@gmail.com
|
27
|
+
executables:
|
28
|
+
- automaker
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README.rdoc
|
33
|
+
files:
|
34
|
+
- .document
|
35
|
+
- .gitignore
|
36
|
+
- README.rdoc
|
37
|
+
- Rakefile
|
38
|
+
- VERSION
|
39
|
+
- automaker.gemspec
|
40
|
+
- bin/automaker
|
41
|
+
- lib/automaker.rb
|
42
|
+
has_rdoc: true
|
43
|
+
homepage: http://github.com/ronaldevers/automaker
|
44
|
+
licenses: []
|
45
|
+
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options:
|
48
|
+
- --charset=UTF-8
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
56
|
+
version:
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: "0"
|
62
|
+
version:
|
63
|
+
requirements: []
|
64
|
+
|
65
|
+
rubyforge_project:
|
66
|
+
rubygems_version: 1.3.5
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: Not autotest, not autospec, but automake(r)
|
70
|
+
test_files: []
|
71
|
+
|