piggy 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg
2
+ .bundle
3
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'thor'
4
+ gem 'activemodel'
5
+
6
+ group :development do
7
+ gem 'jeweler', '1.5.0.pre2'
8
+ gem 'cucumber'
9
+ gem 'aruba'
10
+ gem 'rspec', '2.0.0.beta.20'
11
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,49 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activemodel (3.0.0)
5
+ activesupport (= 3.0.0)
6
+ builder (~> 2.1.2)
7
+ i18n (~> 0.4.1)
8
+ activesupport (3.0.0)
9
+ aruba (0.2.1)
10
+ builder (2.1.2)
11
+ cucumber (0.8.5)
12
+ builder (~> 2.1.2)
13
+ diff-lcs (~> 1.1.2)
14
+ gherkin (~> 2.1.4)
15
+ json_pure (~> 1.4.3)
16
+ term-ansicolor (~> 1.0.4)
17
+ diff-lcs (1.1.2)
18
+ gherkin (2.1.5)
19
+ trollop (~> 1.16.2)
20
+ git (1.2.5)
21
+ i18n (0.4.1)
22
+ jeweler (1.5.0.pre2)
23
+ bundler (>= 1.0.0.rc.5)
24
+ git (>= 1.2.5)
25
+ rake
26
+ json_pure (1.4.6)
27
+ rake (0.8.7)
28
+ rspec (2.0.0.beta.20)
29
+ rspec-core (= 2.0.0.beta.20)
30
+ rspec-expectations (= 2.0.0.beta.20)
31
+ rspec-mocks (= 2.0.0.beta.20)
32
+ rspec-core (2.0.0.beta.20)
33
+ rspec-expectations (2.0.0.beta.20)
34
+ diff-lcs (>= 1.1.2)
35
+ rspec-mocks (2.0.0.beta.20)
36
+ term-ansicolor (1.0.5)
37
+ thor (0.14.0)
38
+ trollop (1.16.2)
39
+
40
+ PLATFORMS
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ activemodel
45
+ aruba
46
+ cucumber
47
+ jeweler (= 1.5.0.pre2)
48
+ rspec (= 2.0.0.beta.20)
49
+ thor
data/README ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = "piggy"
5
+ gemspec.summary = "Record and analyse coding sessions"
6
+ gemspec.description = "Record and analyse coding sessions"
7
+ gemspec.email = "louismrose@gmail.com"
8
+ gemspec.homepage = "http://github.com/louismrose/piggy"
9
+ gemspec.authors = ["Louis Rose"]
10
+ gemspec.executables = ["piggy"]
11
+ end
12
+ Jeweler::GemcutterTasks.new
13
+ rescue LoadError
14
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
15
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.6
data/bin/piggy ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'piggy/cli'
3
+
4
+ Piggy::CLI.start
@@ -0,0 +1,8 @@
1
+ Feature: Get help
2
+ In order to find out how to use Piggy
3
+ As a programmer
4
+ I want to view help
5
+
6
+ Scenario: Find version
7
+ When I run "piggy version"
8
+ Then the output should match /^\d\.\d\.\d/
@@ -0,0 +1,27 @@
1
+ Feature: Use git hooks
2
+ In order to monitor the way I use git
3
+ As a programmer
4
+ I want to send git events to Piggy
5
+
6
+ Scenario: Install git post commit hook
7
+ When I run "piggy install"
8
+ Then the output should contain:
9
+ """
10
+ Successfully installed git hook.
11
+ Piggy is now monitoring the git commits made in this project.
12
+ """
13
+ And the file ".git/hooks/post-commit" should contain "Piggy"
14
+ And the file ".git/hooks/post-commit" should be executable
15
+
16
+ # @wip
17
+ # Scenario: A git commit should trigger a Piggy event
18
+ # Given the git hook is installed
19
+ # And an empty file named "foo.txt"
20
+ # When I run "git add foo.txt"
21
+ # And I run "git commit -m 'First commit'"
22
+ # Then an event should be triggered with title "First commit"
23
+
24
+
25
+
26
+
27
+
@@ -0,0 +1,9 @@
1
+ require 'piggy/events'
2
+
3
+ When /^an event is triggered with title "([^"]*)"$/ do |title|
4
+ Piggy::Events.trigger title
5
+ end
6
+
7
+ Then /^an event should be triggered with title "([^"]*)"$/ do |title|
8
+ Piggy::Events.last.title.should == title
9
+ end
@@ -0,0 +1,10 @@
1
+ Given /^an executable file named "([^"]*)" with:$/ do |path, contents|
2
+ Given "a file named \"#{path}\" with:", contents
3
+ When "I run \"chmod 755 #{path}\""
4
+ end
5
+
6
+ Then /^the file "([^"]*)" should be executable$/ do |path|
7
+ in_current_dir do
8
+ File.executable?(path).should be_true
9
+ end
10
+ end
@@ -0,0 +1,4 @@
1
+ Given /^the git hook is installed$/ do
2
+ When "I run \"git init\""
3
+ And "I run \"piggy install\""
4
+ end
@@ -0,0 +1,23 @@
1
+ Feature: Subscription
2
+ In order to use Piggy events in other programs
3
+ As a Piggy developer
4
+ I want to subscribe to Piggy events
5
+
6
+ Scenario: Subscribe via the CLI
7
+ When I run "piggy subscribe writer.rb"
8
+ Then the output should contain:
9
+ """
10
+ Piggy is now sending events to 'writer.rb'.
11
+ """
12
+
13
+ Scenario: Receive events from Piggy
14
+ Given an executable file named "writer.rb" with:
15
+ """
16
+ #!/usr/bin/env ruby
17
+
18
+ File.open('output.txt', 'w') {|f| f.write(ARGV.first) }
19
+ """
20
+ And I run "piggy subscribe writer.rb"
21
+ And an event is triggered with title "Hello world!"
22
+ Then the file "output.txt" should contain "Hello world!"
23
+
@@ -0,0 +1,15 @@
1
+ $: << File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+
3
+ require 'aruba'
4
+
5
+ module ArubaOverrides
6
+ def detect_ruby_script(cmd)
7
+ if cmd =~ /^piggy /
8
+ "ruby -I../../lib -S ../../bin/#{cmd}"
9
+ else
10
+ super(cmd)
11
+ end
12
+ end
13
+ end
14
+
15
+ World(ArubaOverrides)
data/lib/piggy/cli.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'thor'
2
+
3
+ require 'piggy/version'
4
+
5
+ module Piggy
6
+ class CLI < Thor
7
+ include Thor::Actions
8
+
9
+ def self.source_root
10
+ File.expand_path('../../../templates', __FILE__)
11
+ end
12
+
13
+ desc "version", "Prints version information"
14
+ def version
15
+ puts Piggy::VERSION
16
+ end
17
+ map %w(-v --version) => :version
18
+
19
+ desc "install", "Installs a git post-commit hook for Piggy"
20
+ def install
21
+ copy_file "git_hook", ".git/hooks/post-commit"
22
+ chmod ".git/hooks/post-commit", 0755
23
+ puts "Successfully installed git hook."
24
+ puts "Piggy is now monitoring the git commits made in this project."
25
+ end
26
+
27
+ desc "subscribe PROGRAM", "Add a program that will receive Piggy events"
28
+ def subscribe(subscriber)
29
+ create_file ".piggy/subscribers", subscriber
30
+ puts "Piggy is now sending events to '#{subscriber}'."
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,18 @@
1
+ require 'active_model'
2
+
3
+ module Piggy
4
+ class Event
5
+ include ActiveModel::Serializers::Xml
6
+ extend ActiveModel::Naming
7
+
8
+ attr_accessor :title
9
+
10
+ def initialize(title)
11
+ @title = title
12
+ end
13
+
14
+ def attributes
15
+ @attributes ||= {'title' => 'nil'}
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ require 'piggy/event'
2
+
3
+ module Piggy
4
+ class Events
5
+ def self.trigger(title)
6
+ xml = Event.new(title).to_xml
7
+ subscriber = IO.readlines("tmp/aruba/.piggy/subscribers").first
8
+ `cd tmp/aruba; ./#{subscriber} "#{xml}"`
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Piggy # :nodoc:
2
+ VERSION = File.readlines(File.expand_path('../../../VERSION', __FILE__)).first
3
+ end
data/piggy.gemspec ADDED
@@ -0,0 +1,81 @@
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{piggy}
8
+ s.version = "0.0.6"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Louis Rose"]
12
+ s.date = %q{2010-09-07}
13
+ s.default_executable = %q{piggy}
14
+ s.description = %q{Record and analyse coding sessions}
15
+ s.email = %q{louismrose@gmail.com}
16
+ s.executables = ["piggy"]
17
+ s.extra_rdoc_files = [
18
+ "README"
19
+ ]
20
+ s.files = [
21
+ ".gitignore",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "README",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/piggy",
28
+ "features/get_help.feature",
29
+ "features/git_hook.feature",
30
+ "features/step_definitions/event_steps.rb",
31
+ "features/step_definitions/file_system_steps.rb",
32
+ "features/step_definitions/git_steps.rb",
33
+ "features/subscription.feature",
34
+ "features/support/env.rb",
35
+ "lib/piggy/cli.rb",
36
+ "lib/piggy/event.rb",
37
+ "lib/piggy/events.rb",
38
+ "lib/piggy/version.rb",
39
+ "piggy.gemspec",
40
+ "spec/event.spec.rb",
41
+ "spec/spec_helper.rb",
42
+ "templates/git_hook"
43
+ ]
44
+ s.homepage = %q{http://github.com/louismrose/piggy}
45
+ s.require_paths = ["lib"]
46
+ s.rubygems_version = %q{1.3.7}
47
+ s.summary = %q{Record and analyse coding sessions}
48
+ s.test_files = [
49
+ "spec/event.spec.rb",
50
+ "spec/spec_helper.rb"
51
+ ]
52
+
53
+ if s.respond_to? :specification_version then
54
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
+ s.specification_version = 3
56
+
57
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
+ s.add_runtime_dependency(%q<thor>, [">= 0"])
59
+ s.add_runtime_dependency(%q<activemodel>, [">= 0"])
60
+ s.add_development_dependency(%q<jeweler>, ["= 1.5.0.pre2"])
61
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
62
+ s.add_development_dependency(%q<aruba>, [">= 0"])
63
+ s.add_development_dependency(%q<rspec>, ["= 2.0.0.beta.20"])
64
+ else
65
+ s.add_dependency(%q<thor>, [">= 0"])
66
+ s.add_dependency(%q<activemodel>, [">= 0"])
67
+ s.add_dependency(%q<jeweler>, ["= 1.5.0.pre2"])
68
+ s.add_dependency(%q<cucumber>, [">= 0"])
69
+ s.add_dependency(%q<aruba>, [">= 0"])
70
+ s.add_dependency(%q<rspec>, ["= 2.0.0.beta.20"])
71
+ end
72
+ else
73
+ s.add_dependency(%q<thor>, [">= 0"])
74
+ s.add_dependency(%q<activemodel>, [">= 0"])
75
+ s.add_dependency(%q<jeweler>, ["= 1.5.0.pre2"])
76
+ s.add_dependency(%q<cucumber>, [">= 0"])
77
+ s.add_dependency(%q<aruba>, [">= 0"])
78
+ s.add_dependency(%q<rspec>, ["= 2.0.0.beta.20"])
79
+ end
80
+ end
81
+
@@ -0,0 +1,8 @@
1
+ require 'piggy/event'
2
+
3
+ describe "an event" do
4
+ it "should produce XML" do
5
+ e = Piggy::Event.new('foo')
6
+ e.to_xml.should include('foo')
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
@@ -0,0 +1 @@
1
+ Piggy
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: piggy
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 6
9
+ version: 0.0.6
10
+ platform: ruby
11
+ authors:
12
+ - Louis Rose
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-09-07 00:00:00 +01:00
18
+ default_executable: piggy
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: thor
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ prerelease: false
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: activemodel
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ version: "0"
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: jeweler
48
+ requirement: &id003 !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - "="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 1
55
+ - 5
56
+ - 0
57
+ - pre2
58
+ version: 1.5.0.pre2
59
+ type: :development
60
+ prerelease: false
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: cucumber
64
+ requirement: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: *id004
75
+ - !ruby/object:Gem::Dependency
76
+ name: aruba
77
+ requirement: &id005 !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ segments:
83
+ - 0
84
+ version: "0"
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: *id005
88
+ - !ruby/object:Gem::Dependency
89
+ name: rspec
90
+ requirement: &id006 !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - "="
94
+ - !ruby/object:Gem::Version
95
+ segments:
96
+ - 2
97
+ - 0
98
+ - 0
99
+ - beta
100
+ - 20
101
+ version: 2.0.0.beta.20
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: *id006
105
+ description: Record and analyse coding sessions
106
+ email: louismrose@gmail.com
107
+ executables:
108
+ - piggy
109
+ extensions: []
110
+
111
+ extra_rdoc_files:
112
+ - README
113
+ files:
114
+ - .gitignore
115
+ - Gemfile
116
+ - Gemfile.lock
117
+ - README
118
+ - Rakefile
119
+ - VERSION
120
+ - bin/piggy
121
+ - features/get_help.feature
122
+ - features/git_hook.feature
123
+ - features/step_definitions/event_steps.rb
124
+ - features/step_definitions/file_system_steps.rb
125
+ - features/step_definitions/git_steps.rb
126
+ - features/subscription.feature
127
+ - features/support/env.rb
128
+ - lib/piggy/cli.rb
129
+ - lib/piggy/event.rb
130
+ - lib/piggy/events.rb
131
+ - lib/piggy/version.rb
132
+ - piggy.gemspec
133
+ - spec/event.spec.rb
134
+ - spec/spec_helper.rb
135
+ - templates/git_hook
136
+ has_rdoc: true
137
+ homepage: http://github.com/louismrose/piggy
138
+ licenses: []
139
+
140
+ post_install_message:
141
+ rdoc_options: []
142
+
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ segments:
159
+ - 0
160
+ version: "0"
161
+ requirements: []
162
+
163
+ rubyforge_project:
164
+ rubygems_version: 1.3.7
165
+ signing_key:
166
+ specification_version: 3
167
+ summary: Record and analyse coding sessions
168
+ test_files:
169
+ - spec/event.spec.rb
170
+ - spec/spec_helper.rb