diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99e7edb --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.bundle +*.swp +tmp/ diff --git a/API b/API new file mode 100644 index 0000000..3c0b0b0 --- /dev/null +++ b/API @@ -0,0 +1 @@ +Coming soon diff --git a/README b/README index 354ec6c..a144af9 100644 --- a/README +++ b/README @@ -14,13 +14,16 @@ First you need to install libgit2: $ make $ make install -Now that is installed, you can install Ribbit: +Next, you need to install rake-compiler: + + $ sudo gem install rake-compiler + +Now that those are installed, you can install Ribbit: $ git clone git://github.com/schacon/ribbit.git - $ cd ribbit/ext - $ ruby extconf.rb - $ make - $ ./test.rb + $ cd ribbit + $ rake compile + $ rake test That's as far as I've gotten for now. However, it does load libgit2 and at least run something from the library. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..495acf6 --- /dev/null +++ b/Rakefile @@ -0,0 +1,113 @@ +# stolen largely from defunkt/mustache +require 'rake/testtask' +require 'rake/rdoctask' +require 'rake/extensiontask' + +Rake::ExtensionTask.new('ribbit') + +# +# Helpers +# + +def command?(command) + system("type #{command} > /dev/null") +end + + +# +# Tests +# + +task :default => :test + +if command? :turn + desc "Run tests" + task :test do + suffix = "-n #{ENV['TEST']}" if ENV['TEST'] + sh "turn test/*.rb #{suffix}" + end +else + Rake::TestTask.new do |t| + t.libs << 'lib' + t.pattern = 'test/**/*_test.rb' + t.verbose = false + end +end + +if command? :kicker + desc "Launch Kicker (like autotest)" + task :kicker do + puts "Kicking... (ctrl+c to cancel)" + exec "kicker -e rake test lib examples" + end +end + + +# +# Ron +# + +if command? :ronn + desc "Show the manual" + task :man => "man:build" do + exec "man man/mustache.1" + end + + desc "Build the manual" + task "man:build" do + sh "ronn -br5 --organization=SCHACON --manual='Ribbit Manual' man/*.ron" + end +end + + +# +# Gems +# + +begin + require 'mg' + MG.new("ribbit.gemspec") + + desc "Push a new version to Gemcutter and publish docs." + task :publish => "gem:publish" do + require File.dirname(__FILE__) + '/lib/mustache/version' + + system "git tag v#{Ribbit::Version}" + sh "git push origin master --tags" + sh "git clean -fd" + exec "rake pages" + end +rescue LoadError + warn "mg not available." + warn "Install it with: gem i mg" +end + +# +# Documentation +# + +begin + require 'sdoc_helpers' +rescue LoadError + warn "sdoc support not enabled. Please gem install sdoc-helpers." +end + +desc "Publish to GitHub Pages" +task :pages => [ "man:build" ] do + Dir['man/*.html'].each do |f| + cp f, File.basename(f).sub('.html', '.newhtml') + end + + `git commit -am 'generated manual'` + `git checkout site` + + Dir['*.newhtml'].each do |f| + mv f, f.sub('.newhtml', '.html') + end + + `git add .` + `git commit -m updated` + `git push site site:master` + `git checkout master` + puts :done +end diff --git a/ext/Makefile b/ext/Makefile deleted file mode 100644 index 8d97798..0000000 --- a/ext/Makefile +++ /dev/null @@ -1,157 +0,0 @@ - -SHELL = /bin/sh - -#### Start of system configuration section. #### - -srcdir = . -topdir = /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -hdrdir = $(topdir) -VPATH = $(srcdir):$(topdir):$(hdrdir) -exec_prefix = $(prefix) -prefix = $(DESTDIR)/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr -sharedstatedir = $(prefix)/com -mandir = $(DESTDIR)/usr/share/man -psdir = $(docdir) -oldincludedir = $(DESTDIR)/usr/include -localedir = $(datarootdir)/locale -bindir = $(exec_prefix)/bin -libexecdir = $(exec_prefix)/libexec -sitedir = $(DESTDIR)/Library/Ruby/Site -htmldir = $(docdir) -vendorarchdir = $(vendorlibdir)/$(sitearch) -includedir = $(prefix)/include -infodir = $(DESTDIR)/usr/share/info -vendorlibdir = $(vendordir)/$(ruby_version) -sysconfdir = $(prefix)/etc -libdir = $(exec_prefix)/lib -sbindir = $(exec_prefix)/sbin -rubylibdir = $(libdir)/ruby/$(ruby_version) -docdir = $(datarootdir)/doc/$(PACKAGE) -dvidir = $(docdir) -vendordir = $(libdir)/ruby/vendor_ruby -datarootdir = $(prefix)/share -pdfdir = $(docdir) -archdir = $(rubylibdir)/$(arch) -sitearchdir = $(sitelibdir)/$(sitearch) -datadir = $(datarootdir) -localstatedir = $(prefix)/var -sitelibdir = $(sitedir)/$(ruby_version) - -CC = gcc -LIBRUBY = $(LIBRUBY_SO) -LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a -LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME) -LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME) - -RUBY_EXTCONF_H = -CFLAGS = -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common $(cflags) -INCFLAGS = -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DEFS = -CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -CXXFLAGS = $(CFLAGS) -ldflags = -L. -arch i386 -arch x86_64 -dldflags = -archflag = -DLDFLAGS = $(ldflags) $(dldflags) $(archflag) -LDSHARED = cc -arch i386 -arch x86_64 -pipe -bundle -undefined dynamic_lookup -AR = ar -EXEEXT = - -RUBY_INSTALL_NAME = ruby -RUBY_SO_NAME = ruby -arch = universal-darwin10.0 -sitearch = universal-darwin10.0 -ruby_version = 1.8 -ruby = /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -RUBY = $(ruby) -RM = rm -f -MAKEDIRS = mkdir -p -INSTALL = /usr/bin/install -c -INSTALL_PROG = $(INSTALL) -m 0755 -INSTALL_DATA = $(INSTALL) -m 644 -COPY = cp - -#### End of system configuration section. #### - -preload = - -libpath = . $(libdir) -LIBPATH = -L. -L$(libdir) -DEFFILE = - -CLEANFILES = mkmf.log -DISTCLEANFILES = - -extout = -extout_prefix = -target_prefix = -LOCAL_LIBS = -LIBS = $(LIBRUBYARG_SHARED) -lgit2 -lpthread -ldl -SRCS = ribbit.c -OBJS = ribbit.o -TARGET = ribbit -DLLIB = $(TARGET).bundle -EXTSTATIC = -STATIC_LIB = - -BINDIR = $(bindir) -RUBYCOMMONDIR = $(sitedir)$(target_prefix) -RUBYLIBDIR = $(sitelibdir)$(target_prefix) -RUBYARCHDIR = $(sitearchdir)$(target_prefix) - -TARGET_SO = $(DLLIB) -CLEANLIBS = $(TARGET).bundle $(TARGET).il? $(TARGET).tds $(TARGET).map -CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak - -all: $(DLLIB) -static: $(STATIC_LIB) - -clean: - @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) - -distclean: clean - @-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log - @-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES) - -realclean: distclean -install: install-so install-rb - -install-so: $(RUBYARCHDIR) -install-so: $(RUBYARCHDIR)/$(DLLIB) -$(RUBYARCHDIR)/$(DLLIB): $(DLLIB) - $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR) -install-rb: pre-install-rb install-rb-default -install-rb-default: pre-install-rb-default -pre-install-rb: Makefile -pre-install-rb-default: Makefile -$(RUBYARCHDIR): - $(MAKEDIRS) $@ - -site-install: site-install-so site-install-rb -site-install-so: install-so -site-install-rb: install-rb - -.SUFFIXES: .c .m .cc .cxx .cpp .C .o - -.cc.o: - $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $< - -.cxx.o: - $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $< - -.cpp.o: - $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $< - -.C.o: - $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $< - -.c.o: - $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $< - -$(DLLIB): $(OBJS) - @-$(RM) $@ - $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS) - - - -$(OBJS): ruby.h defines.h diff --git a/ext/ribbit.c b/ext/ribbit.c deleted file mode 100644 index 943a21b..0000000 --- a/ext/ribbit.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "ruby.h" - -static VALUE rb_cRibbit; - -static VALUE -print_test(VALUE self) -{ - int test = git__prefixcmp("aa", "aa"); - printf("test: %d\n", test); - - return Qnil; -} - -void -Init_ribbit() -{ - rb_cRibbit = rb_define_class("Ribbit", rb_cObject); - - rb_define_method(rb_cRibbit, "print_test", print_test, 0); -} - diff --git a/ext/extconf.rb b/ext/ribbit/extconf.rb similarity index 100% rename from ext/extconf.rb rename to ext/ribbit/extconf.rb diff --git a/ext/ribbit/ribbit.c b/ext/ribbit/ribbit.c new file mode 100644 index 0000000..c438fc3 --- /dev/null +++ b/ext/ribbit/ribbit.c @@ -0,0 +1,18 @@ +#include "ruby.h" + +static VALUE rb_cRibbit; + +static VALUE +compare_prefix(VALUE self, VALUE string1, VALUE string2) +{ + return git__prefixcmp(string1, string2); +} + +void +Init_ribbit() +{ + rb_cRibbit = rb_define_class("Ribbit", rb_cObject); + + rb_define_method(rb_cRibbit, "compare_prefix", compare_prefix, 2); +} + diff --git a/ext/test.rb b/ext/test.rb deleted file mode 100755 index 5ecea54..0000000 --- a/ext/test.rb +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env ruby - -require 'ribbit' -require 'pp' - -pp r = Ribbit.new -pp r.print_test - diff --git a/lib/ribbit/version.rb b/lib/ribbit/version.rb new file mode 100644 index 0000000..d56337b --- /dev/null +++ b/lib/ribbit/version.rb @@ -0,0 +1,3 @@ +class Ribbit + Version = VERSION = '0.0.1' +end diff --git a/ribbit.gemspec b/ribbit.gemspec new file mode 100644 index 0000000..b5bafb3 --- /dev/null +++ b/ribbit.gemspec @@ -0,0 +1,20 @@ +require 'lib/ribbit/version' + +Gem::Specification.new do |s| + s.name = "ribbit" + s.version = Ribbit::Version + s.date = Time.now.strftime('%Y-%m-%d') + s.summary = "Ribbit is a Ruby binding to the libgit2 linkable library" + s.homepage = "http://github.com/schacon/ribbit" + s.email = "schacon@gmail.com" + s.authors = [ "Scott Chacon" ] + s.files = %w( README API Rakefile LICENSE ) + s.files += Dir.glob("lib/**/*") + s.files += Dir.glob("man/**/*") + s.files += Dir.glob("test/**/*") + s.extensions = ['ext/ribbit/extconf.rb'] + s.description = <