rugged-mysql 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []