-
Notifications
You must be signed in to change notification settings - Fork 0
/
volume.go
76 lines (60 loc) · 2 KB
/
volume.go
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
Copyright © 2019 Nuxeo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package cmd
import (
"os"
"github.com/spf13/cobra"
"github.com/otiai10/copy"
"github.com/dmetzler/go-deploy/lib"
)
// volumeCmd represents the volume command
var volumeCmd = &cobra.Command{
Use: "volume",
Short: "Deploys the application in a directory, usually a Docker volume.",
Long: `Deploys the content or $SRC_DIR to /html_dir that is usually mounted as a
volume. The command support an addional argument to specify the target directory`,
Run: func(cmd *cobra.Command, args []string) {
// Check that SRC_DIR exist
srcDir, exists := os.LookupEnv("SRC_DIR")
if(!exists) {
log.Fatal("SRC_DIR env variable does not exist")
os.Exit(1)
}
if _, err := os.Stat(srcDir); os.IsNotExist(err) {
log.Fatal("Source directory does not exist (SRC_DIR: " + srcDir + ")")
os.Exit(1)
}
destination := "/html_dir"
if len(args) > 1 {
destination = args[0]
}
configName, _:= cmd.Flags().GetString("configname")
dotenv, _:= cmd.Flags().GetString("env")
err, workdir := lib.BuildWorkDir(srcDir, dotenv, configName )
if err != nil {
log.Fatal(err)
}
// Copy the result into destination
err = copy.Copy(workdir, destination)
if err != nil {
log.Fatal(err)
os.Exit(1)
}
os.RemoveAll(workdir)
},
}
func init() {
rootCmd.AddCommand(volumeCmd)
volumeCmd.Flags().StringP("env", "e", ".env", "Source dotenv file")
volumeCmd.Flags().StringP("configname", "c", "env-config.js", "Name of the generated config file")
}