Compare commits

..

35 Commits

Author SHA1 Message Date
semantic-release-bot
62a89fb127 chore(release): 2.0.0-pre.3 [skip ci]
# [2.0.0-pre.3](https://github.com/chenasraf/simple-scaffold/compare/v2.0.0-pre.2...v2.0.0-pre.3) (2024-01-30)

### Bug Fixes

* tests ([c219d38](c219d382e6))
2024-01-30 00:21:39 +00:00
c219d382e6 fix: tests 2024-01-30 02:21:05 +02:00
90ba9f72f2 feat!: rename createSubFolder and subFolderNameHelper 2024-01-30 02:21:05 +02:00
09d330af63 docs: regenerate changelog
d
2024-01-30 02:21:05 +02:00
Chen Asraf
f38ca060de Update README.md 2024-01-30 02:21:05 +02:00
semantic-release-bot
41e85b824d chore(release): 2.0.0-pre.2 [skip ci]
# [2.0.0-pre.2](https://github.com/chenasraf/simple-scaffold/compare/v2.0.0-pre.1...v2.0.0-pre.2) (2024-01-29)
2024-01-29 01:39:04 +00:00
6553fbef95 docs: fix readme doc links
a
2024-01-29 03:38:28 +02:00
semantic-release-bot
add794a7db chore(release): 2.0.0-pre.1 [skip ci]
# [2.0.0-pre.1](https://github.com/chenasraf/simple-scaffold/compare/v1.9.0...v2.0.0-pre.1) (2024-01-29)

### Bug Fixes

* remove gh flag ([e66d6ba](e66d6ba86a))

### Features

* try multiple default config files ([f25cda7](f25cda738b))
2024-01-29 01:28:54 +00:00
d4cb767484 ci: fix docs 2024-01-29 03:28:21 +02:00
570b00d01b ci: fix docs 2024-01-29 03:28:21 +02:00
7ef34210a5 ci: fix docs 2024-01-29 03:28:21 +02:00
b6fed83c91 ci: use tag versions 2024-01-29 03:28:21 +02:00
e0c0f5c1ce docs: gtag + update deps 2024-01-29 03:28:21 +02:00
5cf569262c ci: fix docs command 2024-01-29 03:28:21 +02:00
29a7aa3971 ci: fix 2024-01-29 03:28:21 +02:00
b4f0731345 chore: fix docs & formatting 2024-01-29 03:28:21 +02:00
e66d6ba86a fix: remove gh flag 2024-01-29 03:28:21 +02:00
96c1d5a759 ci: fix docs build dir 2024-01-29 03:28:21 +02:00
f25cda738b feat: try multiple default config files 2024-01-29 03:28:21 +02:00
995b43380f feat!: separate git/github/config flags
feat: separate git/github/config

t

test

cleanup
2024-01-29 03:28:21 +02:00
4821be6a00 docs: update 2024-01-29 03:28:21 +02:00
f59111f1fe docs: update docs 2024-01-29 03:28:21 +02:00
8478d36ec1 docs: update readme image 2024-01-29 03:28:21 +02:00
f0a080cadc docs: update docs, remove generated files from git 2024-01-29 03:28:21 +02:00
c95477d02b docs: update 2024-01-29 03:28:21 +02:00
a955c4da0d docs: docusaurus initial commit 2024-01-29 03:28:21 +02:00
17fdf0c4a6 feat!: rename verbose to logLevel 2024-01-29 03:28:21 +02:00
22ad5d4c75 chore: update deps 2024-01-29 03:28:21 +02:00
b2373aa5fa chore: update deps 2024-01-29 03:28:21 +02:00
3b0fc7a8c1 docs: update docs 2024-01-29 03:28:21 +02:00
0bb282c7b6 chore!: remove Name from default data 2024-01-29 03:28:21 +02:00
b57be8ed66 feat!: remove url colon syntax 2024-01-29 03:28:21 +02:00
55877f0bcd chore!: update massarg 2024-01-29 03:28:21 +02:00
9830df8bd7 ci: update docs build 2024-01-02 02:26:28 +02:00
d168dc1988 ci: update build 2024-01-02 02:25:40 +02:00
15 changed files with 107 additions and 158 deletions

View File

@@ -31,6 +31,8 @@ jobs:
run: pnpm test
- name: Build Package
run: pnpm build
- name: Pack
run: cd ./dist && pnpm pack --pack-destination=../
- name: Semantic Release
run: npx semantic-release
env:

View File

@@ -1,21 +1,21 @@
# Change Log
## [2.0.1](https://github.com/chenasraf/simple-scaffold/compare/v2.0.0...v2.0.1) (2024-02-02)
# [2.0.0-pre.3](https://github.com/chenasraf/simple-scaffold/compare/v2.0.0-pre.2...v2.0.0-pre.3) (2024-01-30)
### Bug Fixes
* log level flag ([5d7f449](https://github.com/chenasraf/simple-scaffold/commit/5d7f449050e50a6e4b2d00b7a2215cdb5fc9b611))
* rm tmp dir too early ([4aa52c8](https://github.com/chenasraf/simple-scaffold/commit/4aa52c84bd8cf302031e9f7f6407466aa736beb7))
* tests ([c219d38](https://github.com/chenasraf/simple-scaffold/commit/c219d382e6df8b2ca1157544a7785f6645d04be2))
# [2.0.0](https://github.com/chenasraf/simple-scaffold/compare/v1.9.0...v2.0.0) (2024-01-31)
## 2.0.0-pre.2 (2024-01-29)
* fix!: version number ([bc0a18d](https://github.com/chenasraf/simple-scaffold/commit/bc0a18dce01fefec6187192cb20c9303f7f7dbfa))
* remove gh flag ([939200c](https://github.com/chenasraf/simple-scaffold/commit/939200c9f21be240485ea602a73b983ba2f47aaf))
* tests ([ff92fd7](https://github.com/chenasraf/simple-scaffold/commit/ff92fd7607f1b86f36fc6b62652fdfc81cb391a3))
* try multiple default config files ([89aacb5](https://github.com/chenasraf/simple-scaffold/commit/89aacb58fd90a892f4994c758c61c43b2a6b1fba))
* Update README.md ([e012d51](https://github.com/chenasraf/simple-scaffold/commit/e012d51))
* docs: fix readme doc links ([55e561b](https://github.com/chenasraf/simple-scaffold/commit/55e561b))
## 2.0.0-pre.1 (2024-01-29)
* chore: fix docs & formatting ([b4f0731](https://github.com/chenasraf/simple-scaffold/commit/b4f0731))
* chore: update deps ([22ad5d4](https://github.com/chenasraf/simple-scaffold/commit/22ad5d4))
* chore: update deps ([b2373aa](https://github.com/chenasraf/simple-scaffold/commit/b2373aa))

View File

@@ -6,7 +6,7 @@
[Documentation](https://chenasraf.github.io/simple-scaffold) |
[NPM](https://npmjs.com/package/simple-scaffold) | [casraf.dev](https://casraf.dev)
![master](https://img.shields.io/github/package-json/v/chenasraf/simple-scaffold/master?label=master)
![version](https://img.shields.io/github/package-json/v/chenasraf/simple-scaffold/master?label=version)
![build](https://img.shields.io/github/actions/workflow/status/chenasraf/simple-scaffold/release.yml?branch=master)
</h2>
@@ -25,7 +25,7 @@ lifting for you and start building your projects faster and more efficiently tod
<div align="center">
![Intro](https://chenasraf.github.io/simple-scaffold/img/intro.gif)
![Intro](https://github.com/chenasraf/simple-scaffold/assets/167217/6341efab-f961-4f1a-83e2-831b1308b9eb)
</div>

View File

@@ -3,7 +3,7 @@ title: Usage
---
- [CLI Usage](cli)
- [Configuration Files](configuration_files)
- [Configuration Files](configuation_files)
- [Examples](examples)
- [Migration](migration)
- [Node.js Usage](node)

View File

@@ -15,7 +15,8 @@ title: Migration
- The `#template_file` syntax has been removed, you may use `--config` or `-c` to tell Simple
Scaffold which file to look for inside the git project. There is a default file priority list
which can find the file for you if it is in one of the supported filenames.
- `verbose` can now take the names `debug`, `info`, `warn`, `error` or `none` (case insensitive).
- `verbose` can now take the names `debug`, `info`, `warn`, `error` or `none` (case insensitive) or
as usual by using the numbering from before.
- `--create-sub-folder` (`-s`) has been renamed to `--subdir` (`-s`) in the CLI. The Node.js names
have been changed as well.
- `--sub-folder-name-helper` (`-sh`) has been renamed to `--subdir-helper` (`-sh`). The Node.js

Binary file not shown.

Before

Width:  |  Height:  |  Size: 385 KiB

View File

@@ -1,8 +1,8 @@
{
"name": "simple-scaffold",
"version": "2.0.1",
"version": "0.0.0",
"description": "Generate any file structure - from single components to entire app boilerplates, with a single command.",
"homepage": "https: //chenasraf.github.io/simple-scaffold",
"homepage": "https://chenasraf.github.io/simple-scaffold",
"repository": "https://github.com/chenasraf/simple-scaffold.git",
"author": "Chen Asraf <contact@casraf.dev>",
"license": "MIT",
@@ -37,7 +37,7 @@
"date-fns": "^3.3.1",
"glob": "^10.3.10",
"handlebars": "^4.7.8",
"massarg": "2.0.0"
"massarg": "2.0.0-pre.12"
},
"devDependencies": {
"@semantic-release/changelog": "^6.0.3",
@@ -46,7 +46,7 @@
"@semantic-release/release-notes-generator": "^12.1.0",
"@types/jest": "^29.5.11",
"@types/mock-fs": "^4.13.4",
"@types/node": "^20.11.14",
"@types/node": "^20.11.10",
"@types/semantic-release": "^20.0.6",
"conventional-changelog": "^5.1.0",
"conventional-changelog-cli": "^4.1.0",

104
pnpm-lock.yaml generated
View File

@@ -18,8 +18,8 @@ dependencies:
specifier: ^4.7.8
version: 4.7.8
massarg:
specifier: 2.0.0
version: 2.0.0
specifier: 2.0.0-pre.12
version: 2.0.0-pre.12
devDependencies:
'@semantic-release/changelog':
@@ -41,8 +41,8 @@ devDependencies:
specifier: ^4.13.4
version: 4.13.4
'@types/node':
specifier: ^20.11.14
version: 20.11.14
specifier: ^20.11.10
version: 20.11.10
'@types/semantic-release':
specifier: ^20.0.6
version: 20.0.6
@@ -54,7 +54,7 @@ devDependencies:
version: 4.1.0
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
version: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
mock-fs:
specifier: ^5.2.0
version: 5.2.0
@@ -69,7 +69,7 @@ devDependencies:
version: 29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.3)
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@20.11.14)(typescript@5.3.3)
version: 10.9.2(@types/node@20.11.10)(typescript@5.3.3)
typescript:
specifier: ^5.3.3
version: 5.3.3
@@ -465,7 +465,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -486,14 +486,14 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
jest-config: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -521,7 +521,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
jest-mock: 29.7.0
dev: true
@@ -548,7 +548,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
'@types/node': 20.11.14
'@types/node': 20.11.10
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -581,7 +581,7 @@ packages:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.22
'@types/node': 20.11.14
'@types/node': 20.11.10
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -669,7 +669,7 @@ packages:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 20.11.14
'@types/node': 20.11.10
'@types/yargs': 17.0.32
chalk: 4.1.2
dev: true
@@ -1078,7 +1078,7 @@ packages:
/@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies:
'@types/node': 20.11.14
'@types/node': 20.11.10
dev: true
/@types/istanbul-lib-coverage@2.0.6:
@@ -1111,11 +1111,11 @@ packages:
/@types/mock-fs@4.13.4:
resolution: {integrity: sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==}
dependencies:
'@types/node': 20.11.14
'@types/node': 20.11.10
dev: true
/@types/node@20.11.14:
resolution: {integrity: sha512-w3yWCcwULefjP9DmDDsgUskrMoOy5Z8MiwKHr1FvqGPtx7CvJzQvxD7eKpxNtklQxLruxSXWddyeRtyud0RcXQ==}
/@types/node@20.11.10:
resolution: {integrity: sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==}
dependencies:
undici-types: 5.26.5
dev: true
@@ -1127,7 +1127,7 @@ packages:
/@types/semantic-release@20.0.6:
resolution: {integrity: sha512-8YJXvsT1FwMrNdZI1e6NBHPzZWendDiUsLryzxurdup+9LnV3s9fF4NgO0D3LkBfLMnocb4Ax6TQ5yFdF3dXGQ==}
dependencies:
'@types/node': 20.11.14
'@types/node': 20.11.10
dev: true
/@types/stack-utils@2.0.3:
@@ -1386,7 +1386,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001581
electron-to-chromium: 1.4.652
electron-to-chromium: 1.4.648
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.3)
dev: true
@@ -1721,7 +1721,7 @@ packages:
typescript: 5.3.3
dev: true
/create-jest@29.7.0(@types/node@20.11.14)(ts-node@10.9.2):
/create-jest@29.7.0(@types/node@20.11.10)(ts-node@10.9.2):
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -1730,7 +1730,7 @@ packages:
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
jest-config: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -1855,8 +1855,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: false
/electron-to-chromium@1.4.652:
resolution: {integrity: sha512-XvQaa8hVUAuEJtLw6VKQqvdOxTOfBLWfI10t2xWpezx4XXD3k8bdLweEKeItqaa0+OkJX5l0mP1W+JWobyIDrg==}
/electron-to-chromium@1.4.648:
resolution: {integrity: sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==}
dev: true
/emittery@0.13.1:
@@ -2556,7 +2556,7 @@ packages:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.1
@@ -2577,7 +2577,7 @@ packages:
- supports-color
dev: true
/jest-cli@29.7.0(@types/node@20.11.14)(ts-node@10.9.2):
/jest-cli@29.7.0(@types/node@20.11.10)(ts-node@10.9.2):
resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -2591,10 +2591,10 @@ packages:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
create-jest: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
create-jest: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
exit: 0.1.2
import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
jest-config: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -2605,7 +2605,7 @@ packages:
- ts-node
dev: true
/jest-config@29.7.0(@types/node@20.11.14)(ts-node@10.9.2):
/jest-config@29.7.0(@types/node@20.11.10)(ts-node@10.9.2):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@@ -2620,7 +2620,7 @@ packages:
'@babel/core': 7.23.9
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
babel-jest: 29.7.0(@babel/core@7.23.9)
chalk: 4.1.2
ci-info: 3.9.0
@@ -2640,7 +2640,7 @@ packages:
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
ts-node: 10.9.2(@types/node@20.11.14)(typescript@5.3.3)
ts-node: 10.9.2(@types/node@20.11.10)(typescript@5.3.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -2681,7 +2681,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
jest-mock: 29.7.0
jest-util: 29.7.0
dev: true
@@ -2697,7 +2697,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
'@types/node': 20.11.14
'@types/node': 20.11.10
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -2748,7 +2748,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
jest-util: 29.7.0
dev: true
@@ -2803,7 +2803,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -2834,7 +2834,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
chalk: 4.1.2
cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2
@@ -2886,7 +2886,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -2911,7 +2911,7 @@ packages:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
'@types/node': 20.11.14
'@types/node': 20.11.10
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -2923,13 +2923,13 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@types/node': 20.11.14
'@types/node': 20.11.10
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
/jest@29.7.0(@types/node@20.11.14)(ts-node@10.9.2):
/jest@29.7.0(@types/node@20.11.10)(ts-node@10.9.2):
resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -2942,7 +2942,7 @@ packages:
'@jest/core': 29.7.0(ts-node@10.9.2)
'@jest/types': 29.6.3
import-local: 3.1.0
jest-cli: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
jest-cli: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -3164,8 +3164,8 @@ packages:
hasBin: true
dev: true
/massarg@2.0.0:
resolution: {integrity: sha512-oeB1dT/e4K3GBCPmUPwPXybeZbjrAnjsoMWSqshlfs4ndkeNdyxEHr6UAf0bkZMu3pqxT/QqembAM4nrUcPrAQ==}
/massarg@2.0.0-pre.12:
resolution: {integrity: sha512-ncD9mXRQh4y8IIi5qcNEzh0qsqXyVq0FH0/v2vdMy/+WJCdAIuKG3TqlWML1SWMH4QdqZ/XJnbDfp8u2i91NNg==}
dependencies:
zod: 3.22.4
dev: false
@@ -3581,7 +3581,7 @@ packages:
dependencies:
'@babel/code-frame': 7.23.5
index-to-position: 0.1.2
type-fest: 4.10.2
type-fest: 4.10.1
dev: true
/path-exists@3.0.0:
@@ -3727,7 +3727,7 @@ packages:
dependencies:
find-up: 6.3.0
read-pkg: 8.1.0
type-fest: 4.10.2
type-fest: 4.10.1
dev: true
/read-pkg-up@11.0.0:
@@ -3737,7 +3737,7 @@ packages:
dependencies:
find-up-simple: 1.0.0
read-pkg: 9.0.1
type-fest: 4.10.2
type-fest: 4.10.1
dev: true
/read-pkg-up@7.0.1:
@@ -3766,7 +3766,7 @@ packages:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 6.0.0
parse-json: 7.1.1
type-fest: 4.10.2
type-fest: 4.10.1
dev: true
/read-pkg@9.0.1:
@@ -3776,7 +3776,7 @@ packages:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 6.0.0
parse-json: 8.1.0
type-fest: 4.10.2
type-fest: 4.10.1
unicorn-magic: 0.1.0
dev: true
@@ -4301,7 +4301,7 @@ packages:
'@babel/core': 7.23.9
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
jest: 29.7.0(@types/node@20.11.14)(ts-node@10.9.2)
jest: 29.7.0(@types/node@20.11.10)(ts-node@10.9.2)
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
@@ -4311,7 +4311,7 @@ packages:
yargs-parser: 21.1.1
dev: true
/ts-node@10.9.2(@types/node@20.11.14)(typescript@5.3.3):
/ts-node@10.9.2(@types/node@20.11.10)(typescript@5.3.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@@ -4330,7 +4330,7 @@ packages:
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.11.14
'@types/node': 20.11.10
acorn: 8.11.3
acorn-walk: 8.3.2
arg: 4.1.3
@@ -4382,8 +4382,8 @@ packages:
engines: {node: '>=14.16'}
dev: true
/type-fest@4.10.2:
resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==}
/type-fest@4.10.1:
resolution: {integrity: sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==}
engines: {node: '>=16'}
dev: true

View File

@@ -1,40 +1,30 @@
const ref = process.env.GITHUB_REF || ""
const branch = ref.split("/").pop()
/**
* @type {import('semantic-release').GlobalConfig}
*/
/** @type {import('semantic-release').Options} */
module.exports = {
branches: ["master", { name: "pre", prerelease: true }],
analyzeCommits: {
path: "semantic-release-conventional-commits",
},
plugins: [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/npm",
"@semantic-release/changelog",
{
// only update the pkg version on root, don't publish
npmPublish: false,
changelogFile: "CHANGELOG.md",
changelogTitle: "# Change Log",
},
],
// [
// '@semantic-release/npm',
// {
// // only update the pkg version on doc, don't publish
// npmPublish: false,
// pkgRoot: 'doc',
// },
// ]
[
"@semantic-release/npm",
{
// publish from dist dir instead of root
npmPublish: true,
pkgRoot: "dist",
},
],
[
"@semantic-release/exec",
"@semantic-release/git",
{
publish: "cd ./dist && pnpm pack --pack-destination=../",
assets: ["CHANGELOG.md"],
},
],
[
@@ -43,29 +33,5 @@ module.exports = {
assets: ["*.tgz"],
},
],
[
"@semantic-release/git",
{
assets: ["package.json", "CHANGELOG.md"].filter(Boolean),
},
],
//
// [
// '@semantic-release/exec',
// {
// verifyReleaseCmd: 'echo ${nextRelease.version} > .VERSION',
// },
// ],
],
}
if (branch === "master") {
const gitIdx = module.exports.plugins.findIndex((plugin) => plugin[0] === "@semantic-release/git")
module.exports.plugins.splice(gitIdx, 0, [
"@semantic-release/changelog",
{
changelogFile: "CHANGELOG.md",
changelogTitle: "# Change Log",
},
])
}

View File

@@ -1,6 +1,4 @@
#!/usr/bin/env node
import os from "node:os"
import { massarg } from "massarg"
import chalk from "chalk"
import { LogLevel, ScaffoldCmdConfig } from "./types"
@@ -21,13 +19,8 @@ export async function parseCliArgs(args = process.argv.slice(2)) {
description: pkg.description,
})
.main(async (config) => {
const tmpPath = path.resolve(os.tmpdir(), `scaffold-config-${Date.now()}`)
const parsed = await parseConfigFile(config, tmpPath)
try {
return Scaffold(parsed)
} finally {
await fs.rm(tmpPath, { recursive: true, force: true })
}
const parsed = await parseConfigFile(config)
return Scaffold(parsed)
})
.option({
name: "name",
@@ -126,7 +119,7 @@ export async function parseCliArgs(args = process.argv.slice(2)) {
"Determine amount of logs to display. The values are: " +
`${chalk.bold`\`none | debug | info | warn | error\``}. ` +
"The provided level will display messages of the same level or higher.",
parse: (v) => v.toLowerCase(),
parse: Number,
})
.flag({
name: "dry-run",

View File

@@ -48,7 +48,7 @@ function isWrappedWithQuotes(string: string): boolean {
}
/** @internal */
export async function parseConfigFile(config: ScaffoldCmdConfig, tmpPath: string): Promise<ScaffoldConfig> {
export async function parseConfigFile(config: ScaffoldCmdConfig): Promise<ScaffoldConfig> {
let output: ScaffoldConfig = config
if (config.quiet) {
@@ -69,9 +69,8 @@ export async function parseConfigFile(config: ScaffoldCmdConfig, tmpPath: string
const configPath = isGit ? config.git : configFilename
log(config, LogLevel.info, `Loading config from ${configFilename} with key ${key}`)
const configPromise = await (isGit
? getRemoteConfig({ git: configPath, config: configFilename, logLevel: config.logLevel, tmpPath })
const configPromise = await (config.git
? getRemoteConfig({ git: configPath, config: configFilename, logLevel: config.logLevel })
: getLocalConfig({ config: configFilename, logLevel: config.logLevel }))
// resolve the config
@@ -124,7 +123,7 @@ export async function getLocalConfig(config: ConfigLoadConfig & Partial<LogConfi
export async function getRemoteConfig(
config: RemoteConfigLoadConfig & Partial<LogConfig>,
): Promise<ScaffoldConfigFile> {
const { config: configFile, git, tmpPath, ...logConfig } = config as Required<typeof config>
const { config: configFile, git, ...logConfig } = config as Required<typeof config>
log(logConfig, LogLevel.info, `Loading config from remote ${git}, file ${configFile}`)
@@ -136,5 +135,5 @@ export async function getRemoteConfig(
throw new Error(`Unsupported protocol ${url.protocol}`)
}
return getGitConfig(url, configFile, tmpPath, logConfig)
return getGitConfig(url, configFile, logConfig)
}

View File

@@ -1,4 +1,5 @@
import path from "node:path"
import os from "node:os"
import fs from "node:fs/promises"
import { log } from "./logger"
import { AsyncResolver, LogConfig, LogLevel, ScaffoldCmdConfig, ScaffoldConfigMap } from "./types"
@@ -8,15 +9,15 @@ import { resolve, wrapNoopResolver } from "./utils"
export async function getGitConfig(
url: URL,
file: string,
tmpPath: string,
logConfig: LogConfig,
): Promise<AsyncResolver<ScaffoldCmdConfig, ScaffoldConfigMap>> {
const repoUrl = `${url.protocol}//${url.host}${url.pathname}`
log(logConfig, LogLevel.info, `Cloning git repo ${repoUrl}`)
const tmpPath = path.resolve(os.tmpdir(), `scaffold-config-${Date.now()}`)
return new Promise((res, reject) => {
log(logConfig, LogLevel.debug, `Cloning git repo to ${tmpPath}`)
const clone = spawn("git", ["clone", "--recurse-submodules", "--depth", "1", repoUrl, tmpPath])
clone.on("error", reject)
@@ -46,7 +47,6 @@ export async function loadGitConfig({
log(logConfig, LogLevel.info, `Loading config from git repo: ${repoUrl}`)
const filename = file || (await findConfigFile(tmpPath))
const absolutePath = path.resolve(tmpPath, filename)
log(logConfig, LogLevel.debug, `Resolving config file: ${absolutePath}`)
const loadedConfig = await resolve(async () => (await import(absolutePath)).default as ScaffoldConfigMap, logConfig)
log(logConfig, LogLevel.info, `Loaded config from git`)
@@ -58,6 +58,7 @@ export async function loadGitConfig({
templates: v.templates.map((t) => path.resolve(tmpPath, t)),
}
}
await fs.rm(tmpPath, { recursive: true })
return wrapNoopResolver(fixedConfig)
}

View File

@@ -5,8 +5,6 @@
* See [readme](README.md)
*/
import path from "node:path"
import os from "node:os"
import { handleErr, resolve } from "./utils"
import {
isDir,
@@ -130,9 +128,8 @@ Scaffold.fromConfig = async function (
config: pathOrUrl,
...config,
}
const tmpPath = path.resolve(os.tmpdir(), `scaffold-config-${Date.now()}`)
const _overrides = resolve(overrides, _cmdConfig)
const _config = await parseConfigFile(_cmdConfig, tmpPath)
const _config = await parseConfigFile(_cmdConfig)
return Scaffold({ ..._config, ..._overrides })
}

View File

@@ -393,7 +393,7 @@ export type LogConfig = Pick<ScaffoldConfig, "logLevel">
export type ConfigLoadConfig = LogConfig & Pick<ScaffoldCmdConfig, "config">
/** @internal */
export type RemoteConfigLoadConfig = LogConfig & Pick<ScaffoldCmdConfig, "config" | "git"> & { tmpPath: string }
export type RemoteConfigLoadConfig = LogConfig & Pick<ScaffoldCmdConfig, "config" | "git">
/** @internal */
export type MinimalConfig = Pick<ScaffoldCmdConfig, "name" | "key">

View File

@@ -68,34 +68,25 @@ describe("config", () => {
describe("parseConfigFile", () => {
test("normal config does not change", async () => {
expect(
await parseConfigFile(
{
...blankCliConf,
},
`/tmp/scaffold-config-${Date.now()}`,
),
await parseConfigFile({
...blankCliConf,
}),
).toEqual(blankCliConf)
})
describe("appendData", () => {
test("appends", async () => {
const result = await parseConfigFile(
{
...blankCliConf,
appendData: { key: "value" },
},
`/tmp/scaffold-config-${Date.now()}`,
)
const result = await parseConfigFile({
...blankCliConf,
appendData: { key: "value" },
})
expect(result?.data?.key).toEqual("value")
})
test("overwrites existing value", async () => {
const result = await parseConfigFile(
{
...blankCliConf,
data: { num: "123" },
appendData: { num: "1234" },
},
`/tmp/scaffold-config-${Date.now()}`,
)
const result = await parseConfigFile({
...blankCliConf,
data: { num: "123" },
appendData: { num: "1234" },
})
expect(result?.data?.num).toEqual("1234")
})
})
@@ -106,7 +97,6 @@ describe("config", () => {
const resultFn = await config.getRemoteConfig({
git: "https://github.com/chenasraf/simple-scaffold.git",
logLevel: LogLevel.none,
tmpPath: `/tmp/scaffold-config-${Date.now()}`,
})
const result = await resolve(resultFn, blankCliConf)
expect(result).toEqual(blankCliConf)