Class: Rugged::Tree::Builder
- Inherits:
-
Object
- Object
- Rugged::Tree::Builder
- Defined in:
- ext/rugged/rugged_tree.c
Class Method Summary collapse
-
.Tree::Builder.new(repository, [tree]) ⇒ Object
Create a new Rugged::Tree::Builder instance to write a tree to the given
repository
.
Instance Method Summary collapse
-
#<<(rb_entry) ⇒ Object
Inser a new entry into
builder
. -
#[](path) ⇒ Object
Return an entry from
builder
based on its relative path. -
#clear ⇒ nil
Clear all entries in
builder
. -
#insert(rb_entry) ⇒ Object
Inser a new entry into
builder
. -
#reject! {|entry| ... } ⇒ nil
Deletes every tree
entry
frombuilder
for which the givenblock
evaluates to true. -
#remove(path) ⇒ Boolean
Remove an entry from
builder
by its relativepath
. -
#write ⇒ Object
Write
builder
‘s content as a tree to the repository that owns the builder and return theoid
for the newly created tree.
Class Method Details
.Tree::Builder.new(repository, [tree]) ⇒ Object
Create a new Rugged::Tree::Builder instance to write a tree to the given repository
.
If an optional tree
is given, the returned Tree::Builder will be initialized with the entry of tree
. Otherwise, the Tree::Builder will be empty and has to be filled manually.
727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 |
# File 'ext/rugged/rugged_tree.c', line 727
static VALUE rb_git_treebuilder_new(int argc, VALUE *argv, VALUE klass)
{
git_treebuilder *builder;
git_repository *repo;
git_tree *tree = NULL;
VALUE rb_object, rb_builder, rb_repo;
int error;
if (rb_scan_args(argc, argv, "11", &rb_repo, &rb_object) == 2) {
if (!rb_obj_is_kind_of(rb_object, rb_cRuggedTree))
rb_raise(rb_eTypeError, "A Rugged::Tree instance is required");
TypedData_Get_Struct(rb_object, git_tree, &rugged_object_type, tree);
}
rugged_check_repo(rb_repo);
Data_Get_Struct(rb_repo, git_repository, repo);
error = git_treebuilder_new(&builder, repo, tree);
rugged_exception_check(error);
rb_builder = Data_Wrap_Struct(klass, NULL, &rb_git_treebuilder_free, builder);
rugged_set_owner(rb_builder, rb_repo);
return rb_builder;
}
|
Instance Method Details
#<<(entry) ⇒ nil #insert(entry) ⇒ nil
Inser a new entry into builder
.
791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 |
# File 'ext/rugged/rugged_tree.c', line 791
static VALUE rb_git_treebuilder_insert(VALUE self, VALUE rb_entry)
{
git_treebuilder *builder;
VALUE rb_path, rb_oid, rb_attr;
git_oid oid;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(rb_entry, T_HASH);
rb_path = rb_hash_aref(rb_entry, CSTR2SYM("name"));
Check_Type(rb_path, T_STRING);
rb_oid = rb_hash_aref(rb_entry, CSTR2SYM("oid"));
Check_Type(rb_oid, T_STRING);
rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(rb_oid)));
rb_attr = rb_hash_aref(rb_entry, CSTR2SYM("filemode"));
Check_Type(rb_attr, T_FIXNUM);
error = git_treebuilder_insert(NULL,
builder,
StringValueCStr(rb_path),
&oid,
FIX2INT(rb_attr));
rugged_exception_check(error);
return Qnil;
}
|
#[](path) ⇒ Object
Return an entry from builder
based on its relative path.
774 775 776 777 778 779 780 781 782 |
# File 'ext/rugged/rugged_tree.c', line 774
static VALUE rb_git_treebuilder_get(VALUE self, VALUE path)
{
git_treebuilder *builder;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(path, T_STRING);
return rb_git_treeentry_fromC(git_treebuilder_get(builder, StringValueCStr(path)));
}
|
#clear ⇒ nil
Clear all entries in builder
.
760 761 762 763 764 765 766 |
# File 'ext/rugged/rugged_tree.c', line 760
static VALUE rb_git_treebuilder_clear(VALUE self)
{
git_treebuilder *builder;
Data_Get_Struct(self, git_treebuilder, builder);
git_treebuilder_clear(builder);
return Qnil;
}
|
#<<(entry) ⇒ nil #insert(entry) ⇒ nil
Inser a new entry into builder
.
791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 |
# File 'ext/rugged/rugged_tree.c', line 791
static VALUE rb_git_treebuilder_insert(VALUE self, VALUE rb_entry)
{
git_treebuilder *builder;
VALUE rb_path, rb_oid, rb_attr;
git_oid oid;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(rb_entry, T_HASH);
rb_path = rb_hash_aref(rb_entry, CSTR2SYM("name"));
Check_Type(rb_path, T_STRING);
rb_oid = rb_hash_aref(rb_entry, CSTR2SYM("oid"));
Check_Type(rb_oid, T_STRING);
rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(rb_oid)));
rb_attr = rb_hash_aref(rb_entry, CSTR2SYM("filemode"));
Check_Type(rb_attr, T_FIXNUM);
error = git_treebuilder_insert(NULL,
builder,
StringValueCStr(rb_path),
&oid,
FIX2INT(rb_attr));
rugged_exception_check(error);
return Qnil;
}
|
#reject! {|entry| ... } ⇒ nil
Deletes every tree entry
from builder
for which the given block
evaluates to true.
885 886 887 888 889 890 891 892 893 894 |
# File 'ext/rugged/rugged_tree.c', line 885
static VALUE rb_git_treebuilder_filter(VALUE self)
{
git_treebuilder *builder;
rb_need_block();
Data_Get_Struct(self, git_treebuilder, builder);
git_treebuilder_filter(builder, &treebuilder_cb, (void *)rb_block_proc());
return Qnil;
}
|
#remove(path) ⇒ Boolean
Remove an entry from builder
by its relative path
.
Returns true
if the entry was successfully removed, or false
if the entry was not found.
830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 |
# File 'ext/rugged/rugged_tree.c', line 830
static VALUE rb_git_treebuilder_remove(VALUE self, VALUE path)
{
git_treebuilder *builder;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(path, T_STRING);
error = git_treebuilder_remove(builder, StringValueCStr(path));
if (error == GIT_ENOTFOUND) {
return Qfalse;
} else if (error == GIT_ERROR && giterr_last()->klass == GITERR_TREE) {
return Qfalse;
}
rugged_exception_check(error);
return Qtrue;
}
|
#write ⇒ Object
Write builder
‘s content as a tree to the repository that owns the builder and return the oid
for the newly created tree.
857 858 859 860 861 862 863 864 865 866 867 868 869 |
# File 'ext/rugged/rugged_tree.c', line 857
static VALUE rb_git_treebuilder_write(VALUE self)
{
git_treebuilder *builder;
git_oid written_id;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
error = git_treebuilder_write(&written_id, builder);
rugged_exception_check(error);
return rugged_create_oid(&written_id);
}
|