Added basic project infrastructure.

master
Pacman Ghost 2 years ago
parent a9c824578b
commit 2d444993e7
  1. 27
      Makefile
  2. 44
      cli/Program.fs
  3. 21
      cli/cli.fsproj
  4. 4
      git-guts/Library.fs
  5. 13
      git-guts/git-guts.fsproj
  6. 1
      git-guts/tests/Program.fs
  7. 11
      git-guts/tests/Tests.fs
  8. 22
      git-guts/tests/tests.fsproj

@ -0,0 +1,27 @@
PROJECTS=git-guts cli git-guts/tests
build:
dotnet build --nologo --no-restore cli/cli.fsproj
build-tests:
dotnet build --nologo --no-restore git-guts/tests/tests.fsproj
publish:
for proj in $(PROJECTS); do \
rm -rf $$proj/bin/Release ; \
rm -rf $$proj/obj/Release ; \
done
dotnet publish --nologo --no-restore --configuration Release cli/cli.fsproj
tests:
dotnet test --nologo --no-restore git-guts/tests/
clean:
for proj in $(PROJECTS); do \
rm -rf $$proj/bin ; \
rm -rf $$proj/obj ; \
done
restore:
for proj in $(PROJECTS); do \
dotnet restore $$proj/*.fsproj ; \
done

@ -0,0 +1,44 @@
open System
open System.IO
open Argu
open git_guts
type CliArguments =
| [<AltCommandLine("-r")>] Repo of path:string
interface IArgParserTemplate with
member s.Usage =
match s with
| Repo _ -> "specify the git repo directory."
type CliExiter() =
interface IExiter with
member __.Name = "CliExiter"
member __.Exit( msg, code ) =
if code = ErrorCode.HelpText then
// show the help text
printfn "%s" msg
exit 0
else
// show the error message (sans help text)
let pos = msg.IndexOf "USAGE:"
let msg2 = msg.Substring( 0, pos-1 )
printfn "%s" msg2
printfn "Use --help to get help."
exit 1
[<EntryPoint>]
let main argv =
// parse the command-line arguments
let programName = System.AppDomain.CurrentDomain.FriendlyName
let parser = ArgumentParser.Create<CliArguments>( programName=programName, helpTextMessage="Examine the guts of a git repo.", errorHandler=CliExiter() )
let results = parser.Parse argv
let repoDir = Path.GetFullPath( results.GetResult( Repo, defaultValue="." ) )
if not (Directory.Exists repoDir) then
failwith "Can't find git repo directory."
// initialize
let gitGuts = GitGuts( repoDir )
printfn "git guts: %A" gitGuts.repoDir
0

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>git_guts_cli</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Argu" Version="6.1.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\git-guts\git-guts.fsproj" />
</ItemGroup>
</Project>

@ -0,0 +1,4 @@
namespace git_guts
type GitGuts( repoDir: string ) =
member this.repoDir = repoDir

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace>git_guts</RootNamespace>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Include="Library.fs" />
</ItemGroup>
</Project>

@ -0,0 +1 @@
module Program = let [<EntryPoint>] main _ = 0

@ -0,0 +1,11 @@
namespace tests
open System
open Microsoft.VisualStudio.TestTools.UnitTesting
[<TestClass>]
type TestClass () =
[<TestMethod>]
member this.TestMethodPassing () =
Assert.IsTrue( true )

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>
<ItemGroup>
<Compile Include="Tests.fs" />
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.1" />
<PackageReference Include="coverlet.collector" Version="1.3.0" />
</ItemGroup>
</Project>
Loading…
Cancel
Save