# Filesystem

{% hint style="info" %}
You can easily import all the functions from the <mark style="color:yellow;">`filesystem`</mark> registry by including the following import statement in your code

```go
import "github.com/go-sprout/sprout/registry/filesystem"
```

{% endhint %}

### <mark style="color:purple;">pathBase</mark>

The function returns the last element of a given path, effectively extracting the file or directory name from the full path.

<table data-header-hidden><thead><tr><th width="174">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">PathBase(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "/path/to/file.txt" | pathBase }} // Output: "file.txt"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">pathDir</mark>

The function returns all but the last element of a given path, effectively extracting the directory portion of the path.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">PathDir(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "/" | pathDir }} // Output: "/"
{{ "/path/to/file.txt" | pathDir }} // Output: "/path/to"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">pathExt</mark>

The function returns the file extension of the given path, identifying the type of file by its suffix.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">PathExt(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "/" | pathExt }} // Output: ""
{{ "/path/to/file.txt" | pathExt }} // Output: ".txt"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">pathClean</mark>

The function cleans up a given path by simplifying any redundancies, such as removing unnecessary double slashes or resolving "." and ".." elements, resulting in a standardized and more straightforward path.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">PathClean(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "/path//to/file.txt" | pathClean }} // Output: "/path/to/file.txt"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">pathIsAbs</mark>

The function checks whether the given path is an absolute path, returning `true` if it is and `false` if it is not.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">PathIsAbs(str string) bool
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "/path/to/file.txt" | pathIsAbs }} // Output: true
{{ "../file.txt" | pathIsAbs }} // Output: false
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">osBase</mark>

The function returns the last element of a given path, using the operating system's specific path separator to determine the path structure.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">OsBase(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "C:\\path\\to\\file.txt" | osBase }} // Output(will be different): "file.txt"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">osDir</mark>

The function returns all but the last element of a given path, using the operating system's specific path separator to navigate the directory structure.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">OsDir(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "C:\\path\\to\\file.txt" | osDir }} // Output(will be different): "C:\\path\\to"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">osExt</mark>

The function returns the file extension of a given path, using the operating system's specific path separator to accurately determine the extension.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">OsExt(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "C:\\path\\to\\file.txt" | osExt }} // Output: ".txt"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">osClean</mark>

The function cleans up a given path, using the operating system's specific path separator to simplify redundancies and standardize the path structure.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">OsClean(str string) string
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "C:\\path\\\\to\\file.txt" | osClean }} // Output(will be different): "C:\\path\\to\\file.txt"
```

{% endtab %}
{% endtabs %}

### <mark style="color:purple;">osIsAbs</mark>

The function checks whether the given path is absolute, using the operating system's specific path separator to determine if the path is absolute or relative.

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">OsIsAbs(str string) bool
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "C:\\path\\to\\file.txt" | osIsAbs }} // Output(will be different): true
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.atom.codes/sprout/registries/filesystem.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
