Skip to content
This repository was archived by the owner on Mar 1, 2025. It is now read-only.

Commit ca3b898

Browse files
committed
feat: add lockfile metadata support to emoji generation commands
1 parent 9e83613 commit ca3b898

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

src/adapter/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { EmojiLockfile } from "../lockfile";
12
import type { Emoji, EmojiData, EmojiGroup, EmojiMetadata, EmojiSequence, EmojiShortcode, EmojiVariation, ShortcodeProvider } from "../types";
23
import semver from "semver";
34

@@ -48,6 +49,7 @@ export interface BaseAdapterContext {
4849
emojiVersion: string;
4950
unicodeVersion: string;
5051
force: boolean;
52+
lockfileMetadata: EmojiLockfile["versions"][number]["metadata"];
5153
}
5254

5355
export type UnicodeNamesFn = (ctx: BaseAdapterContext) => Promise<Record<string, string>>;

src/cli.ts

+48-5
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ cli.command(
4747
const versions = Array.isArray(args.versions) ? args.versions : [args.versions];
4848
const generators = Array.isArray(args.generators) ? args.generators : [args.generators];
4949

50+
const lockfile = await readLockfile();
51+
52+
if (lockfile == null) {
53+
consola.error("no lockfile found, run `mojis versions --write-lockfile` to generate one");
54+
process.exit(1);
55+
}
56+
5057
function isGeneratorEnabled(generator: string) {
5158
return generators.includes(generator);
5259
}
@@ -75,12 +82,27 @@ cli.command(
7582
throw new Error(`no adapter found for version ${version}`);
7683
}
7784

85+
const lockfileMetadata = lockfile.versions.find((v) => v.emoji_version === version)?.metadata ?? {
86+
emojis: null,
87+
metadata: null,
88+
sequences: null,
89+
shortcodes: null,
90+
unicodeNames: null,
91+
variations: null,
92+
zwj: null,
93+
};
94+
7895
if (isGeneratorEnabled("metadata")) {
7996
if (adapter.metadata == null) {
8097
throw new MojisNotImplemented("metadata");
8198
}
8299

83-
const { groups, emojiMetadata } = await adapter.metadata({ emojiVersion: version, force, unicodeVersion: getUnicodeVersionByEmojiVersion(version)! });
100+
const { groups, emojiMetadata } = await adapter.metadata({
101+
emojiVersion: version,
102+
force,
103+
unicodeVersion: getUnicodeVersionByEmojiVersion(version)!,
104+
lockfileMetadata,
105+
});
84106

85107
await fs.ensureDir(`./data/v${version}/metadata`);
86108

@@ -102,7 +124,12 @@ cli.command(
102124
throw new MojisNotImplemented("sequences");
103125
}
104126

105-
const { sequences, zwj } = await adapter.sequences({ emojiVersion: version, force, unicodeVersion: getUnicodeVersionByEmojiVersion(version)! });
127+
const { sequences, zwj } = await adapter.sequences({
128+
emojiVersion: version,
129+
force,
130+
unicodeVersion: getUnicodeVersionByEmojiVersion(version)!,
131+
lockfileMetadata,
132+
});
106133

107134
await fs.ensureDir(`./data/v${version}`);
108135

@@ -124,7 +151,12 @@ cli.command(
124151
throw new MojisNotImplemented("variations");
125152
}
126153

127-
const variations = await adapter.variations({ emojiVersion: version, force, unicodeVersion: getUnicodeVersionByEmojiVersion(version)! });
154+
const variations = await adapter.variations({
155+
emojiVersion: version,
156+
force,
157+
unicodeVersion: getUnicodeVersionByEmojiVersion(version)!,
158+
lockfileMetadata,
159+
});
128160

129161
await fs.ensureDir(`./data/v${version}`);
130162
await fs.writeFile(
@@ -139,7 +171,12 @@ cli.command(
139171
throw new MojisNotImplemented("emojis");
140172
}
141173

142-
const { emojiData, emojis } = await adapter.emojis({ emojiVersion: version, force, unicodeVersion: getUnicodeVersionByEmojiVersion(version)! });
174+
const { emojiData, emojis } = await adapter.emojis({
175+
emojiVersion: version,
176+
force,
177+
unicodeVersion: getUnicodeVersionByEmojiVersion(version)!,
178+
lockfileMetadata,
179+
});
143180

144181
await fs.ensureDir(`./data/v${version}`);
145182

@@ -177,7 +214,13 @@ cli.command(
177214
throw new MojisNotImplemented("shortcodes");
178215
}
179216

180-
const shortcodes = await adapter.shortcodes({ emojiVersion: version, force, unicodeVersion: getUnicodeVersionByEmojiVersion(version)!, providers });
217+
const shortcodes = await adapter.shortcodes({
218+
emojiVersion: version,
219+
force,
220+
unicodeVersion: getUnicodeVersionByEmojiVersion(version)!,
221+
providers,
222+
lockfileMetadata,
223+
});
181224

182225
await fs.ensureDir(`./data/v${version}/shortcodes`);
183226

src/lockfile.ts

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const EMOJI_VERSION_METADATA_SCHEMA = v.object({
1010
metadata: v.nullable(v.string()),
1111
shortcodes: v.nullable(v.string()),
1212
zwj: v.nullable(v.string()),
13+
unicodeNames: v.nullable(v.string()),
1314
});
1415

1516
const EMOJI_VERSION_SCHEMA = v.object({

0 commit comments

Comments
 (0)