From ec409e51a1e11a63f4172a3c49ccf9b239cce9a3 Mon Sep 17 00:00:00 2001 From: swgillespie Date: Sat, 29 Mar 2014 15:15:52 -0700 Subject: [PATCH] Add ability to choose different formats --- pkg/plugin/publish/publish.go | 2 +- pkg/plugin/publish/pypi.go | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/pkg/plugin/publish/publish.go b/pkg/plugin/publish/publish.go index bef429e36..83f891f73 100644 --- a/pkg/plugin/publish/publish.go +++ b/pkg/plugin/publish/publish.go @@ -10,7 +10,7 @@ import ( type Publish struct { S3 *S3 `yaml:"s3,omitempty"` Swift *Swift `yaml:"swift,omitempty"` - PyPI *PyPI `yaml:"pypi, omitempty"` + PyPI *PyPI `yaml:"pypi,omitempty"` } func (p *Publish) Write(f *buildfile.Buildfile) { diff --git a/pkg/plugin/publish/pypi.go b/pkg/plugin/publish/pypi.go index 710af6d28..7d08c2304 100644 --- a/pkg/plugin/publish/pypi.go +++ b/pkg/plugin/publish/pypi.go @@ -15,14 +15,28 @@ username:%s password:%s EOF` +var deployCmd = ` +if [ -z $_PYPI_SETUP_PY ] +then + python $_PYPI_SETUP_PY sdist %s upload + if [ $? -ne 0 ] + then + echo "Deploy to PyPI failed - perhaps due to the version number not being incremented. Continuing..." + fi +else + echo "Failed to find setup.py file" +fi +` + type PyPI struct { Username string `yaml:"username,omitempty"` Password string `yaml:"password,omitempty"` + Formats []string `yaml:"formats,omitempty"` } func (p *PyPI) Write(f *buildfile.Buildfile) { if len(p.Username) == 0 || len(p.Password) == 0 { - // nothing to do if the config is bad + // nothing to do if the config is fundamentally flawed return } f.WriteCmdSilent("echo 'publishing to PyPI...'") @@ -30,9 +44,23 @@ func (p *PyPI) Write(f *buildfile.Buildfile) { // find the setup.py file f.WriteCmdSilent("_PYPI_SETUP_PY=$(find . -name 'setup.py')") + // build the .pypirc file that pypi expects f.WriteCmdSilent(fmt.Sprintf(pypirc, p.Username, p.Password)) + formatStr := p.BuildFormatStr() // if we found the setup.py file use it to deploy - f.WriteCmd("[ -z $_PYPI_SETUP_PY ] || python $_PYPI_SETUP_PY sdist --formats gztar,zip upload") - f.WriteCmd("[ -z $_PYPI_SETUP_PY ] && echo 'Failed to find setup.py file'") + f.WriteCmdSilent(fmt.Sprintf(deployCmd, formatStr)) +} + +func (p *PyPI) BuildFormatStr() string { + if len(p.Formats) == 0 { + // the format parameter is optional - if it's not here, + // omit the format string completely. + return "" + } + fmtStr := "--format " + for i := range p.Formats { + fmtStr += p.Formats[i] + "," + } + return fmtStr[:len(fmtStr) - 1] }