Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

more of a proper ext setup

  • Loading branch information...
commit 6fe2ba209a16c3569586375422febb814987c7db 1 parent 3d7b309
@schacon authored
View
3  .gitignore
@@ -0,0 +1,3 @@
+*.bundle
+*.swp
+tmp/
View
1  API
@@ -0,0 +1 @@
+Coming soon
View
13 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.
View
113 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
View
157 ext/Makefile
@@ -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
View
21 ext/ribbit.c
@@ -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);
-}
-
View
0  ext/extconf.rb → ext/ribbit/extconf.rb
File renamed without changes
View
18 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);
+}
+
View
8 ext/test.rb
@@ -1,8 +0,0 @@
-#! /usr/bin/env ruby
-
-require 'ribbit'
-require 'pp'
-
-pp r = Ribbit.new
-pp r.print_test
-
View
3  lib/ribbit/version.rb
@@ -0,0 +1,3 @@
+class Ribbit
+ Version = VERSION = '0.0.1'
+end
View
20 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 = <<desc
+Ribbit is a Ruby bindings to the libgit2 linkable C Git library. This is
+for testing and using the libgit2 library in a language that is awesome.
+desc
+end
View
13 test/strutil_test.rb
@@ -0,0 +1,13 @@
+require File.dirname(__FILE__) + '/test_helper'
+
+context "Ribbit strutils" do
+ setup do
+ @ribbit = Ribbit.new
+ end
+
+ test "can compare prefixes" do
+ puts @ribbit.compare_prefix("aa", "ab")
+ assert_equal 1, 1
+ end
+
+end
View
26 test/test_helper.rb
@@ -0,0 +1,26 @@
+dir = File.dirname(File.expand_path(__FILE__))
+$LOAD_PATH.unshift dir + '/../lib'
+$TESTING = true
+require 'test/unit'
+require 'rubygems'
+require 'ribbit'
+
+##
+# test/spec/mini 3
+# http://gist.github.com/25455
+# chris@ozmm.org
+#
+def context(*args, &block)
+ return super unless (name = args.first) && block
+ require 'test/unit'
+ klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
+ def self.test(name, &block)
+ define_method("test_#{name.gsub(/\W/,'_')}", &block) if block
+ end
+ def self.xtest(*args) end
+ def self.setup(&block) define_method(:setup, &block) end
+ def self.teardown(&block) define_method(:teardown, &block) end
+ end
+ (class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') }
+ klass.class_eval &block
+end
Please sign in to comment.
Something went wrong with that request. Please try again.