Skip to content

Commit a4e5763

Browse files
committed
Add support for omitting the pull step
By passing the flag --no-pull to the install command it is now possible to omit the pull step from the generated systemd service file. This allows using local images which are updated by some external process.
1 parent bc37ee8 commit a4e5763

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

dcsg.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import (
1010
"github.com/pkg/errors"
1111
)
1212

13-
func newDscg(dockerComposeFile, projectName string, dryRun bool) (*dcsg, error) {
14-
13+
func newDscg(dockerComposeFile, projectName string, dryRun bool, doPull bool) (*dcsg, error) {
1514
cleanedFilePath, err := filepath.Abs(dockerComposeFile)
1615
if err != nil {
1716
return nil, err
@@ -45,7 +44,7 @@ func newDscg(dockerComposeFile, projectName string, dryRun bool) (*dcsg, error)
4544
dockerComposeFileName: dockerComposeFileName,
4645
projectName: projectName,
4746

48-
installer: &systemdInstaller{systemdDirectory, commandExecutor, dryRun},
47+
installer: &systemdInstaller{systemdDirectory, commandExecutor, dryRun, doPull},
4948
uninstaller: &systemdUninstaller{systemdDirectory, commandExecutor, dryRun},
5049
}, nil
5150
}

installer.go

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type systemdInstaller struct {
1818
systemdDirectory string
1919
commandExecutor Executor
2020
dryRun bool
21+
doPull bool
2122
}
2223

2324
func (installer *systemdInstaller) Install(projectDirectory, dockerComposeFileName, projectName string) error {
@@ -27,6 +28,7 @@ func (installer *systemdInstaller) Install(projectDirectory, dockerComposeFileNa
2728
ProjectName: projectName,
2829
ProjectDirectory: projectDirectory,
2930
DockerComposeFile: dockerComposeFileName,
31+
DoPull: installer.doPull,
3032
}
3133

3234
if err := installer.createSystemdService(serviceViewModel); err != nil {
@@ -92,7 +94,9 @@ Restart=always
9294
RestartSec=10
9395
TimeoutSec=300
9496
WorkingDirectory={{ .ProjectDirectory }}
97+
{{- if .DoPull }}
9598
ExecStartPre=/usr/bin/env docker-compose -p "{{ .ProjectName }}" -f "{{ .DockerComposeFile }}" pull
99+
{{- end }}
96100
ExecStart=/usr/bin/env docker-compose -p "{{ .ProjectName }}" -f "{{ .DockerComposeFile }}" up
97101
ExecStop=/usr/bin/env docker-compose -p "{{ .ProjectName }}" -f "{{ .DockerComposeFile }}" stop
98102
ExecStopPost=/usr/bin/env docker-compose -p "{{ .ProjectName }}" -f "{{ .DockerComposeFile }}" down
@@ -105,4 +109,5 @@ type serviceDefinition struct {
105109
ProjectName string
106110
ProjectDirectory string
107111
DockerComposeFile string
112+
DoPull bool
108113
}

main.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var (
1818
installCommand = app.Command("install", "Register a systemd service for the given docker-compose file")
1919
installDockerComposeFile = installCommand.Arg("docker-compose-file", "A docker-compose file").Default("docker-compose.yml").String()
2020
installProjectName = installCommand.Arg("project-name", "The project name of the docker-compose project").String()
21+
installDontPull = installCommand.Flag("no-pull", "The project name of the docker-compose project").Bool()
2122

2223
// uninstall
2324
uninstallCommand = app.Command("uninstall", "Uninstall the systemd service for the given docker-compose file")
@@ -35,11 +36,10 @@ func main() {
3536
}
3637

3738
func handleCommandlineArgument(arguments []string) {
38-
3939
switch kingpin.MustParse(app.Parse(arguments)) {
4040

4141
case installCommand.FullCommand():
42-
service, err := newDscg(*installDockerComposeFile, *installProjectName, *appDryRun)
42+
service, err := newDscg(*installDockerComposeFile, *installProjectName, *appDryRun, !(*installDontPull))
4343
if err != nil {
4444
fmt.Fprintf(os.Stderr, "%s\n", err)
4545
os.Exit(1)
@@ -51,7 +51,7 @@ func handleCommandlineArgument(arguments []string) {
5151
}
5252

5353
case uninstallCommand.FullCommand():
54-
service, err := newDscg(*uninstallDockerComposeFile, *uinstallProjectName, *appDryRun)
54+
service, err := newDscg(*uninstallDockerComposeFile, *uinstallProjectName, *appDryRun, !(*installDontPull))
5555
if err != nil {
5656
fmt.Fprintf(os.Stderr, "%s\n", err)
5757
os.Exit(1)
@@ -61,7 +61,5 @@ func handleCommandlineArgument(arguments []string) {
6161
fmt.Fprintf(os.Stderr, "%s\n", err)
6262
os.Exit(1)
6363
}
64-
6564
}
66-
6765
}

0 commit comments

Comments
 (0)