tangled
alpha
login
or
join now
dekker.one
/
ponder
0
fork
atom
A small application to manage Lilypond music repositories
0
fork
atom
overview
issues
pulls
pipelines
Adds clean command
dekker.one
9 years ago
345b99cc
1510422a
+113
2 changed files
expand all
collapse all
unified
split
cmd
clean.go
compiler
clean.go
+37
cmd/clean.go
···
1
1
+
// Copyright © 2016 Jip J. Dekker <jip@dekker.li>
2
2
+
//
3
3
+
// Licensed under the Apache License, Version 2.0 (the "License");
4
4
+
// you may not use this file except in compliance with the License.
5
5
+
// You may obtain a copy of the License at
6
6
+
//
7
7
+
// http://www.apache.org/licenses/LICENSE-2.0
8
8
+
//
9
9
+
// Unless required by applicable law or agreed to in writing, software
10
10
+
// distributed under the License is distributed on an "AS IS" BASIS,
11
11
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
+
// See the License for the specific language governing permissions and
13
13
+
// limitations under the License.
14
14
+
15
15
+
package cmd
16
16
+
17
17
+
import (
18
18
+
"github.com/jjdekker/ponder/compiler"
19
19
+
"github.com/spf13/cobra"
20
20
+
)
21
21
+
22
22
+
// cleanCommand represents the cleaning command
23
23
+
var cleanCommand = &cobra.Command{
24
24
+
Use: "clean",
25
25
+
Short: "Remove all ponder generated files.",
26
26
+
Long: `The cleaning command removes all item generated by Ponder according to
27
27
+
the target definition. Items removed by the cleaning command will be removed
28
28
+
from the file system, use with care.`,
29
29
+
Run: func(cmd *cobra.Command, args []string) {
30
30
+
path, opts := getSettings()
31
31
+
compiler.Clean(path, opts)
32
32
+
},
33
33
+
}
34
34
+
35
35
+
func init() {
36
36
+
RootCmd.AddCommand(cleanCommand)
37
37
+
}
+76
compiler/clean.go
···
1
1
+
// Copyright © 2016 Jip J. Dekker <jip@dekker.li>
2
2
+
//
3
3
+
// Licensed under the Apache License, Version 2.0 (the "License");
4
4
+
// you may not use this file except in compliance with the License.
5
5
+
// You may obtain a copy of the License at
6
6
+
//
7
7
+
// http://www.apache.org/licenses/LICENSE-2.0
8
8
+
//
9
9
+
// Unless required by applicable law or agreed to in writing, software
10
10
+
// distributed under the License is distributed on an "AS IS" BASIS,
11
11
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
+
// See the License for the specific language governing permissions and
13
13
+
// limitations under the License.
14
14
+
15
15
+
package compiler
16
16
+
17
17
+
import (
18
18
+
"os"
19
19
+
"path/filepath"
20
20
+
21
21
+
log "github.com/Sirupsen/logrus"
22
22
+
"github.com/jjdekker/ponder/helpers"
23
23
+
"github.com/jjdekker/ponder/settings"
24
24
+
)
25
25
+
26
26
+
// Clean removes all files generated by the CompileDir and MakeBook commands.
27
27
+
func Clean(path string, opts *settings.Settings) {
28
28
+
// Find all scores
29
29
+
collector := generateScores()
30
30
+
filepath.Walk(path, compilePath(path, opts, collector))
31
31
+
32
32
+
// Remove score files
33
33
+
for i := range scores {
34
34
+
scores[i].GenerateOutputPath(opts)
35
35
+
if helpers.Exists(scores[i].OutputPath) {
36
36
+
if err := os.Remove(scores[i].OutputPath); err != nil {
37
37
+
log.WithFields(log.Fields{
38
38
+
"error": err,
39
39
+
"score": scores[i],
40
40
+
}).Error("unable to delete file")
41
41
+
}
42
42
+
}
43
43
+
}
44
44
+
45
45
+
// Remove LaTeX resources
46
46
+
texPath := filepath.Join(opts.OutputDir, opts.Name+".tex")
47
47
+
if helpers.Exists(texPath) {
48
48
+
if err := os.Remove(texPath); err != nil {
49
49
+
log.WithFields(log.Fields{
50
50
+
"error": err,
51
51
+
"file": texPath,
52
52
+
}).Error("unable to delete file")
53
53
+
}
54
54
+
}
55
55
+
for i := range opts.LatexResources {
56
56
+
path := filepath.Join(opts.OutputDir, filepath.Base(opts.LatexResources[i]))
57
57
+
err := os.RemoveAll(path)
58
58
+
if err != nil {
59
59
+
log.WithFields(log.Fields{
60
60
+
"error": err,
61
61
+
"resource": path,
62
62
+
}).Error("unable to delete file")
63
63
+
}
64
64
+
}
65
65
+
66
66
+
// Remove target songbook
67
67
+
songbookPath := filepath.Join(opts.OutputDir, opts.Name+".pdf")
68
68
+
if helpers.Exists(songbookPath) {
69
69
+
if err := os.Remove(songbookPath); err != nil {
70
70
+
log.WithFields(log.Fields{
71
71
+
"error": err,
72
72
+
"songbook": songbookPath,
73
73
+
}).Error("unable to delete file")
74
74
+
}
75
75
+
}
76
76
+
}