@@ -3,6 +3,7 @@ import { Base } from "./base.js";
33import { Octokit } from "@octokit/rest" ;
44import versionBump from "bumpp" ;
55import ci from "ci-info" ;
6+ import conventionalChangelog from "conventional-changelog" ;
67import { default as glob } from "fast-glob" ;
78import fs from "fs-extra" ;
89import _ from "lodash" ;
@@ -46,32 +47,45 @@ export default class Release extends Base {
4647 * release: bump version, run build, git add, git commit, git tag, git push
4748 */
4849 bump ( ) {
49- // versionBump(this.config.release.bumpp);
50- const releaseItConfig : ReleaseItConfig = {
51- "only-version" : true ,
52- } ;
53- releaseIt ( _ . defaultsDeep ( releaseItConfig , this . config . release . releaseIt ) ) ;
50+ versionBump ( this . config . release . bumpp ) ;
51+ // const releaseItConfig: ReleaseItConfig = {
52+ // "only-version": true,
53+ // };
54+ // releaseIt(_.defaultsDeep(releaseItConfig, this.config.release.releaseIt));
5455 }
5556
5657 /**
5758 * Create new release and upload XPI to asset
5859 */
59- uploadXPI ( ) {
60- const releaseItConfig : ReleaseItConfig = {
61- increment : false ,
62- git : {
63- commit : false ,
64- tag : false ,
65- push : false ,
66- } ,
67- github : {
68- release : true ,
69- } ,
70- verbose : 2 ,
71- ci : true ,
72- } ;
73-
74- releaseIt ( _ . defaultsDeep ( releaseItConfig , this . config . release . releaseIt ) ) ;
60+ async uploadXPI ( ) {
61+ // const releaseItConfig: ReleaseItConfig = {
62+ // increment: false,
63+ // git: { commit: false, tag: false, push: false },
64+ // github: {
65+ // release: true,
66+ // },
67+ // verbose: 2,
68+ // ci: true,
69+ // };
70+
71+ // releaseIt(_.defaultsDeep(releaseItConfig, this.config.release.releaseIt));
72+
73+ const release = await this . creatRelease ( {
74+ owner : this . owner ,
75+ repo : this . repo ,
76+ tag_name : `v${ this . version } ` ,
77+ name : `Release v${ this . version } ` ,
78+ bofy : await this . getChangelog ( ) ,
79+ prerelease : this . version . includes ( "-" ) ,
80+ make_latest : "true" ,
81+ } ) ;
82+
83+ if ( ! release ) throw new Error ( "Creat release failed!" ) ;
84+
85+ this . uploadAsset (
86+ release . id ,
87+ path . join ( this . config . dist , `${ this . xpiName } .xpi` ) ,
88+ ) ;
7589 }
7690
7791 async getReleaseByTag ( tag : string ) {
@@ -167,6 +181,22 @@ export default class Release extends Base {
167181 }
168182 }
169183
184+ getChangelog ( ) {
185+ return new Promise ( ( resolve , reject ) => {
186+ let changelog = "" ;
187+ conventionalChangelog ( { releaseCount : 2 } , { version : this . version } )
188+ . on ( "data" , ( chunk ) => {
189+ changelog += chunk . toString ( ) ;
190+ } )
191+ . on ( "end" , ( ) => {
192+ resolve ( changelog ) ;
193+ } )
194+ . on ( "error" , ( err ) => {
195+ reject ( err ) ;
196+ } ) ;
197+ } ) ;
198+ }
199+
170200 getClient ( ) : Octokit {
171201 if ( ! process . env . GITHUB_TOKEN ) throw new Error ( "No GITHUB_TOKEN." ) ;
172202 const client = new Octokit ( {
0 commit comments