├── .gitignore ├── .scalafmt.conf ├── README.md ├── diagram └── git-hexagon.png ├── project └── build.properties └── src ├── main └── scala │ └── git │ ├── Main.scala │ ├── domain │ ├── SinkExtension.scala │ ├── model │ │ ├── FileIdentifier.scala │ │ ├── Hash.scala │ │ └── index │ │ │ ├── Entry.scala │ │ │ ├── Flags.scala │ │ │ └── Index.scala │ ├── port │ │ └── FileSystemPort.scala │ ├── repository │ │ ├── IndexRepository.scala │ │ └── ObjectRepository.scala │ └── usecase │ │ └── HashObjectUseCase.scala │ └── infrastructure │ ├── console │ └── ConsoleCommandParser.scala │ ├── filesystem │ ├── FileSystemAdapter.scala │ └── ObjectRepositoryFileSystem.scala │ └── index │ ├── IndexBinaryDecoder.scala │ ├── IndexRepositoryFileSystem.scala │ └── codec │ ├── EntryCodec.scala │ ├── FlagsCodec.scala │ └── IndexCodec.scala └── test ├── resources ├── blob-8cd96400238da79f664f70654ef1b65630c93afa ├── hash-object-file1.txt ├── hash-object-file3.txt └── index-file-simple-1 └── scala └── git ├── IndexFileCodecsSpec.scala ├── MainSpec.scala ├── ParseIndexSpecExperiment2.scala ├── domain └── usecase │ └── HashObjectUseCaseSpec.scala └── infrastructure ├── ObjectRepositoryMock.scala ├── console └── ConsoleCommandParserSpec.scala ├── filesystem └── ObjectRepositoryFileSystemSpec.scala └── index └── IndexRepositoryFileSystemSpec.scala /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/.gitignore -------------------------------------------------------------------------------- /.scalafmt.conf: -------------------------------------------------------------------------------- 1 | version = "3.5.3" 2 | runner.dialect = scala3 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/README.md -------------------------------------------------------------------------------- /diagram/git-hexagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/diagram/git-hexagon.png -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.6.2 2 | -------------------------------------------------------------------------------- /src/main/scala/git/Main.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/Main.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/SinkExtension.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/SinkExtension.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/model/FileIdentifier.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/model/FileIdentifier.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/model/Hash.scala: -------------------------------------------------------------------------------- 1 | package git.domain.model 2 | 3 | case class Hash(hash: String) extends AnyVal 4 | -------------------------------------------------------------------------------- /src/main/scala/git/domain/model/index/Entry.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/model/index/Entry.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/model/index/Flags.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/model/index/Flags.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/model/index/Index.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/model/index/Index.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/port/FileSystemPort.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/port/FileSystemPort.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/repository/IndexRepository.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/repository/IndexRepository.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/repository/ObjectRepository.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/repository/ObjectRepository.scala -------------------------------------------------------------------------------- /src/main/scala/git/domain/usecase/HashObjectUseCase.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/domain/usecase/HashObjectUseCase.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/console/ConsoleCommandParser.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/console/ConsoleCommandParser.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/filesystem/FileSystemAdapter.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/filesystem/FileSystemAdapter.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/filesystem/ObjectRepositoryFileSystem.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/filesystem/ObjectRepositoryFileSystem.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/index/IndexBinaryDecoder.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/index/IndexBinaryDecoder.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/index/IndexRepositoryFileSystem.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/index/IndexRepositoryFileSystem.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/index/codec/EntryCodec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/index/codec/EntryCodec.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/index/codec/FlagsCodec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/index/codec/FlagsCodec.scala -------------------------------------------------------------------------------- /src/main/scala/git/infrastructure/index/codec/IndexCodec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/main/scala/git/infrastructure/index/codec/IndexCodec.scala -------------------------------------------------------------------------------- /src/test/resources/blob-8cd96400238da79f664f70654ef1b65630c93afa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/resources/blob-8cd96400238da79f664f70654ef1b65630c93afa -------------------------------------------------------------------------------- /src/test/resources/hash-object-file1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/resources/hash-object-file1.txt -------------------------------------------------------------------------------- /src/test/resources/hash-object-file3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/resources/hash-object-file3.txt -------------------------------------------------------------------------------- /src/test/resources/index-file-simple-1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/resources/index-file-simple-1 -------------------------------------------------------------------------------- /src/test/scala/git/IndexFileCodecsSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/IndexFileCodecsSpec.scala -------------------------------------------------------------------------------- /src/test/scala/git/MainSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/MainSpec.scala -------------------------------------------------------------------------------- /src/test/scala/git/ParseIndexSpecExperiment2.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/ParseIndexSpecExperiment2.scala -------------------------------------------------------------------------------- /src/test/scala/git/domain/usecase/HashObjectUseCaseSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/domain/usecase/HashObjectUseCaseSpec.scala -------------------------------------------------------------------------------- /src/test/scala/git/infrastructure/ObjectRepositoryMock.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/infrastructure/ObjectRepositoryMock.scala -------------------------------------------------------------------------------- /src/test/scala/git/infrastructure/console/ConsoleCommandParserSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/infrastructure/console/ConsoleCommandParserSpec.scala -------------------------------------------------------------------------------- /src/test/scala/git/infrastructure/filesystem/ObjectRepositoryFileSystemSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/infrastructure/filesystem/ObjectRepositoryFileSystemSpec.scala -------------------------------------------------------------------------------- /src/test/scala/git/infrastructure/index/IndexRepositoryFileSystemSpec.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dnomyar/git/HEAD/src/test/scala/git/infrastructure/index/IndexRepositoryFileSystemSpec.scala --------------------------------------------------------------------------------