mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-04 20:29:08 -04:00
refactor(index): use enum for file modes
This commit is contained in:
parent
5feb12fdaa
commit
627519a31f
3 changed files with 45 additions and 12 deletions
|
@ -3,6 +3,7 @@ import 'package:ffi/ffi.dart';
|
|||
import 'bindings/libgit2_bindings.dart';
|
||||
import 'bindings/index.dart' as bindings;
|
||||
import 'oid.dart';
|
||||
import 'types.dart';
|
||||
import 'util.dart';
|
||||
|
||||
class Index {
|
||||
|
@ -131,10 +132,47 @@ class IndexEntry {
|
|||
/// Returns id of the index entry as sha-1 hex.
|
||||
String get sha => _oidToHex(_indexEntryPointer.ref.id);
|
||||
|
||||
/// Mode of the index entry.
|
||||
int get mode => _indexEntryPointer.ref.mode;
|
||||
GitFilemode get mode {
|
||||
switch (_indexEntryPointer.ref.mode) {
|
||||
case 0:
|
||||
return GitFilemode.undreadable;
|
||||
case 16384:
|
||||
return GitFilemode.tree;
|
||||
case 33188:
|
||||
return GitFilemode.blob;
|
||||
case 33261:
|
||||
return GitFilemode.blobExecutable;
|
||||
case 40960:
|
||||
return GitFilemode.link;
|
||||
case 57344:
|
||||
return GitFilemode.commit;
|
||||
default:
|
||||
return GitFilemode.undreadable;
|
||||
}
|
||||
}
|
||||
|
||||
set mode(int mode) => _indexEntryPointer.ref.mode = mode;
|
||||
set mode(GitFilemode mode) {
|
||||
switch (mode) {
|
||||
case GitFilemode.undreadable:
|
||||
_indexEntryPointer.ref.mode = 0;
|
||||
break;
|
||||
case GitFilemode.tree:
|
||||
_indexEntryPointer.ref.mode = 16384;
|
||||
break;
|
||||
case GitFilemode.blob:
|
||||
_indexEntryPointer.ref.mode = 33188;
|
||||
break;
|
||||
case GitFilemode.blobExecutable:
|
||||
_indexEntryPointer.ref.mode = 33261;
|
||||
break;
|
||||
case GitFilemode.link:
|
||||
_indexEntryPointer.ref.mode = 40960;
|
||||
break;
|
||||
case GitFilemode.commit:
|
||||
_indexEntryPointer.ref.mode = 57344;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
String _oidToHex(git_oid oid) {
|
||||
var hex = StringBuffer();
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
enum ReferenceType { direct, symbolic }
|
||||
|
||||
enum GitFilemode { undreadable, tree, blob, blobExecutable, link, commit }
|
||||
|
||||
/// Valid modes for index and tree entries.
|
||||
abstract class GitFilemode {
|
||||
static const int unreadable = 0;
|
||||
static const int tree = 16384;
|
||||
static const int blob = 33188;
|
||||
static const int blobExecutable = 33261;
|
||||
static const int link = 40960;
|
||||
static const int commit = 57344;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ void main() {
|
|||
});
|
||||
|
||||
test('returns mode of index entry', () {
|
||||
expect(index['file'].mode, 33188);
|
||||
expect(index['file'].mode, GitFilemode.blob);
|
||||
});
|
||||
|
||||
test('returns index entry at provided position', () {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue