You've already forked go-semantic-release
Integrations are simple helpers to make integration with existing tools easier.
At basic npm support, the integration will set the version before release to the `package.json`
```yml
integrations:
npm:
enabled: true
```
63 lines
1.1 KiB
Go
63 lines
1.1 KiB
Go
package integrations
|
|
|
|
import (
|
|
"github.com/Masterminds/semver"
|
|
"github.com/Nightapes/go-semantic-release/internal/shared"
|
|
"github.com/Nightapes/go-semantic-release/pkg/config"
|
|
"github.com/stretchr/testify/assert"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestIntegrations_updateNPM(t *testing.T) {
|
|
file, err := ioutil.TempFile("", "package")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Remove(file.Name())
|
|
|
|
err = ioutil.WriteFile(file.Name(), []byte(`{
|
|
"name": "test",
|
|
"version": "0.0.0",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"ng": "ng",
|
|
"nx": "nx"
|
|
}
|
|
}`), 0777)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
testVersion, err := semver.NewVersion("1.2.0")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
i := New(&config.Integrations{NPM: config.IntegrationNPM{
|
|
Enabled: true,
|
|
Path: file.Name(),
|
|
}}, &shared.ReleaseVersion{
|
|
Next: shared.ReleaseVersionEntry{
|
|
Version: testVersion,
|
|
},
|
|
})
|
|
|
|
assert.NoError(t, i.updateNPM())
|
|
updatedFile, err := ioutil.ReadFile(file.Name())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, `{
|
|
"name": "test",
|
|
"version": "1.2.0",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"ng": "ng",
|
|
"nx": "nx"
|
|
}
|
|
}`, string(updatedFile))
|
|
|
|
}
|