Skip to content

Commit 2db9e7a

Browse files
authored
Merge pull request #7 from Gusto/rc-fix-gem-build
fix(publish): use correct gemfile name when publishing prereleases
2 parents 80219d2 + 2c04b0b commit 2db9e7a

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

src/__tests__/prepare.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,17 @@ module TestGem
5959
end
6060
`);
6161
});
62+
63+
it('builds the gem', async () => {
64+
const { gemFile } = await prepare(
65+
{},
66+
{ ...context, nextRelease: { version: '1.0.0-alpha.1' } },
67+
{ versionFile, gemspec, gemName },
68+
);
69+
70+
expect(gemFile).toEqual('a-test-gem-1.0.0.alpha.1.gem');
71+
await expect(access(path.resolve(cwd, gemFile))).resolves.toBeUndefined();
72+
});
6273
});
6374

6475
describe('when updateGemfileLock is set to `true`', () => {

src/prepare.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ const execa = require('execa');
44
const { VERSION_REGEX } = require('./common');
55

66
const writeVersion = async ({ versionFile, nextVersion, logger, cwd }) => {
7+
// Rubygems replaces all `-` with `.pre.`, which causes odd version differences between tags/releases
8+
// and the published gem version. Replacing `-` with `.` is a smaller difference.
9+
const gemVersion = nextVersion.replace('-', '.');
710
const fullVersionPath = path.resolve(cwd, versionFile);
811
const versionContents = await readFile(fullVersionPath, 'utf8');
9-
const newContents = versionContents.replace(
10-
VERSION_REGEX,
11-
// Rubygems replaces all `-` with `.pre.`, which causes odd version differences between tags/releases
12-
// and the published gem version. Replacing `-` with `.` is a smaller difference.
13-
`$1${nextVersion.replace('-', '.')}$2`,
14-
);
12+
const newContents = versionContents.replace(VERSION_REGEX, `$1${gemVersion}$2`);
1513
logger.log('Writing version %s to `%s`', nextVersion, versionFile);
1614
await writeFile(fullVersionPath, newContents, 'utf8');
15+
16+
return { gemVersion };
1717
};
1818

1919
const bundleInstall = async ({ updateGemfileLock, cwd, env, logger, stdout, stderr }) => {
@@ -43,13 +43,22 @@ module.exports = async function prepare(
4343
{ nextRelease: { version }, cwd, env, logger, stdout, stderr },
4444
{ versionFile, gemspec, gemName },
4545
) {
46-
await writeVersion({ versionFile, nextVersion: version, logger, cwd });
46+
const { gemVersion } = await writeVersion({ versionFile, nextVersion: version, logger, cwd });
4747

4848
if (updateGemfileLock) {
4949
await bundleInstall({ updateGemfileLock, cwd, env, logger, stdout, stderr });
5050
}
5151

52-
const gemFile = await buildGem({ gemspec, gemName, version, cwd, env, logger, stdout, stderr });
52+
const gemFile = await buildGem({
53+
gemspec,
54+
gemName,
55+
version: gemVersion,
56+
cwd,
57+
env,
58+
logger,
59+
stdout,
60+
stderr,
61+
});
5362

5463
return { gemFile };
5564
};

0 commit comments

Comments
 (0)