rugged-mysql 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,13 @@
1
+ #include "rugged_mysql.h"
2
+
3
+ VALUE rb_mRugged;
4
+ VALUE rb_mRuggedMysql;
5
+ VALUE rb_cRuggedBackend;
6
+
7
+ void Init_rugged_mysql(void)
8
+ {
9
+ rb_mRugged = rb_const_get(rb_cObject, rb_intern("Rugged"));
10
+ rb_cRuggedBackend = rb_const_get(rb_mRugged, rb_intern("Backend"));
11
+ rb_mRuggedMysql = rb_const_get(rb_mRugged, rb_intern("Mysql"));
12
+ Init_rugged_mysql_backend();
13
+ }
@@ -0,0 +1,4 @@
1
+ #include <ruby.h>
2
+
3
+ void Init_rugged_mysql(void);
4
+ void Init_rugged_mysql_backend(void);
@@ -0,0 +1,161 @@
1
+ #include <git2.h>
2
+ #include <git2/sys/odb_backend.h>
3
+ #include <git2/sys/refdb_backend.h>
4
+ #include <rugged.h>
5
+
6
+ #include "rugged_mysql.h"
7
+
8
+ extern VALUE rb_mRuggedMysql;
9
+ extern VALUE rb_cRuggedBackend;
10
+
11
+ VALUE rb_cRuggedMysqlBackend;
12
+
13
+ int git_odb__error_ambiguous(char *);
14
+ int git_odb__error_notfound(char *);
15
+ int git_odb__error_ambiguous(char *);
16
+
17
+ typedef struct _rugged_backend {
18
+ int (*odb_backend) (git_odb_backend ** backend_out,
19
+ struct _rugged_backend * backend);
20
+ int (*refdb_backend) (git_refdb_backend ** backend_out,
21
+ struct _rugged_backend * backend);
22
+ } rugged_backend;
23
+
24
+ typedef struct {
25
+ rugged_backend backend;
26
+ char *host;
27
+ int port;
28
+ char *socket;
29
+ char *username;
30
+ char *password;
31
+ char *database;
32
+ } rugged_mysql_backend;
33
+
34
+ static void rb_rugged_mysql_backend__free(rugged_mysql_backend * backend)
35
+ {
36
+ free(backend->host);
37
+ free(backend->socket);
38
+ free(backend->username);
39
+ if (backend->password != NULL) {
40
+ free(backend->password);
41
+ }
42
+ free(backend->database);
43
+ free(backend);
44
+ }
45
+
46
+ static int
47
+ rugged_mysql__odb_backend(git_odb_backend ** backend_out,
48
+ rugged_backend * backend)
49
+ {
50
+ rugged_mysql_backend *rugged_backend = (rugged_mysql_backend *) backend;
51
+
52
+ return git_odb_backend_mysql(backend_out, rugged_backend->host,
53
+ rugged_backend->port,
54
+ rugged_backend->socket,
55
+ rugged_backend->username,
56
+ rugged_backend->password,
57
+ rugged_backend->database, NULL);
58
+ }
59
+
60
+ static int
61
+ rugged_mysql__refdb_backend(git_refdb_backend ** backend_out,
62
+ rugged_backend * backend)
63
+ {
64
+ rugged_mysql_backend *rugged_backend = (rugged_mysql_backend *) backend;
65
+
66
+ return git_refdb_backend_mysql(backend_out, rugged_backend->host,
67
+ rugged_backend->port,
68
+ rugged_backend->socket,
69
+ rugged_backend->username,
70
+ rugged_backend->password,
71
+ rugged_backend->database, NULL);
72
+ }
73
+
74
+ static rugged_mysql_backend *rugged_mysql_backend_new(char *host, int port,
75
+ char *socket,
76
+ char *username,
77
+ char *password,
78
+ char *database)
79
+ {
80
+ rugged_mysql_backend *mysql_backend =
81
+ malloc(sizeof(rugged_mysql_backend));
82
+
83
+ mysql_backend->backend.odb_backend = rugged_mysql__odb_backend;
84
+ mysql_backend->backend.refdb_backend = rugged_mysql__refdb_backend;
85
+
86
+ mysql_backend->host = strdup(host);
87
+ mysql_backend->port = port;
88
+ mysql_backend->socket = strdup(socket);
89
+ mysql_backend->username = strdup(username);
90
+ mysql_backend->password = password == NULL ? NULL : strdup(password);
91
+
92
+ return mysql_backend;
93
+ }
94
+
95
+ /*
96
+ Public: Initialize a mysql backend.
97
+ opts - hash containing the connection options.
98
+ :host - (optional) string, default localhost
99
+ :port - (optional) integer, default 3306
100
+ :password - (optional) string, default NULL
101
+ :socket - (optional) string, default /var/run/mysqld/mysqld.sock
102
+ :username - (optional) string, default root
103
+ :database - string
104
+ */
105
+ static VALUE rb_rugged_mysql_backend_new(VALUE klass, VALUE rb_opts)
106
+ {
107
+ VALUE val;
108
+ char *host;
109
+ char *socket = "/var/run/mysqld/mysqld.sock";
110
+ char *database;
111
+ char *username = "root";
112
+ char *password = NULL;
113
+ int port = 3306;
114
+
115
+ Check_Type(rb_opts, T_HASH);
116
+
117
+ if ((val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("host")))) != Qnil) {
118
+ Check_Type(val, T_STRING);
119
+ host = StringValueCStr(val);
120
+ }
121
+
122
+ if ((val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("port")))) != Qnil) {
123
+ Check_Type(val, T_FIXNUM);
124
+ port = NUM2INT(val);
125
+ }
126
+
127
+ if ((val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("socket")))) != Qnil) {
128
+ Check_Type(val, T_STRING);
129
+ socket = StringValueCStr(val);
130
+ }
131
+
132
+ if ((val =
133
+ rb_hash_aref(rb_opts, ID2SYM(rb_intern("username")))) != Qnil) {
134
+ Check_Type(val, T_STRING);
135
+ username = StringValueCStr(val);
136
+ }
137
+
138
+ if ((val =
139
+ rb_hash_aref(rb_opts, ID2SYM(rb_intern("password")))) != Qnil) {
140
+ Check_Type(val, T_STRING);
141
+ password = StringValueCStr(val);
142
+ }
143
+
144
+ val = rb_hash_aref(rb_opts, ID2SYM(rb_intern("database")));
145
+ Check_Type(val, T_STRING);
146
+ database = StringValueCStr(val);
147
+
148
+ return Data_Wrap_Struct(klass, NULL, rb_rugged_mysql_backend__free,
149
+ rugged_mysql_backend_new(host, port, socket,
150
+ username, password,
151
+ database));
152
+ }
153
+
154
+ void Init_rugged_mysql_backend(void)
155
+ {
156
+ rb_cRuggedMysqlBackend =
157
+ rb_define_class_under(rb_mRuggedMysql, "Backend",
158
+ rb_cRuggedBackend);
159
+ rb_define_singleton_method(rb_cRuggedMysqlBackend, "new",
160
+ rb_rugged_mysql_backend_new, 1);
161
+ }
@@ -0,0 +1 @@
1
+ require 'rugged/mysql'
@@ -0,0 +1,9 @@
1
+ require 'rugged/mysql/version'
2
+
3
+ module Rugged
4
+ module Mysql
5
+
6
+ end
7
+ end
8
+
9
+ require 'rugged/mysql/rugged_mysql'
@@ -0,0 +1,5 @@
1
+ module Rugged
2
+ module Mysql
3
+ VERSION = '0.0.2'
4
+ end
5
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rugged/mysql/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'rugged-mysql'
8
+ spec.version = Rugged::Mysql::VERSION
9
+ spec.authors = ['Jitang Zheng']
10
+ spec.email = ['jitang.zheng@gmail.com']
11
+ spec.summary = %q{A mysql backend of rugged.}
12
+ spec.description = %q{Enables rugged to store git objects and references into MySQL.}
13
+ spec.homepage = 'https://github.com/chonglou/rugged-mysql'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+ spec.extensions = %w[ext/rugged/mysql/extconf.rb]
21
+
22
+ spec.add_development_dependency 'bundler', '~> 1.7'
23
+ spec.add_development_dependency 'rake', '~> 10.0'
24
+ spec.add_development_dependency 'rake-compiler'
25
+ spec.add_dependency 'rugged', '~> 0.21.2'
26
+
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rugged-mysql
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jitang Zheng
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rugged
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.21.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.21.2
69
+ description: Enables rugged to store git objects and references into MySQL.
70
+ email:
71
+ - jitang.zheng@gmail.com
72
+ executables: []
73
+ extensions:
74
+ - ext/rugged/mysql/extconf.rb
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - ".ruby-version"
79
+ - Gemfile
80
+ - Gemfile.lock
81
+ - LICENSE
82
+ - README.md
83
+ - Rakefile
84
+ - ext/rugged/mysql/extconf.rb
85
+ - ext/rugged/mysql/mysql_odb_backend.c
86
+ - ext/rugged/mysql/mysql_refdb_backend.c
87
+ - ext/rugged/mysql/rugged_mysql.c
88
+ - ext/rugged/mysql/rugged_mysql.h
89
+ - ext/rugged/mysql/rugged_mysql_backend.c
90
+ - lib/rugged-mysql.rb
91
+ - lib/rugged/mysql.rb
92
+ - lib/rugged/mysql/version.rb
93
+ - rugged-mysql.gemspec
94
+ homepage: https://github.com/chonglou/rugged-mysql
95
+ licenses:
96
+ - MIT
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 2.2.2
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: A mysql backend of rugged.
118
+ test_files: []