lolcommits 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,14 @@
1
+ 0.0. (2 April 2012)
2
+ * add --delay option to delay image capture (thx JohanB), can be
3
+ persistently set via LOLCOMMITS_DELAY environment variable.
4
+ * add --last command to view most recent lolcommit for a repo
5
+ * add --browse command to open the lolcommit images directory for a particular repo
6
+
7
+ 0.0.1 (29 March 2012)
8
+ * initial release as a gem package, major refactoring for this
9
+ * refactored to remove git-hooks package dependency, now installs stub hook
10
+ directly into each git repo
11
+ * wordwrap commit_msg manually, to switch to use imagemagick annotate
12
+ instead of compositing multiply image Caption objects (this seems to be more
13
+ reliable to not glitch.)
14
+
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # git + webcam = lol
2
2
 
3
- Takes a snapshot with your Mac's built-in iSight webcam every time you git commit code, and archives a lolcat style image with it.
3
+ Takes a snapshot with your Mac's built-in iSight/FaceTime webcam every time you git commit code, and archives a lolcat style image with it.
4
4
 
5
5
  By default, the lolimages are stored by a Github style short SHA in a `~/.lolcommits` directory created for you.
6
6
 
7
7
  ## Installation (for new gem-y version)
8
- We've gotten rid of most of the dependency chain, yay!
8
+ We've gotten rid of most of the dependency chain, yay!
9
9
 
10
10
  You'll need imagesnap and imagemagick installed. Homebrew makes this easy. Simply do:
11
11
 
@@ -14,8 +14,10 @@ You'll need imagesnap and imagemagick installed. Homebrew makes this easy. Sim
14
14
 
15
15
  This will take care of the non-Ruby dependencies. Then do:
16
16
 
17
- gem install lolcommits
18
-
17
+ [sudo] gem install lolcommits
18
+
19
+ (If you're using rvm or something like that, you can/should probably omit the sudo, but the default MacOSX Ruby install is dumb and requires it.)
20
+
19
21
  You're all set! To enable lolcommits for a git repo, go to the base directory of the repository, and run:
20
22
 
21
23
  lolcommits --enable
@@ -30,6 +32,12 @@ Please add your own lolcommit to these samples! Just fork this repo, add it to
30
32
  <br/>
31
33
  <img width='320' height='240' src="https://github.com/mroth/lolcommits/raw/gh-pages/sample4.jpg" />
32
34
  &nbsp;
35
+ <img width='320' height='240' src="https://github.com/mroth/lolcommits/raw/gh-pages/sample6.jpg" />
36
+ <br/>
37
+ <img width='320' height='240' src="https://github.com/mroth/lolcommits/raw/gh-pages/sample7.jpg" />
38
+ &nbsp;
39
+ <img width='320' height='240' src="https://github.com/mroth/lolcommits/raw/gh-pages/sample8.jpg" />
40
+ <br/>
33
41
 
34
42
  ## Upgrading from an old (non-gem) version?
35
43
  If you used the autoinstaller, here's how to get rid of the old stuff (I think)
@@ -77,4 +85,4 @@ This installs [git-hooks](https://github.com/icefox/git-hooks) which gives you a
77
85
  If you don't want to use `/usr/local/bin` you can provide a different
78
86
  dir running `LOCAL_BINDIR=/your/path/of/choice rake install`
79
87
 
80
- -->
88
+ -->
data/bin/lolcommits CHANGED
@@ -49,18 +49,15 @@ def do_enable
49
49
  #TODO: disambiguate between OUR post-commit hook and something else
50
50
  exit 1
51
51
  end
52
- #TODO: prompt "Do you want to install lolcommits for this git project? [Yn]"
53
- #TODO: figure out where gem puts this, copy from there
54
- #FileUtils.touch HOOK_PATH
52
+
55
53
  doc = "#!/bin/sh\nlolcommits --capture\n"
56
54
  File.open(HOOK_PATH, 'w') {|f| f.write(doc) }
57
55
  FileUtils.chmod 0755, HOOK_PATH
58
56
  puts "installed lolcommmit hook as:"
59
57
  puts " -> #{File.expand_path(HOOK_PATH)}"
60
58
  puts "(to remove later, you can use: lolcommits --disable)"
61
- # actually we probably shouldnt symlink, but rather install a small stub that calls the one from path
59
+ # we dont symlink, but rather install a small stub that calls the one from path
62
60
  # that way, as gem version changes, script updates even if new file thus breaking symlink
63
- #File.symlink "/Users/mroth/.git_hooks/post-commit/lolcommit", ".git/hooks/post-commit"
64
61
  end
65
62
 
66
63
  #
@@ -80,11 +77,13 @@ end
80
77
  # IF --CAPTURE, DO CAPTURE
81
78
  #
82
79
  def do_capture
80
+ capture_delay = Choice.choices[:delay] || ENV['LOLCOMMITS_DELAY'] || 0
81
+
83
82
  if Choice.choices[:test]
84
83
  puts "*** capturing in test mode"
85
- Lolcommits.capture(true, Choice.choices[:msg], Choice.choices[:sha])
84
+ Lolcommits.capture(capture_delay, true, Choice.choices[:msg], Choice.choices[:sha])
86
85
  else
87
- Lolcommits.capture
86
+ Lolcommits.capture(capture_delay)
88
87
  end
89
88
  end
90
89
 
@@ -92,7 +91,7 @@ end
92
91
  # Command line parsing fun
93
92
  #
94
93
  Choice.options do
95
-
94
+
96
95
  option :enable do
97
96
  long "--enable"
98
97
  action { do_enable }
@@ -109,6 +108,24 @@ Choice.options do
109
108
  long "--capture"
110
109
  desc "capture lolcommit based on last git commit"
111
110
  end
111
+
112
+ option :last do
113
+ long "--last"
114
+ short "-l"
115
+ desc "view the most recent lolcommit"
116
+ action do
117
+ system "open #{Lolcommits.most_recent}"
118
+ end
119
+ end
120
+
121
+ option :browse do
122
+ long "--browse"
123
+ short "-b"
124
+ desc "browse this repo's lolcommits"
125
+ action do
126
+ system "open #{Lolcommits.loldir}"
127
+ end
128
+ end
112
129
 
113
130
  option :test do
114
131
  long "--test"
@@ -116,28 +133,33 @@ Choice.options do
116
133
  end
117
134
 
118
135
  option :sha do
119
- desc "Pass SHA manually (for test only)"
136
+ desc "pass SHA manually (for test only)"
120
137
  short '-s'
121
138
  default "test-#{rand(10 ** 10)}"
122
139
  end
123
140
 
124
141
  option :msg do
125
- desc "Pass commit msg manually (for test only)"
142
+ desc "pass commit msg manually (for test only)"
126
143
  short '-m'
127
144
  default "this is a test message i didnt really commit something"
128
145
  end
146
+
147
+ option :delay do
148
+ long "--delay=SECONDS"
149
+ desc "delay taking of the snapshot by n seconds"
150
+ cast Integer
151
+ short '-d'
152
+ #default 0
153
+ end
129
154
  end
130
155
 
131
156
  #
132
157
  # Handle actions manually since choice seems weird
133
158
  #
134
- if not (Choice.choices[:enable] || Choice.choices[:disable])
159
+ if not (Choice.choices[:enable] || Choice.choices[:disable] || Choice.choices[:last] || Choice.choices[:browse])
135
160
  if Choice.choices[:capture]
136
161
  do_capture()
137
162
  else
138
163
  do_noargs()
139
164
  end
140
165
  end
141
-
142
- #if here, choice didnt do anything (NOT TRUE)
143
- #noargs
data/lib/lolcommits.rb CHANGED
@@ -10,18 +10,33 @@ module Lolcommits
10
10
  $home = ENV['HOME']
11
11
  LOLBASEDIR = "#{$home}/.lolcommits"
12
12
 
13
- def capture(is_test=false, test_msg=nil, test_sha=nil)
13
+ def most_recent(dir='.')
14
+ loldir, commit_sha, commit_msg = parse_git
15
+ Dir.glob("#{loldir}/*").max_by {|f| File.mtime(f)}
16
+ end
17
+
18
+ def loldir(dir='.')
19
+ loldir, commit_sha, commit_msg = parse_git
20
+ return loldir
21
+ end
22
+
23
+ def parse_git(dir='.')
24
+ g = Git.open('.')
25
+ commit = g.log.first
26
+ commit_msg = commit.message
27
+ commit_sha = commit.sha[0..10]
28
+ basename = File.basename(g.dir.to_s)
29
+ basename.sub!(/^\./, 'dot') #no invisible directories in output, thanks!
30
+ loldir = "#{LOLBASEDIR}/#{basename}"
31
+ return loldir, commit_sha, commit_msg
32
+ end
33
+
34
+ def capture(capture_delay=0, is_test=false, test_msg=nil, test_sha=nil)
14
35
  #
15
36
  # Read the git repo information from the current working directory
16
37
  #
17
38
  if not is_test
18
- g = Git.open('.')
19
- commit = g.log.first
20
- commit_msg = commit.message
21
- commit_sha = commit.sha[0..10]
22
- basename = File.basename(g.dir.to_s)
23
- basename.sub!(/^\./, 'dot') #no invisible directories in output, thanks!
24
- loldir = "#{LOLBASEDIR}/#{basename}"
39
+ loldir, commit_sha, commit_msg = parse_git
25
40
  else
26
41
  commit_msg = test_msg #Choice.choices[:msg]
27
42
  commit_sha = test_sha #Choice.choices[:sha]
@@ -45,7 +60,8 @@ module Lolcommits
45
60
  #
46
61
  puts "*** Preserving this moment in history."
47
62
  snapshot_loc = "#{loldir}/tmp_snapshot.jpg"
48
- system("imagesnap -q #{snapshot_loc}")
63
+ system("imagesnap -q #{snapshot_loc} -w #{capture_delay}")
64
+
49
65
 
50
66
  #
51
67
  # Process the image with ImageMagick to add loltext
@@ -1,3 +1,3 @@
1
1
  module Lolcommits
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lolcommits.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Lolcommits::VERSION
8
8
  s.authors = ["Matthew Rothenberg"]
9
9
  s.email = ["mrothenberg@gmail.com"]
10
- s.homepage = ""
10
+ s.homepage = "http://github.com/mroth/lolcommits"
11
11
  s.summary = %q{Capture webcam image on git commit}
12
12
  s.description = %q{Capture webcam image on git commit for lulz}
13
13
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lolcommits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-29 00:00:00.000000000 Z
12
+ date: 2012-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rmagick
@@ -68,6 +68,7 @@ extensions: []
68
68
  extra_rdoc_files: []
69
69
  files:
70
70
  - .gitignore
71
+ - CHANGELOG
71
72
  - Gemfile
72
73
  - README.md
73
74
  - Rakefile
@@ -75,7 +76,7 @@ files:
75
76
  - lib/lolcommits.rb
76
77
  - lib/lolcommits/version.rb
77
78
  - lolcommits.gemspec
78
- homepage: ''
79
+ homepage: http://github.com/mroth/lolcommits
79
80
  licenses: []
80
81
  post_install_message:
81
82
  rdoc_options: []