最近、Goでtreeコマンドを作ってみた。
自分はディレクトリとファイルのツリー構造をREADMEなど仕様上の資料に含めることが多いのですが、
その際に必要とするディレクトリとファイルをmkdirtouchしてから、ツリー構造の先頭に行き
treeコマンドを実行して用意するのが手間だったので作りました。

https://github.com/fujimisakari/go-tree

使い方は、yamlでtree構造を定義するだけです。
go-tree以降からyamlの配列で定義していき、ディレクトリには末尾にセミコロン付けます。
また、root-dirでrootディレクトリ名を定義することができます(defaultでは.になります)

  • sample.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root-dir: "Sample"
go-tree:
- fizz
- buzz
- dir1:
- comp1-1
- comp1-2
- comp1-3
- comp1-4
- dir2:
- comp2-1
- comp2-2
- comp2-3
- comp2-4
- dir3:
- comp3-1
- comp3-2
- dir4:
- comp4-1
- comp4-2
- comp4-3
- comp3-3
- comp3-4
- comp2-5
- comp2-6
- dir5:
- comp4-1
- comp4-2
- comp4-3
- comp4-4
- foo
- bar

あとは、go-treeコマンドのパラメータにyamlファイルのpathに渡して実行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ go-tree ./sample.yaml
Sample
├── fizz
├── buzz
├── dir1
│ ├── comp1-1
│ ├── comp1-2
│ ├── comp1-3
│ └── comp1-4
├── dir2
│ ├── comp2-1
│ ├── comp2-2
│ ├── comp2-3
│ ├── comp2-4
│ ├── dir3
│ │ ├── comp3-1
│ │ ├── comp3-2
│ │ ├── dir4
│ │ │ ├── comp4-1
│ │ │ ├── comp4-2
│ │ │ └── comp4-3
│ │ ├── comp3-3
│ │ └── comp3-4
│ ├── comp2-5
│ └── comp2-6
├── dir5
│ ├── comp4-1
│ ├── comp4-2
│ ├── comp4-3
│ └── comp4-4
├── foo
└── bar

X