diff --git a/docs/guide/automate.md b/docs/guide/automate.md
index d2eedad..099da89 100644
--- a/docs/guide/automate.md
+++ b/docs/guide/automate.md
@@ -31,7 +31,8 @@ To manually attach husky to your project, add the below code to one of your proj
-
+
diff --git a/docs/guide/submodules.md b/docs/guide/submodules.md
index 20070d4..002f095 100644
--- a/docs/guide/submodules.md
+++ b/docs/guide/submodules.md
@@ -34,10 +34,17 @@ The `attach` command offers a `--ignore-submodule` options that generates an MsB
The generated block will look something like this, If you're attaching husky manually copy the target to your `.csproj` and adjust `WorkingDirectory` accordingly.
```xml:no-line-numbers:no-v-pre
-
+
+
+
+
+
```
diff --git a/src/Husky/Cli/AttachCommand.cs b/src/Husky/Cli/AttachCommand.cs
index fc1f25f..09e45fa 100644
--- a/src/Husky/Cli/AttachCommand.cs
+++ b/src/Husky/Cli/AttachCommand.cs
@@ -83,9 +83,11 @@ private XElement GetTarget(string condition, string rootRelativePath)
exec.SetAttributeValue("WorkingDirectory", rootRelativePath);
target.Add(exec);
+ var huskyDir = Path.Combine(rootRelativePath, ".husky", "_");
var touch = new XElement("Touch");
touch.SetAttributeValue("Files", sentinelPath);
touch.SetAttributeValue("AlwaysCreate", "true");
+ touch.SetAttributeValue("Condition", $"Exists('{huskyDir}')");
target.Add(touch);
var itemGroup = new XElement("ItemGroup");
diff --git a/src/Husky/Husky.csproj b/src/Husky/Husky.csproj
index 4a1bf36..c31effb 100644
--- a/src/Husky/Husky.csproj
+++ b/src/Husky/Husky.csproj
@@ -68,12 +68,12 @@
-
-
-
+
+
diff --git a/tests/HuskyTest/Cli/AttachCommandTests.cs b/tests/HuskyTest/Cli/AttachCommandTests.cs
index 12f59a6..af66282 100644
--- a/tests/HuskyTest/Cli/AttachCommandTests.cs
+++ b/tests/HuskyTest/Cli/AttachCommandTests.cs
@@ -61,14 +61,16 @@ public async Task Attach_WhenParametersProvided_ShouldAddHuskyTargetElement()
huskyTarget!.Descendants("Exec").Should().HaveCount(2);
huskyTarget.Attribute("Inputs").Should().NotBeNull();
huskyTarget.Attribute("Outputs").Should().NotBeNull();
+
+ // Verify Touch is conditioned on directory existence
huskyTarget.Descendants("Touch").Should().HaveCount(1);
- huskyTarget.Descendants("Touch").First().Attribute("AlwaysCreate")?.Value.Should().Be("true");
+ var touch = huskyTarget.Descendants("Touch").First();
+ touch.Attribute("AlwaysCreate")?.Value.Should().Be("true");
+ touch.Attribute("Condition")?.Value.Should().Contain("Exists(");
+
huskyTarget.Descendants("ItemGroup").Descendants("FileWrites").Should().HaveCount(1);
_console.ReadOutputString().Trim().Should().Be("Husky dev-dependency successfully attached to this project.");
-
- huskyTarget.Attribute("AfterTargets")?.Value.Should().Be("Restore");
- huskyTarget.Attribute("BeforeTargets").Should().BeNull();
}
[Fact]