Cross Reference: files.rb
xref
: /
ontohub
/
lib
/
git_repository
/
files.rb
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
files.rb revision afd1d888784385307c9c0544597a513c2008d342
module
GitRepository
::
Files
# depends on GitRepository
extend
ActiveSupport
::
Concern
class
GitFile
attr_reader
:
path
, :
oid
, :
mime_type
, :
mime_category
def
initialize
(
repository
,
rugged_commit
,
path
)
@
path
=
path
self.repository
=
repository
if
!
repository.path
_exists
?
(
path
,
rugged_commit.oid
)
fail
GitRepository
::
PathNotFoundError
,
"Path doesn't exist: #{path}"
end
self.rugged
_object
=
repository.get
_object
(
rugged_commit
,
path
)
@
oid
=
rugged_commit.oid
if
file
?
mime_info
=
repository.class.mime
_info
(
name
)
@
mime_type
=
mime_info
[:
mime_type
]
@
mime_category
=
mime_info
[:
mime_category
]
end
end
def
size
case
type
when
:
file
rugged_object.size
when
:
dir
content.size
end
end
def
content
@
content
||=
case
type
when
:
file
rugged_object.content
when
:
dir
repository.folder
_contents
(
oid
,
path
)
end
end
def
file
?
type
== :
file
end
def
dir
?
type
== :
dir
end
def
type
case
rugged_object.type
when
:
blob
:
file
when
:
tree
:
dir
end
end
def
name
path.split
(
'/'
)
[-
1
]
end
def
last_change
@
last_change
||=
repository.entry
_info
(
path
,
oid
)
end
def
==
(
other
)
[:
repository
, :
path
, :
oid
].
all
?
do
|
attr
|
self.send
(
attr
)
==
other.send
(
attr
)
end
end
protected
attr_accessor
:
repository
, :
rugged_object
end
end