Notably, this gets us `@actions/github` 6.0.1, which is necessary for `github.context.runAttempt` (so I have also updated `package.json` accordingly). On that note... great job following semver, GitHub! Between this and the non-breaking major version change on `@actions/cache`, I'm starting to feel like nobody on the Actions team understands how software versioning works.
75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.EnumGenerator = void 0;
|
|
const ts = require("typescript");
|
|
const rt = require("@protobuf-ts/runtime");
|
|
const local_type_name_1 = require("./local-type-name");
|
|
const typescript_enum_builder_1 = require("../framework/typescript-enum-builder");
|
|
class EnumGenerator {
|
|
constructor(symbols, imports, comments, interpreter) {
|
|
this.symbols = symbols;
|
|
this.imports = imports;
|
|
this.comments = comments;
|
|
this.interpreter = interpreter;
|
|
}
|
|
registerSymbols(source, descEnum) {
|
|
this.symbols.register(local_type_name_1.createLocalTypeName(descEnum), descEnum, source);
|
|
}
|
|
/**
|
|
* For the following .proto:
|
|
*
|
|
* ```proto
|
|
* enum MyEnum {
|
|
* ANY = 0;
|
|
* YES = 1;
|
|
* NO = 2;
|
|
* }
|
|
* ```
|
|
*
|
|
* We generate the following enum:
|
|
*
|
|
* ```typescript
|
|
* enum MyEnum {
|
|
* ANY = 0,
|
|
* YES = 1,
|
|
* NO = 2
|
|
* }
|
|
* ```
|
|
*
|
|
* We drop a shared prefix, for example:
|
|
*
|
|
* ```proto
|
|
* enum MyEnum {
|
|
* MY_ENUM_FOO = 0;
|
|
* MY_ENUM_BAR = 1;
|
|
* }
|
|
* ```
|
|
*
|
|
* Becomes:
|
|
*
|
|
* ```typescript
|
|
* enum MyEnum {
|
|
* FOO = 0,
|
|
* BAR = 1,
|
|
* }
|
|
* ```
|
|
*
|
|
*/
|
|
generateEnum(source, descriptor) {
|
|
let enumObject = this.interpreter.getEnumInfo(descriptor)[1], builder = new typescript_enum_builder_1.TypescriptEnumBuilder();
|
|
for (let ev of rt.listEnumValues(enumObject)) {
|
|
let evDescriptor = descriptor.values.find(v => v.number === ev.number);
|
|
let comments = evDescriptor
|
|
? this.comments.getCommentBlock(evDescriptor, true)
|
|
: "@generated synthetic value - protobuf-ts requires all enums to have a 0 value";
|
|
builder.add(ev.name, ev.number, comments);
|
|
}
|
|
let statement = builder.build(this.imports.type(source, descriptor), [ts.createModifier(ts.SyntaxKind.ExportKeyword)]);
|
|
// add to our file
|
|
source.addStatement(statement);
|
|
this.comments.addCommentsForDescriptor(statement, descriptor, 'appendToLeadingBlock');
|
|
return statement;
|
|
}
|
|
}
|
|
exports.EnumGenerator = EnumGenerator;
|