77 Commits

Author SHA1 Message Date
simonecorsi
1343e95f52 chore(release): 2.1.0 [skip ci]
# [2.1.0](https://github.com/simonecorsi/mawesome/compare/v2.0.0...v2.1.0) (2022-05-11)

### Bug Fixes

* removes console.log ([7841262](7841262e74))

### Features

* removes github-token need ([0dc2a51](0dc2a51ddf))
2022-05-11 14:25:46 +00:00
GitHub Actions
0dc2a51ddf feat: removes github-token need 2022-05-11 16:22:50 +02:00
GitHub Actions
90a2e06350 chore: updates readme 2022-05-11 16:20:39 +02:00
GitHub Actions
7841262e74 fix: removes console.log 2022-05-11 16:10:51 +02:00
Simone Corsi
c9ff7972ed chore(readme): update 2022-05-11 16:08:14 +02:00
simonecorsi
f444d98079 chore(release): 2.0.0 [skip ci]
# [2.0.0](https://github.com/simonecorsi/mawesome/compare/v1.0.45...v2.0.0) (2022-05-11)

### Bug Fixes

* fixes default template path ([6cd9c30](6cd9c30b20))
* fixes tsc build ([ec10b79](ec10b79a91))
* normalize template file loadup ([445f562](445f562fb5))
* pre-tags ([d1d4edd](d1d4edd104))
* removes unused tests ([a141d23](a141d23972))
* reworking files ([19c4c8f](19c4c8f761))
* updates gh-star-fetch ([3ec4b7c](3ec4b7cd53))

### Features

* release major ([51a4359](51a4359d98))
* update to node16 ([e1f37af](e1f37af978))
* updates deps ([7ade95d](7ade95df85))
* using gh-star-fetch ([346ba5d](346ba5d4b7))
* **template:** adds templates ([2c742b8](2c742b8205)), closes [#14](https://github.com/simonecorsi/mawesome/issues/14)

### BREAKING CHANGES

* refactored code
2022-05-11 14:05:00 +00:00
GitHub Actions
754bdf3f68 ci: persist credentials 2022-05-11 15:33:56 +02:00
GitHub Actions
51a4359d98 feat: release major
BREAKING CHANGE: refactored code
2022-05-11 15:22:44 +02:00
GitHub Actions
3b3f3777f6 build: builded dev 2022-05-11 15:12:35 +02:00
GitHub Actions
236068f866 ci: pat 2022-05-11 15:11:37 +02:00
GitHub Actions
3ec4b7cd53 fix: updates gh-star-fetch 2022-05-11 15:08:24 +02:00
GitHub Actions
3170a35260 ci: debug 2022-05-11 13:31:00 +02:00
GitHub Actions
6cd9c30b20 fix: fixes default template path 2022-05-11 13:23:25 +02:00
GitHub Actions
e1f37af978 feat: update to node16 2022-05-11 13:20:05 +02:00
GitHub Actions
19c4c8f761 fix: reworking files 2022-05-11 13:09:38 +02:00
GitHub Actions
a141d23972 fix: removes unused tests 2022-05-11 13:02:42 +02:00
GitHub Actions
7ade95df85 feat: updates deps 2022-05-11 12:45:36 +02:00
Simone Corsi
445f562fb5 fix: normalize template file loadup 2022-05-11 10:00:38 +02:00
Simone Corsi
ec10b79a91 fix: fixes tsc build 2022-05-11 09:49:34 +02:00
Simone Corsi
55cd9e9c58 build: fixes release build
Switch to semantic release didnt commit compiled output
2022-05-11 09:44:55 +02:00
simonecorsi
f70a021b83 chore(release): 1.1.0-next.2 [skip ci]
# [1.1.0-next.2](https://github.com/simonecorsi/mawesome/compare/v1.1.0-next.1...v1.1.0-next.2) (2022-05-09)

### Features

* using gh-star-fetch ([a8b6577](a8b657735b))
2022-05-11 09:44:55 +02:00
Simone Corsi
b24f13b9e9 test: fixed old suites 2022-05-11 09:44:55 +02:00
Simone Corsi
f88cf3357e ci: console 2022-05-11 09:44:55 +02:00
Simone Corsi
ce053290e3 ci: moves templates check 2022-05-11 09:44:55 +02:00
Simone Corsi
57651eab5a ci: adds logs 2022-05-11 09:44:54 +02:00
Simone Corsi
346ba5d4b7 feat: using gh-star-fetch 2022-05-11 09:44:52 +02:00
simonecorsi
459ca45678 chore(release): 1.1.0-next.1 [skip ci]
# [1.1.0-next.1](https://github.com/simonecorsi/mawesome/compare/v1.0.45...v1.1.0-next.1) (2022-04-13)

### Bug Fixes

* pre-tags ([602befc](602befcb54))

### Features

* **template:** adds templates ([791de9a](791de9ab50)), closes [#14](https://github.com/simonecorsi/mawesome/issues/14)
2022-05-11 09:30:28 +02:00
Simone Corsi
d1d4edd104 fix: pre-tags 2022-05-11 09:30:27 +02:00
Simone Corsi
2c742b8205 feat(template): adds templates
if an `TEMPLATE.ejs` file is found in the repo it will be used for rendering

closes #14
2022-05-11 09:30:27 +02:00
Simone Corsi
9d140076f7 Merge pull request #61 from simonecorsi/dependabot/npm_and_yarn/husky-8.0.1
build(deps-dev): bump husky from 8.0.0 to 8.0.1
2022-05-10 15:50:08 +02:00
Simone Corsi
8ee913b561 Merge pull request #60 from simonecorsi/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.23.0
build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.33.0 to 5.23.0
2022-05-10 15:50:00 +02:00
Simone Corsi
78225b6f7e Merge pull request #28 from simonecorsi/dependabot/npm_and_yarn/remark-14.0.2
build(deps): bump remark from 13.0.0 to 14.0.2
2022-05-10 15:49:51 +02:00
Simone Corsi
3ba4012b02 Merge pull request #52 from simonecorsi/dependabot/npm_and_yarn/ts-node-dev-1.1.8
build(deps-dev): bump ts-node-dev from 1.1.1 to 1.1.8
2022-05-10 15:49:36 +02:00
dependabot[bot]
12f2bef8e5 build(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.33.0 to 5.23.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.23.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:47:54 +00:00
dependabot[bot]
b305b5276d build(deps-dev): bump ts-node-dev from 1.1.1 to 1.1.8
Bumps [ts-node-dev](https://github.com/whitecolor/ts-node-dev) from 1.1.1 to 1.1.8.
- [Release notes](https://github.com/whitecolor/ts-node-dev/releases)
- [Changelog](https://github.com/wclr/ts-node-dev/blob/master/CHANGELOG.md)
- [Commits](https://github.com/whitecolor/ts-node-dev/compare/v1.1.1...v1.1.8)

---
updated-dependencies:
- dependency-name: ts-node-dev
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:47:41 +00:00
dependabot[bot]
0ab33ae6e8 build(deps-dev): bump husky from 8.0.0 to 8.0.1
Bumps [husky](https://github.com/typicode/husky) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v8.0.0...v8.0.1)

---
updated-dependencies:
- dependency-name: husky
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:47:36 +00:00
dependabot[bot]
3e66cb8b35 build(deps): bump remark from 13.0.0 to 14.0.2
Bumps [remark](https://github.com/remarkjs/remark) from 13.0.0 to 14.0.2.
- [Release notes](https://github.com/remarkjs/remark/releases)
- [Changelog](https://github.com/remarkjs/remark/blob/main/changelog.md)
- [Commits](https://github.com/remarkjs/remark/compare/13.0.0...14.0.2)

---
updated-dependencies:
- dependency-name: remark
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:47:26 +00:00
Simone Corsi
a6f431ff5c Merge pull request #32 from simonecorsi/dependabot/npm_and_yarn/remark-toc-8.0.1
build(deps): bump remark-toc from 7.0.0 to 8.0.1
2022-05-10 15:46:59 +02:00
Simone Corsi
3e35a8e8e3 Merge pull request #48 from simonecorsi/dependabot/npm_and_yarn/ava-4.2.0
build(deps-dev): bump ava from 3.15.0 to 4.2.0
2022-05-10 15:46:46 +02:00
Simone Corsi
db410801f9 Merge pull request #51 from simonecorsi/dependabot/npm_and_yarn/sinon-14.0.0
build(deps-dev): bump sinon from 9.2.3 to 14.0.0
2022-05-10 15:46:38 +02:00
Simone Corsi
fcffe08be6 Merge pull request #53 from simonecorsi/dependabot/npm_and_yarn/typescript-4.6.4
build(deps-dev): bump typescript from 4.6.3 to 4.6.4
2022-05-10 15:46:21 +02:00
Simone Corsi
6f7de5aaff Merge pull request #54 from simonecorsi/dependabot/npm_and_yarn/commitlint/config-conventional-16.2.4
build(deps-dev): bump @commitlint/config-conventional from 16.2.1 to 16.2.4
2022-05-10 15:46:14 +02:00
Simone Corsi
a448ddef8a Merge pull request #55 from simonecorsi/dependabot/npm_and_yarn/eslint-config-prettier-8.5.0
build(deps-dev): bump eslint-config-prettier from 7.1.0 to 8.5.0
2022-05-10 15:46:04 +02:00
dependabot[bot]
b6dc6a44ec build(deps-dev): bump @commitlint/config-conventional
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) from 16.2.1 to 16.2.4.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v16.2.4/@commitlint/config-conventional)

---
updated-dependencies:
- dependency-name: "@commitlint/config-conventional"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:37:49 +00:00
dependabot[bot]
2f4a6f83a7 build(deps): bump remark-toc from 7.0.0 to 8.0.1
Bumps [remark-toc](https://github.com/remarkjs/remark-toc) from 7.0.0 to 8.0.1.
- [Release notes](https://github.com/remarkjs/remark-toc/releases)
- [Commits](https://github.com/remarkjs/remark-toc/compare/7.0.0...8.0.1)

---
updated-dependencies:
- dependency-name: remark-toc
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:37:43 +00:00
dependabot[bot]
34f5d7369b build(deps-dev): bump ava from 3.15.0 to 4.2.0
Bumps [ava](https://github.com/avajs/ava) from 3.15.0 to 4.2.0.
- [Release notes](https://github.com/avajs/ava/releases)
- [Commits](https://github.com/avajs/ava/compare/v3.15.0...v4.2.0)

---
updated-dependencies:
- dependency-name: ava
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 13:37:16 +00:00
Simone Corsi
1a46ff531e Merge pull request #58 from simonecorsi/dependabot/npm_and_yarn/commitlint/cli-16.2.4
build(deps-dev): bump @commitlint/cli from 16.2.3 to 16.2.4
2022-05-10 15:35:28 +02:00
dependabot[bot]
3ef135614f build(deps-dev): bump eslint-config-prettier from 7.1.0 to 8.5.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 7.1.0 to 8.5.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v7.1.0...v8.5.0)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 07:10:40 +00:00
dependabot[bot]
586e741afc build(deps-dev): bump sinon from 9.2.3 to 14.0.0
Bumps [sinon](https://github.com/sinonjs/sinon) from 9.2.3 to 14.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v9.2.3...v14.0.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 07:10:39 +00:00
dependabot[bot]
3888e0bcd6 build(deps-dev): bump typescript from 4.6.3 to 4.6.4
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.6.3 to 4.6.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.6.3...v4.6.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 07:10:38 +00:00
Simone Corsi
2e122981f5 Merge pull request #56 from simonecorsi/dependabot/npm_and_yarn/vercel/ncc-0.33.4
build(deps-dev): bump @vercel/ncc from 0.33.3 to 0.33.4
2022-05-09 09:09:46 +02:00
dependabot[bot]
1f2f524430 build(deps-dev): bump @vercel/ncc from 0.33.3 to 0.33.4
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.33.3 to 0.33.4.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.33.3...0.33.4)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 07:08:48 +00:00
dependabot[bot]
b7388a0b80 build(deps-dev): bump @commitlint/cli from 16.2.3 to 16.2.4
Bumps [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) from 16.2.3 to 16.2.4.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v16.2.4/@commitlint/cli)

---
updated-dependencies:
- dependency-name: "@commitlint/cli"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 07:08:32 +00:00
Simone Corsi
4cf5a6b2ec Merge pull request #57 from simonecorsi/dependabot/npm_and_yarn/eslint-8.15.0
build(deps-dev): bump eslint from 8.14.0 to 8.15.0
2022-05-09 09:07:50 +02:00
dependabot[bot]
c39e5e788b build(deps-dev): bump eslint from 8.14.0 to 8.15.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.14.0 to 8.15.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.14.0...v8.15.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 07:01:34 +00:00
Simone Corsi
4567c63113 Merge pull request #50 from simonecorsi/dependabot/npm_and_yarn/husky-8.0.0
build(deps-dev): bump husky from 7.0.4 to 8.0.0
2022-05-09 09:00:53 +02:00
dependabot[bot]
5d5127ad06 build(deps-dev): bump husky from 7.0.4 to 8.0.0
Bumps [husky](https://github.com/typicode/husky) from 7.0.4 to 8.0.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v7.0.4...v8.0.0)

---
updated-dependencies:
- dependency-name: husky
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 05:16:07 +00:00
Simone Corsi
70c8d54fb9 Merge pull request #27 from simonecorsi/dependabot/npm_and_yarn/types/sinon-10.0.11
build(deps-dev): bump @types/sinon from 9.0.10 to 10.0.11
2022-05-06 11:20:35 +02:00
Simone Corsi
2459ad324b Merge pull request #29 from simonecorsi/dependabot/npm_and_yarn/eslint-plugin-prettier-4.0.0
build(deps-dev): bump eslint-plugin-prettier from 3.3.1 to 4.0.0
2022-05-06 11:20:24 +02:00
dependabot[bot]
aa17d94db3 build(deps-dev): bump eslint-plugin-prettier from 3.3.1 to 4.0.0
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.3.1 to 4.0.0.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.3.1...v4.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:20:18 +00:00
Simone Corsi
fe4ad219ed Merge pull request #31 from simonecorsi/dependabot/npm_and_yarn/typescript-eslint/parser-4.33.0
build(deps-dev): bump @typescript-eslint/parser from 4.12.0 to 4.33.0
2022-05-06 11:20:14 +02:00
Simone Corsi
c0e3e60f4f Merge pull request #33 from simonecorsi/dependabot/npm_and_yarn/prettier-2.6.2
build(deps-dev): bump prettier from 2.2.1 to 2.6.2
2022-05-06 11:19:59 +02:00
Simone Corsi
4b365c4b69 Merge pull request #34 from simonecorsi/dependabot/npm_and_yarn/types/ejs-3.1.0
build(deps-dev): bump @types/ejs from 3.0.5 to 3.1.0
2022-05-06 11:19:50 +02:00
Simone Corsi
00de1fc0c3 Merge pull request #40 from simonecorsi/dependabot/npm_and_yarn/eslint-8.14.0
build(deps-dev): bump eslint from 7.17.0 to 8.14.0
2022-05-06 11:19:41 +02:00
Simone Corsi
cec7c043b3 Merge pull request #49 from simonecorsi/dependabot/npm_and_yarn/lint-staged-12.4.1
build(deps-dev): bump lint-staged from 12.3.7 to 12.4.1
2022-05-06 11:19:22 +02:00
dependabot[bot]
83853a2d61 build(deps-dev): bump eslint from 7.17.0 to 8.14.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.17.0 to 8.14.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.17.0...v8.14.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:16:30 +00:00
dependabot[bot]
24c8b9889e build(deps-dev): bump @typescript-eslint/parser from 4.12.0 to 4.33.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.12.0 to 4.33.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.33.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:16:26 +00:00
dependabot[bot]
20b279668f build(deps-dev): bump @types/ejs from 3.0.5 to 3.1.0
Bumps [@types/ejs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ejs) from 3.0.5 to 3.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ejs)

---
updated-dependencies:
- dependency-name: "@types/ejs"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:16:05 +00:00
dependabot[bot]
fe70a95e4d build(deps-dev): bump @types/sinon from 9.0.10 to 10.0.11
Bumps [@types/sinon](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sinon) from 9.0.10 to 10.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sinon)

---
updated-dependencies:
- dependency-name: "@types/sinon"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:15:53 +00:00
dependabot[bot]
f855c17ccb build(deps-dev): bump lint-staged from 12.3.7 to 12.4.1
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 12.3.7 to 12.4.1.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v12.3.7...v12.4.1)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:15:33 +00:00
Simone Corsi
16a641ace0 Merge pull request #47 from simonecorsi/dependabot/npm_and_yarn/ejs-3.1.7
build(deps): bump ejs from 3.1.6 to 3.1.7
2022-05-06 11:15:25 +02:00
Simone Corsi
b50b8ce93a Merge pull request #45 from simonecorsi/dependabot/npm_and_yarn/types/node-17.0.31
build(deps-dev): bump @types/node from 14.14.20 to 17.0.31
2022-05-06 11:15:10 +02:00
dependabot[bot]
0b0b70d114 build(deps): bump ejs from 3.1.6 to 3.1.7
Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.7)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 09:14:35 +00:00
Simone Corsi
c0d2fb6135 Merge pull request #46 from simonecorsi/dependabot/npm_and_yarn/actions/core-1.8.0
build(deps): bump @actions/core from 1.2.6 to 1.8.0
2022-05-06 11:14:07 +02:00
dependabot[bot]
12db35c2c1 build(deps): bump @actions/core from 1.2.6 to 1.8.0
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.6 to 1.8.0.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 05:11:04 +00:00
dependabot[bot]
07ef9724cb build(deps-dev): bump @types/node from 14.14.20 to 17.0.31
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.20 to 17.0.31.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 05:16:33 +00:00
dependabot[bot]
d2477f5a96 build(deps-dev): bump prettier from 2.2.1 to 2.6.2
Bumps [prettier](https://github.com/prettier/prettier) from 2.2.1 to 2.6.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.2.1...2.6.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-12 10:05:20 +00:00
19 changed files with 20353 additions and 16619 deletions

View File

@@ -1,21 +0,0 @@
{
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"env": {
"es6": true,
"node": true
},
"extends": [
"prettier/@typescript-eslint",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"rules": {
"@typescript-eslint/no-var-requires": "off",
"prefer-rest-params": "off",
"@typescript-eslint/no-non-null-assertion": "off"
}
}

17
.eslintrc.js Normal file
View File

@@ -0,0 +1,17 @@
module.exports = {
root: true,
parserOptions: {
ecmaVersion: 2022,
sourceType: 'module',
},
env: {
node: true,
},
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
'eslint:recommended',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended',
],
};

View File

@@ -1,21 +0,0 @@
name: Run tests
on: [pull_request]
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest]
node-version: [16.x]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm it

View File

@@ -3,26 +3,7 @@ name: Release
on: [workflow_dispatch] on: [workflow_dispatch]
jobs: jobs:
test:
strategy:
matrix:
os: [ubuntu-latest]
node-version: [16.x]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm it
release: release:
needs: [test]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/setup-node@v3 - uses: actions/setup-node@v3
@@ -30,7 +11,8 @@ jobs:
node-version: 16 node-version: 16
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GH_TOKEN }}
persist-credentials: false
- name: Install dependencies - name: Install dependencies
run: npm i run: npm i
@@ -41,6 +23,6 @@ jobs:
- name: Semantic release - name: Semantic release
uses: codfish/semantic-release-action@v1 uses: codfish/semantic-release-action@v1
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
GIT_AUTHOR_NAME: '${{ github.actor }}' GIT_AUTHOR_NAME: '${{ github.actor }}'
GIT_COMMITTER_NAME: '${{ github.actor }}' GIT_COMMITTER_NAME: '${{ github.actor }}'

View File

@@ -10,7 +10,12 @@
[ [
"@semantic-release/git", "@semantic-release/git",
{ {
"assets": ["CHANGELOG.md", "package.json", "package-lock.json"] "assets": [
"index.js",
"CHANGELOG.md",
"package.json",
"package-lock.json"
]
} }
], ],
"@semantic-release/github", "@semantic-release/github",

View File

@@ -1,35 +1,82 @@
# [2.1.0](https://github.com/simonecorsi/mawesome/compare/v2.0.0...v2.1.0) (2022-05-11)
### Bug Fixes
* removes console.log ([7841262](https://github.com/simonecorsi/mawesome/commit/7841262e741f05debb7ffe6fed636a508a8f7c12))
### Features
* removes github-token need ([0dc2a51](https://github.com/simonecorsi/mawesome/commit/0dc2a51ddf3cf93414afd674ed3c34ec681f3e4b))
# [2.0.0](https://github.com/simonecorsi/mawesome/compare/v1.0.45...v2.0.0) (2022-05-11)
### Bug Fixes
* fixes default template path ([6cd9c30](https://github.com/simonecorsi/mawesome/commit/6cd9c30b20acb0789668b9fd4cdbace2cb52d3ce))
* fixes tsc build ([ec10b79](https://github.com/simonecorsi/mawesome/commit/ec10b79a91bc5894d35b80026d3e216420e0721a))
* normalize template file loadup ([445f562](https://github.com/simonecorsi/mawesome/commit/445f562fb50567d995f0d080d4267fc8d494731b))
* pre-tags ([d1d4edd](https://github.com/simonecorsi/mawesome/commit/d1d4edd104affc69984905c8408e859c25c58443))
* removes unused tests ([a141d23](https://github.com/simonecorsi/mawesome/commit/a141d23972c31b3dbd7e9841168219ad42fa7a18))
* reworking files ([19c4c8f](https://github.com/simonecorsi/mawesome/commit/19c4c8f761b244ddccbc445cc34078bf932559d2))
* updates gh-star-fetch ([3ec4b7c](https://github.com/simonecorsi/mawesome/commit/3ec4b7cd53c1fe885a51fb64279047a201d535dc))
### Features
* release major ([51a4359](https://github.com/simonecorsi/mawesome/commit/51a4359d983be4c842410f0c62104fca1b28252f))
* update to node16 ([e1f37af](https://github.com/simonecorsi/mawesome/commit/e1f37af978ebcb7f770949476ac7d6bc788a1fc2))
* updates deps ([7ade95d](https://github.com/simonecorsi/mawesome/commit/7ade95df8566a59145652165400cddfd1afa4bed))
* using gh-star-fetch ([346ba5d](https://github.com/simonecorsi/mawesome/commit/346ba5d4b7ba6a71bab99f2dbe3c2d010beb67d5))
* **template:** adds templates ([2c742b8](https://github.com/simonecorsi/mawesome/commit/2c742b820558fd715de987178303c460f5871c29)), closes [#14](https://github.com/simonecorsi/mawesome/issues/14)
### BREAKING CHANGES
* refactored code
# [1.1.0-next.2](https://github.com/simonecorsi/mawesome/compare/v1.1.0-next.1...v1.1.0-next.2) (2022-05-09)
### Features
* using gh-star-fetch ([a8b6577](https://github.com/simonecorsi/mawesome/commit/a8b657735b9879636cc039d79fddcdca33ccf38e))
# [1.1.0-next.1](https://github.com/simonecorsi/mawesome/compare/v1.0.45...v1.1.0-next.1) (2022-04-13)
### Bug Fixes
* pre-tags ([602befc](https://github.com/simonecorsi/mawesome/commit/602befcb5494b5bfd74d2333899311b81ea9da6d))
### Features
* **template:** adds templates ([791de9a](https://github.com/simonecorsi/mawesome/commit/791de9ab504de50e2e9cb031b9e373d7cc0589c0)), closes [#14](https://github.com/simonecorsi/mawesome/issues/14)
## <small>1.0.45 (2022-01-17)</small> ## <small>1.0.45 (2022-01-17)</small>
* build(deps): bump shelljs from 0.8.4 to 0.8.5 ([1da350a](https://github.com/simonecorsi/mawesome/commit/1da350a)) - build(deps): bump shelljs from 0.8.4 to 0.8.5 ([1da350a](https://github.com/simonecorsi/mawesome/commit/1da350a))
## <small>1.0.44 (2021-10-26)</small> ## <small>1.0.44 (2021-10-26)</small>
* chore(release): v1.0.44 ([6ffe17f](https://github.com/simonecorsi/mawesome/commit/6ffe17f)) - chore(release): v1.0.44 ([6ffe17f](https://github.com/simonecorsi/mawesome/commit/6ffe17f))
* feat: git add multiple files at once ([4aef61f](https://github.com/simonecorsi/mawesome/commit/4aef61f)) - feat: git add multiple files at once ([4aef61f](https://github.com/simonecorsi/mawesome/commit/4aef61f))
## <small>1.0.43 (2021-10-15)</small> ## <small>1.0.43 (2021-10-15)</small>
* chore(release): v1.0.43 ([5e0ef82](https://github.com/simonecorsi/mawesome/commit/5e0ef82)) - chore(release): v1.0.43 ([5e0ef82](https://github.com/simonecorsi/mawesome/commit/5e0ef82))
* feat: reduce json output size ([94635fe](https://github.com/simonecorsi/mawesome/commit/94635fe)) - feat: reduce json output size ([94635fe](https://github.com/simonecorsi/mawesome/commit/94635fe))
## <small>1.0.42 (2021-10-14)</small> ## <small>1.0.42 (2021-10-14)</small>
* chore(release): v1.0.42 ([5b36813](https://github.com/simonecorsi/mawesome/commit/5b36813)) - chore(release): v1.0.42 ([5b36813](https://github.com/simonecorsi/mawesome/commit/5b36813))
* fix(paginator): last page now correctly matches rex ([dcf9898](https://github.com/simonecorsi/mawesome/commit/dcf9898)) - fix(paginator): last page now correctly matches rex ([dcf9898](https://github.com/simonecorsi/mawesome/commit/dcf9898))
## <small>1.0.41 (2021-10-14)</small> ## <small>1.0.41 (2021-10-14)</small>
* chore(release): v1.0.41 ([884fc90](https://github.com/simonecorsi/mawesome/commit/884fc90)) - chore(release): v1.0.41 ([884fc90](https://github.com/simonecorsi/mawesome/commit/884fc90))
* test: fixs suite ([b97833f](https://github.com/simonecorsi/mawesome/commit/b97833f)) - test: fixs suite ([b97833f](https://github.com/simonecorsi/mawesome/commit/b97833f))
* fix: should avoid index lock ([1d6848c](https://github.com/simonecorsi/mawesome/commit/1d6848c)) - fix: should avoid index lock ([1d6848c](https://github.com/simonecorsi/mawesome/commit/1d6848c))

View File

@@ -8,11 +8,11 @@ You can see an example of the output at my own [simonecorsi/awesome](https://git
<!-- toc --> <!-- toc -->
- [Table of Contents](#table-of-contents)
- [Documentation](#documentation) - [Documentation](#documentation)
- [Requirements](#requirements) - [Requirements](#requirements)
- [Configuration](#configuration) - [Configuration](#configuration)
- [`api-token`](#api-token) - [`api-token`](#api-token)
- [`template-path`](#template-path)
- [Example workflow](#example-workflow) - [Example workflow](#example-workflow)
<!-- tocstop --> <!-- tocstop -->
@@ -21,32 +21,39 @@ You can see an example of the output at my own [simonecorsi/awesome](https://git
### Requirements ### Requirements
- An empty repository - An empty repository
- A personal github api key - A personal github api key
### Configuration ### Configuration
The service can be configured setting the appropriate environment variables or writing an `.env` file. The service can be configured setting the appropriate environment variables or writing an `.env` file.
| Variable | Description | Default | | Variable | Description | Default |
| -------------- | ------------------------------------------- | -------------------------------- | | ----------------- | ------------------------------------------------------------------- | -------------------------------- |
| `api-token` | Personal github api token. | `${{ secrets.API_TOKEN }}` | | `api-token` | Personal Token is used to avoid rate limit, [read more](#api-token) | `${{ secrets.API_TOKEN }}` |
| `github-token` | Action Token | `${{ secrets.GITHUB_TOKEN }}` | | `github-name` | Name used for the commit | Github Action |
| `github-name` | Name used for the commit, default to action | Github Action | | `github-email` | email used for commit | actions@users.noreply.github.com |
| `github-email` | email used for commit, default to action | actions@users.noreply.github.com | | `template-path` | Custom `README.md` template, [read more](#template-path) |
| `output-filename` | Output filename | `README.md` |
#### `api-token` #### `api-token`
The Personal API Access Token is mandatory to fetch stars from the API without incurring in Rate Limits. The Personal API Access Token is mandatory to fetch stars from the API without incurring in Rate Limits.
You'll have to generate a [personal api token](https://github.com/settings/tokens/new) and then add You'll have to generate a [personal api token](https://github.com/settings/tokens/new) and then add
#### `template-path`
If you don't like the output (default example [here](./TEMPLATE.ejs) ), you can provide your custom template that will be rendered using [EJS](https://ejs.co/) template engine.
Path provided is relative to your current repository directory, if file is not found it will default.
## Example workflow ## Example workflow
```yml ```yml
name: Update awesome list name: Update awesome list
on: on:
workflow_dispatch: workflow_dispatch:
schedule: schedule:
- cron: '0 0 * * *' - cron: '0 0 * * *'
@@ -63,5 +70,4 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
github-email: ${{ secrets.USER_EMAIL }} github-email: ${{ secrets.USER_EMAIL }}
github-name: ${{ github.repository_owner }} github-name: ${{ github.repository_owner }}
``` ```

View File

@@ -1,4 +1,4 @@
export default `# <%= username %> Awesome List [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) # <%= username %> Awesome List [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
> :star: generated with [simonecorsi/mawesome](https://github.com/simonecorsi/mawesome) > :star: generated with [simonecorsi/mawesome](https://github.com/simonecorsi/mawesome)
@@ -11,4 +11,3 @@ export default `# <%= username %> Awesome List [![Awesome](https://cdn.rawgit.co
<% } %> <% } %>
<% } %> <% } %>
`;

View File

@@ -4,16 +4,25 @@ branding:
icon: align-justify icon: align-justify
color: yellow color: yellow
inputs: inputs:
github-token:
description: 'Github token'
required: true
api-token: api-token:
description: 'Personal API Token' description: 'Personal API Token'
required: true required: true
github-name: github-name:
description: 'Name shown in the commit' description: 'Name shown in the commit'
default: 'GitHub Actions'
required: false
github-email: github-email:
description: 'Email shown in the commit' description: 'Email shown in the commit'
default: 'actions@users.noreply.github.com'
required: false
template-path:
required: false
description: 'EJS template path relative to project root directory'
default: 'TEMPLATE.ejs'
output-filename:
description: 'The output file name, default to README.md'
required: false
default: 'README.md'
runs: runs:
using: 'node12' using: 'node16'
main: 'index.js' main: 'index.js'

View File

@@ -1,7 +0,0 @@
/* eslint-disable node/no-unsupported-features/es-syntax */
export default {
files: ['!templates/**/*'],
extensions: ['ts'],
require: ['ts-node/register/transpile-only'],
};

29263
index.js

File diff suppressed because one or more lines are too long

6726
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,15 @@
{ {
"name": "mawesome", "name": "mawesome",
"version": "1.0.45", "version": "2.0.0-0",
"description": "Generate awesome list from user starred repositories", "description": "Generate awesome list from user starred repositories",
"main": "index.js", "main": "index.js",
"author": "Simone Corsi<simonecorsi.dev@gmail.com>", "author": "Simone Corsi<simonecorsi.dev@gmail.com>",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"test": "nyc --reporter=lcov --reporter=text-summary ava -s -v",
"test:watch": "ava -w",
"style:lint": "eslint src --ext .ts", "style:lint": "eslint src --ext .ts",
"style:prettier": "prettier \"src/**/*.ts\" --list-different --write", "style:prettier": "prettier \"src/**/*.ts\" --list-different --write",
"build": "./node_modules/.bin/ncc build src/index.ts -o ./", "build": "./node_modules/.bin/ncc build src/index.ts -o ./",
"dev": "ts-node-dev src/index.ts", "dev": "ts-node-dev src/index.ts",
"prerelease": "npm run build",
"prepare": "node prepare.js || echo 'Skipping prepare'" "prepare": "node prepare.js || echo 'Skipping prepare'"
}, },
"keywords": [ "keywords": [
@@ -25,8 +22,8 @@
"javascript" "javascript"
], ],
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^16.2.3", "@commitlint/cli": "^16.2.4",
"@commitlint/config-conventional": "^16.2.1", "@commitlint/config-conventional": "^16.2.4",
"@octokit/rest": "^18.12.0", "@octokit/rest": "^18.12.0",
"@octokit/types": "^6.2.1", "@octokit/types": "^6.2.1",
"@saithodev/semantic-release-backmerge": "^2.1.2", "@saithodev/semantic-release-backmerge": "^2.1.2",
@@ -35,34 +32,34 @@
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",
"@semantic-release/github": "^8.0.4", "@semantic-release/github": "^8.0.4",
"@semantic-release/release-notes-generator": "^10.0.3", "@semantic-release/release-notes-generator": "^10.0.3",
"@types/ejs": "^3.0.5", "@types/ejs": "^3.1.0",
"@types/got": "^9.6.12", "@types/got": "^9.6.12",
"@types/node": "^14.14.5", "@types/node": "^17.0.32",
"@types/sinon": "^9.0.10", "@types/sinon": "^10.0.11",
"@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/eslint-plugin": "^5.23.0",
"@typescript-eslint/parser": "^4.6.0", "@typescript-eslint/parser": "^5.23.0",
"@vercel/ncc": "^0.33.3", "@vercel/ncc": "^0.33.4",
"ava": "^3.8.2", "eslint": "^8.15.0",
"eslint": "^7.17.0", "eslint-config-prettier": "^8.5.0",
"eslint-config-prettier": "^7.1.0",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^3.3.1", "eslint-plugin-prettier": "^4.0.0",
"husky": "^7.0.4", "husky": "^8.0.1",
"lint-staged": "^12.3.7", "lint-staged": "^12.4.1",
"markdown-toc": "^1.2.0", "markdown-toc": "^1.2.0",
"nyc": "^15.0.1", "nyc": "^15.0.1",
"prettier": "^2.0.5", "prettier": "^2.6.2",
"sinon": "^9.2.3", "sinon": "^14.0.0",
"ts-node-dev": "^1.1.1", "ts-node-dev": "^1.1.8",
"typescript": "^4.1.3" "typescript": "^4.6.4"
}, },
"dependencies": { "dependencies": {
"@actions/core": "^1.2.6", "@actions/core": "^1.8.0",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"ejs": "^3.1.6", "ejs": "^3.1.7",
"gh-star-fetch": "^1.3.0",
"got": "^11.8.1", "got": "^11.8.1",
"remark": "^13.0.0", "remark": "^14.0.2",
"remark-toc": "^7.0.0" "remark-toc": "^8.0.1"
}, },
"volta": { "volta": {
"node": "16.14.2", "node": "16.14.2",

View File

@@ -1,11 +0,0 @@
import got from 'got';
import * as core from '@actions/core';
const GITHUB_TOKEN = core.getInput('api-token', { required: true });
export default got.extend({
headers: {
Authorization: `token ${GITHUB_TOKEN}`,
},
responseType: 'json',
});

View File

@@ -2,13 +2,20 @@
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as exec from '@actions/exec'; import * as exec from '@actions/exec';
import fs from 'fs/promises';
const { GITHUB_REPOSITORY, GITHUB_REF } = process.env; const { GITHUB_REPOSITORY, GITHUB_REF } = process.env;
const branch = GITHUB_REF?.replace('refs/heads/', ''); const branch = GITHUB_REF?.replace('refs/heads/', '');
type File = {
filename: string;
data: string;
};
class Git { class Git {
constructor() { constructor() {
const githubToken = core.getInput('github-token', { required: true }); const githubToken = core.getInput('api-token', { required: true });
core.setSecret(githubToken); core.setSecret(githubToken);
const githubName = core.getInput('github-name') || 'GitHub Actions'; const githubName = core.getInput('github-name') || 'GitHub Actions';
@@ -34,28 +41,26 @@ class Git {
return isShallow.trim().replace('\n', '') === 'true'; return isShallow.trim().replace('\n', '') === 'true';
}; };
exec = (command: string): Promise<string> => { async exec(command: string): Promise<string> {
return new Promise(async (resolve, reject) => { let execOutput = '';
let execOutput = '';
const options = { const options = {
listeners: { listeners: {
stdout: (data: Buffer) => { stdout: (data: Buffer) => {
execOutput += data.toString(); execOutput += data.toString();
},
}, },
}; },
};
const exitCode = await exec.exec(`git ${command}`, undefined, options); const exitCode = await exec.exec(`git ${command}`, undefined, options);
if (exitCode === 0) { if (exitCode === 0) {
return resolve(execOutput); return execOutput;
} else { } else {
core.error(`Command "git ${command}" exited with code ${exitCode}.`); core.error(`Command "git ${command}" exited with code ${exitCode}.`);
return reject(`Command "git ${command}" exited with code ${exitCode}.`); throw new Error(`Command "git ${command}" exited with code ${exitCode}.`);
} }
}); }
};
config = (prop: string, value: string) => config = (prop: string, value: string) =>
this.exec(`config ${prop} "${value}"`); this.exec(`config ${prop} "${value}"`);
@@ -91,6 +96,20 @@ class Git {
updateOrigin = (repo: string) => this.exec(`remote set-url origin ${repo}`); updateOrigin = (repo: string) => this.exec(`remote set-url origin ${repo}`);
createTag = (tag: string) => this.exec(`tag -a ${tag} -m "${tag}"`); createTag = (tag: string) => this.exec(`tag -a ${tag} -m "${tag}"`);
async pushNewFiles(files: File[] = []): Promise<any> {
if (!files.length) return;
await this.pull();
await Promise.all(
files.map(({ filename, data }) => fs.writeFile(filename, data))
);
await this.add(files.map(({ filename }) => filename));
await this.commit(`chore(updates): updated entries in files`);
await this.push();
}
} }
export default new Git(); export default new Git();

View File

@@ -1,28 +1,14 @@
import fs from 'fs';
import ejs from 'ejs'; import ejs from 'ejs';
import * as core from '@actions/core'; import * as core from '@actions/core';
import remark from 'remark'; import { remark } from 'remark';
import toc from 'remark-toc'; import toc from 'remark-toc';
import MD_TEMPLATE from './template';
import GithubApi from './api';
import link from './link';
import git from './git';
import type { PaginationLink, ApiGetStarResponse, Stars, Star } from './types';
export const REPO_USERNAME = process.env.GITHUB_REPOSITORY?.split('/')[0]; export const REPO_USERNAME = process.env.GITHUB_REPOSITORY?.split('/')[0];
export const API_STARRED_URL = `${process.env.GITHUB_API_URL}/users/${REPO_USERNAME}/starred`; export const API_STARRED_URL = `${process.env.GITHUB_API_URL}/users/${REPO_USERNAME}/starred`;
const fsp = fs.promises;
export function wait(time = 200): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, time));
}
export async function renderer( export async function renderer(
data: { [key: string]: any }, data: { [key: string]: any },
templateString = MD_TEMPLATE templateString: string
): Promise<string> { ): Promise<string> {
try { try {
return ejs.render(templateString, data); return ejs.render(templateString, data);
@@ -32,74 +18,6 @@ export async function renderer(
} }
} }
export function getNextPage(links: PaginationLink[]): string | null {
const next = links.find((l) => l.rel === 'next');
const last = links.find((l) => l.rel === 'last');
if (!next || !last) return null;
const matchNext = next.uri.match(/page=([0-9]*)/);
const matchLast = last.uri.match(/page=([0-9]*)/);
if (!matchNext || !matchLast) return null;
if (matchNext[1] === matchLast[1]) return null;
return matchNext[1];
}
async function* paginateStars(url: string): AsyncGenerator<Stars> {
let nextPage: string | null = '1';
while (nextPage) {
try {
const { headers, body } = await GithubApi.get(url, {
searchParams: {
page: nextPage,
},
});
yield (body as unknown) as Stars;
nextPage = getNextPage(link.parse(headers.link).refs);
await wait(1000); // avoid limits
} catch (e) {
console.error(e);
break;
}
}
}
export async function apiGetStar(
url: string = API_STARRED_URL
): Promise<ApiGetStarResponse> {
const data: Partial<Star>[] = [];
for await (const stars of paginateStars(url)) {
for (const star of stars) {
data.push({
id: star.id,
node_id: star.node_id,
name: star.name,
full_name: star.full_name,
owner: {
login: star?.owner?.login,
id: star?.owner?.id,
avatar_url: star?.owner?.avatar_url,
url: star?.owner?.url,
html_url: star?.owner?.html_url,
},
html_url: star.html_url,
description: star.description,
url: star.url,
languages_url: star.languages_url,
created_at: star.created_at,
updated_at: star.updated_at,
git_url: star.git_url,
ssh_url: star.ssh_url,
clone_url: star.clone_url,
homepage: star.homepage,
stargazers_count: star.stargazers_count,
watchers_count: star.watchers_count,
language: star.language,
topics: star.topics,
} as Partial<Star>);
}
}
return (data as unknown) as Stars;
}
export function generateMd(data: string): Promise<string> { export function generateMd(data: string): Promise<string> {
return new Promise((resolve) => { return new Promise((resolve) => {
remark() remark()
@@ -115,24 +33,4 @@ export function generateMd(data: string): Promise<string> {
}); });
} }
export const MARKDOWN_FILENAME: string = export const MARKDOWN_FILENAME: string = core.getInput('output-filename');
core.getInput('output-filename') || 'README.md';
type File = {
filename: string;
data: string;
};
export async function pushNewFiles(files: File[] = []): Promise<any> {
if (!files.length) return;
await git.pull();
await Promise.all(
files.map(({ filename, data }) => fsp.writeFile(filename, data))
);
await git.add(files.map(({ filename }) => filename));
await git.commit(`chore(updates): updated entries in files`);
await git.push();
}

View File

@@ -1,41 +1,49 @@
import path from 'path';
import * as core from '@actions/core'; import * as core from '@actions/core';
import { readFile } from 'fs/promises';
import ghStarFetch from 'gh-star-fetch';
import { import {
renderer, renderer,
REPO_USERNAME, REPO_USERNAME,
generateMd, generateMd,
pushNewFiles,
MARKDOWN_FILENAME, MARKDOWN_FILENAME,
apiGetStar,
} from './helpers'; } from './helpers';
import git from './git';
import type { SortedLanguageList, Stars, Star } from './types'; export async function main() {
// set default template
export async function main(): Promise<any> { let template = await readFile(
const results: Stars = await apiGetStar(); path.resolve(__dirname, './TEMPLATE.ejs'),
'utf8'
const sortedByLanguages = results.reduce(
(acc: SortedLanguageList, val: Star) => {
const language = val.language || 'generic';
if (!acc[language]) {
acc[language] = [val];
} else {
acc[language].push(val);
}
return acc;
},
{}
); );
const rendered = await renderer({ // get template if found in the repo
username: REPO_USERNAME, const customTemplatePath = core.getInput('template-path');
stars: Object.entries(sortedByLanguages), core.info(`check if customTemplatePath: ${customTemplatePath} exists`);
updatedAt: Date.now(), try {
template = await readFile(customTemplatePath, 'utf8');
} catch {
core.info("Couldn't find template file, using default");
}
const sortedByLanguages = await ghStarFetch({
accessToken: core.getInput('api-token', { required: true }),
compactByLanguage: true,
}); });
const rendered = await renderer(
{
username: REPO_USERNAME,
stars: Object.entries(sortedByLanguages),
updatedAt: Date.now(),
},
template
);
const markdown: string = await generateMd(rendered); const markdown: string = await generateMd(rendered);
await pushNewFiles([ await git.pushNewFiles([
{ {
filename: MARKDOWN_FILENAME, filename: MARKDOWN_FILENAME,
data: markdown, data: markdown,
@@ -47,7 +55,7 @@ export async function main(): Promise<any> {
]); ]);
} }
export async function run(): Promise<any> { export async function run(): Promise<void> {
try { try {
await main(); await main();
} catch (error) { } catch (error) {
@@ -57,8 +65,9 @@ export async function run(): Promise<any> {
const catchAll = (info: any) => { const catchAll = (info: any) => {
core.setFailed(`#catchAll: ${info}`); core.setFailed(`#catchAll: ${info}`);
core.error(info);
}; };
process.on('unhandledRejection', catchAll); process.on('unhandledRejection', catchAll);
process.on('uncaughtException', catchAll); process.on('uncaughtException', catchAll);
run(); run().catch(core.error);

View File

@@ -1,384 +0,0 @@
/**
* Copyright (c) 2016 Jonas Hermsmeier
* https://github.com/jhermsmeier/node-http-link-header
*/
/* istanbul ignore file */
'use strict';
var COMPATIBLE_ENCODING_PATTERN = /^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i;
var WS_TRIM_PATTERN = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
var WS_CHAR_PATTERN = /\s|\uFEFF|\xA0/;
var WS_FOLD_PATTERN = /\r?\n[\x20\x09]+/g;
var DELIMITER_PATTERN = /[;,"]/;
var WS_DELIMITER_PATTERN = /[;,"]|\s/;
/**
* Token character pattern
* @type {RegExp}
* @see https://tools.ietf.org/html/rfc7230#section-3.2.6
*/
var TOKEN_PATTERN = /^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/;
var STATE = {
IDLE: 1 << 0,
URI: 1 << 1,
ATTR: 1 << 2,
};
function trim(value) {
return value.replace(WS_TRIM_PATTERN, '');
}
function hasWhitespace(value) {
return WS_CHAR_PATTERN.test(value);
}
function skipWhitespace(value, offset) {
while (hasWhitespace(value[offset])) {
offset++;
}
return offset;
}
function needsQuotes(value) {
return WS_DELIMITER_PATTERN.test(value) || !TOKEN_PATTERN.test(value);
}
class Link {
/**
* Link
* @constructor
* @param {String} [value]
* @returns {Link}
*/
constructor(value) {
/** @type {Array} URI references */
this.refs = [];
if (value) {
this.parse(value);
}
}
/**
* Get refs with given relation type
* @param {String} value
* @returns {Array<Object>}
*/
rel(value) {
var links = [];
var type = value.toLowerCase();
for (var i = 0; i < this.refs.length; i++) {
if (this.refs[i].rel.toLowerCase() === type) {
links.push(this.refs[i]);
}
}
return links;
}
/**
* Get refs where given attribute has a given value
* @param {String} attr
* @param {String} value
* @returns {Array<Object>}
*/
get(attr, value) {
attr = attr.toLowerCase();
var links = [];
for (var i = 0; i < this.refs.length; i++) {
if (this.refs[i][attr] === value) {
links.push(this.refs[i]);
}
}
return links;
}
set(link) {
this.refs.push(link);
return this;
}
has(attr, value) {
attr = attr.toLowerCase();
for (var i = 0; i < this.refs.length; i++) {
if (this.refs[i][attr] === value) {
return true;
}
}
return false;
}
parse(value, offset) {
offset = offset || 0;
value = offset ? value.slice(offset) : value;
// Trim & unfold folded lines
value = trim(value).replace(WS_FOLD_PATTERN, '');
var state = STATE.IDLE;
var length = value.length;
var offset = 0;
var ref = null;
while (offset < length) {
if (state === STATE.IDLE) {
if (hasWhitespace(value[offset])) {
offset++;
continue;
} else if (value[offset] === '<') {
if (ref != null) {
ref.rel != null
? this.refs.push(...Link.expandRelations(ref))
: this.refs.push(ref);
}
var end = value.indexOf('>', offset);
if (end === -1)
throw new Error(
'Expected end of URI delimiter at offset ' + offset
);
ref = { uri: value.slice(offset + 1, end) };
// this.refs.push( ref )
offset = end;
state = STATE.URI;
} else {
throw new Error(
'Unexpected character "' + value[offset] + '" at offset ' + offset
);
}
offset++;
} else if (state === STATE.URI) {
if (hasWhitespace(value[offset])) {
offset++;
continue;
} else if (value[offset] === ';') {
state = STATE.ATTR;
offset++;
} else if (value[offset] === ',') {
state = STATE.IDLE;
offset++;
} else {
throw new Error(
'Unexpected character "' + value[offset] + '" at offset ' + offset
);
}
} else if (state === STATE.ATTR) {
if (value[offset] === ';' || hasWhitespace(value[offset])) {
offset++;
continue;
}
var end = value.indexOf('=', offset);
if (end === -1)
throw new Error('Expected attribute delimiter at offset ' + offset);
var attr = trim(value.slice(offset, end)).toLowerCase();
var attrValue = '';
offset = end + 1;
offset = skipWhitespace(value, offset);
if (value[offset] === '"') {
offset++;
while (offset < length) {
if (value[offset] === '"') {
offset++;
break;
}
if (value[offset] === '\\') {
offset++;
}
attrValue += value[offset];
offset++;
}
} else {
var end = offset + 1;
while (!DELIMITER_PATTERN.test(value[end]) && end < length) {
end++;
}
attrValue = value.slice(offset, end);
offset = end;
}
if (ref[attr] && Link.isSingleOccurenceAttr(attr)) {
// Ignore multiples of attributes which may only appear once
} else if (attr[attr.length - 1] === '*') {
ref[attr] = Link.parseExtendedValue(attrValue);
} else {
attrValue = attr === 'type' ? attrValue.toLowerCase() : attrValue;
if (ref[attr] != null) {
if (Array.isArray(ref[attr])) {
ref[attr].push(attrValue);
} else {
ref[attr] = [ref[attr], attrValue];
}
} else {
ref[attr] = attrValue;
}
}
switch (value[offset]) {
case ',':
state = STATE.IDLE;
break;
case ';':
state = STATE.ATTR;
break;
}
offset++;
} else {
throw new Error('Unknown parser state "' + state + '"');
}
}
if (ref != null) {
ref.rel != null
? this.refs.push(...Link.expandRelations(ref))
: this.refs.push(ref);
}
ref = null;
return this;
}
toString() {
var refs = [];
var link = '';
var ref = null;
for (var i = 0; i < this.refs.length; i++) {
ref = this.refs[i];
link = Object.keys(this.refs[i]).reduce(function (link, attr) {
if (attr === 'uri') return link;
return link + '; ' + Link.formatAttribute(attr, ref[attr]);
}, '<' + ref.uri + '>');
refs.push(link);
}
return refs.join(', ');
}
}
/**
* Determines whether an encoding can be
* natively handled with a `Buffer`
* @param {String} value
* @returns {Boolean}
*/
Link.isCompatibleEncoding = function (value) {
return COMPATIBLE_ENCODING_PATTERN.test(value);
};
Link.parse = function (value, offset) {
return new Link().parse(value, offset);
};
Link.isSingleOccurenceAttr = function (attr) {
return (
attr === 'rel' ||
attr === 'type' ||
attr === 'media' ||
attr === 'title' ||
attr === 'title*'
);
};
Link.isTokenAttr = function (attr) {
return attr === 'rel' || attr === 'type' || attr === 'anchor';
};
Link.escapeQuotes = function (value) {
return value.replace(/"/g, '\\"');
};
Link.expandRelations = function (ref) {
var rels = ref.rel.split(' ');
return rels.map(function (rel) {
var value = Object.assign({}, ref);
value.rel = rel;
return value;
});
};
/**
* Parses an extended value and attempts to decode it
* @internal
* @param {String} value
* @return {Object}
*/
Link.parseExtendedValue = function (value) {
var parts = /([^']+)?(?:'([^']+)')?(.+)/.exec(value);
return {
language: parts[2].toLowerCase(),
encoding: Link.isCompatibleEncoding(parts[1])
? null
: parts[1].toLowerCase(),
value: Link.isCompatibleEncoding(parts[1])
? decodeURIComponent(parts[3])
: parts[3],
};
};
/**
* Format a given extended attribute and it's value
* @param {String} attr
* @param {Object} data
* @return {String}
*/
Link.formatExtendedAttribute = function (attr, data) {
var encoding = (data.encoding || 'utf-8').toUpperCase();
var language = data.language || 'en';
var encodedValue = '';
if (Buffer.isBuffer(data.value) && Link.isCompatibleEncoding(encoding)) {
encodedValue = data.value.toString(encoding);
} else if (Buffer.isBuffer(data.value)) {
encodedValue = data.value.toString('hex').replace(/[0-9a-f]{2}/gi, '%$1');
} else {
encodedValue = encodeURIComponent(data.value);
}
return attr + '=' + encoding + "'" + language + "'" + encodedValue;
};
/**
* Format a given attribute and it's value
* @param {String} attr
* @param {String|Object} value
* @return {String}
*/
Link.formatAttribute = function (attr, value) {
if (Array.isArray(value)) {
return value
.map((item) => {
return Link.formatAttribute(attr, item);
})
.join('; ');
}
if (attr[attr.length - 1] === '*' || typeof value !== 'string') {
return Link.formatExtendedAttribute(attr, value);
}
if (Link.isTokenAttr(attr)) {
value = needsQuotes(value)
? '"' + Link.escapeQuotes(value) + '"'
: Link.escapeQuotes(value);
} else if (needsQuotes(value)) {
value = encodeURIComponent(value);
// We don't need to escape <SP> <,> <;> within quotes
value = value
.replace(/%20/g, ' ')
.replace(/%2C/g, ',')
.replace(/%3B/g, ';');
value = '"' + value + '"';
}
return attr + '=' + value;
};
module.exports = Link;

View File

@@ -1,79 +0,0 @@
import test from 'ava';
import * as sinon from 'sinon';
import fs from 'fs';
import * as core from '@actions/core';
sinon.replace(core, 'getInput', sinon.fake());
import GithubApi from '../src/api';
const GithubApiFake = sinon.fake((rul) => ({
body: [],
headers: {
link:
'<https://api.github.com/user/5617452/starred?page=2>; rel="next", <https://api.github.com/user/5617452/starred?page=2>; rel="last"',
},
}));
sinon.replace(GithubApi, 'get', GithubApiFake);
import Git from '../src/git';
const pull = sinon.fake();
sinon.replace(Git, 'pull', pull);
const add = sinon.fake();
sinon.replace(Git, 'add', add);
const commit = sinon.fake();
sinon.replace(Git, 'commit', commit);
const push = sinon.fake();
sinon.replace(Git, 'push', push);
sinon.replace(Git, 'config', sinon.fake());
sinon.replace(Git, 'updateOrigin', sinon.fake());
const fsp = fs.promises;
const writeFile = sinon.fake();
sinon.replace(fsp, 'writeFile', writeFile);
import {
wait,
renderer,
apiGetStar,
generateMd,
pushNewFiles,
} from '../src/helpers';
test('wait should wait', async (t) => {
await wait(200);
t.pass();
});
test('renderer should render', async (t) => {
const output = await renderer({ variable: 123 }, 'Test: <%= variable %>');
t.is(output, 'Test: 123');
});
test('apiGetStar', async (t) => {
let stars = await apiGetStar('url');
t.true(GithubApiFake.called);
t.true(Array.isArray(stars));
});
test('generateMd should create TOC', async (t) => {
const tpl = `# title
## Table of Contents
## Javascript
`;
const result = await generateMd(tpl);
t.is(
result,
`# title\n\n## Table of Contents\n\n* [Javascript](#javascript)\n\n## Javascript\n`
);
});
test('should push', async (t) => {
await pushNewFiles([{ filename: 'README.md', data: '# title' }]);
t.true(writeFile.called);
t.true(pull.called);
t.true(add.called);
t.true(commit.called);
t.true(push.called);
});