simple-scaffold 1.6.0 → 1.7.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,10 +40,12 @@ The fastest way to get started is to use `npx` to immediately start a scaffold p
40
40
  Prepare any templates you want to use - for example, in the directory `templates/component`; and use
41
41
  that in the CLI args. Here is a simple example file:
42
42
 
43
+ Simple Scaffold will maintain any file and directory structure you try to generate.
44
+
43
45
  `templates/component/{{ pascalName name }}.tsx`
44
46
 
45
47
  ```tsx
46
- // Created: {{ now | 'yyyy-MM-dd' }}
48
+ // Created: {{ now 'yyyy-MM-dd' }}
47
49
  import React from 'react'
48
50
 
49
51
  export default {{pascalCase name}}: React.FC = (props) => {
@@ -57,7 +59,7 @@ To generate the template output, run:
57
59
 
58
60
  ```shell
59
61
  # generate single component
60
- npx simple-scaffold@latest \
62
+ $ npx simple-scaffold@latest \
61
63
  -t templates/component -o src/components PageWrapper
62
64
  ```
63
65
 
@@ -74,27 +76,73 @@ export default PageWrapper: React.FC = (props) => {
74
76
  }
75
77
  ```
76
78
 
77
- ### Remote Templates
79
+ ### Configuration Files
80
+
81
+ You can also use a config file to more easily maintain all your scaffold definitions.
82
+
83
+ `scaffold.config.js`
84
+
85
+ ```js
86
+ module.exports = {
87
+ // use "default" to avoid needing to specify key
88
+ // in this case the key is "component"
89
+ component: {
90
+ templates: ["templates/component"],
91
+ output: "src/components",
92
+ data: {
93
+ // ...
94
+ },
95
+ },
96
+ }
97
+ ```
98
+
99
+ Then call your scaffold like this:
100
+
101
+ ```shell
102
+ $ npx simple-scaffold@latest -c scaffold.config.js PageWrapper
103
+ ```
104
+
105
+ This will allow you to avoid needing to remember which configs are needed or to store them in a
106
+ 1-liner in `packqge.json` which can get pretty long and messy, which is harder to maintain.
107
+
108
+ Also, this allows you to define more complex scaffolds with logic without having to use the Node.js
109
+ API directly. (Of course you always have the option to still do so if you wish)
110
+
111
+ See more at the [CLI documentation](https://chenasraf.github.io/simple-scaffold/pages/cli.html) and
112
+ [Configuration Files](https://chenasraf.github.io/simple-scaffold/pages/configuration_files.html).
113
+
114
+ ### Remote Configurations
78
115
 
79
116
  Another quick way to start is to re-use someone else's (or your own) work using a template
80
117
  repository.
81
118
 
119
+ A remote config can be loaded in one of these ways:
120
+
121
+ - If it's on GitHub, you can use `-gh user/repository_name`
122
+ - If it's on another git server (such as GitLab), you can use
123
+ `-c https://example.com/user/repository_name.git`
124
+
125
+ Configurations can hold multiple scaffold groups. Each group can be accessed using its key by
126
+ supplying the `--key` or `-k` argument, or by appending a hash and then the key name, like so:
127
+ `-gh user/repository_name#key_name` - this also works for the `-c` flag.
128
+
82
129
  Here is an example for loading the example component templates in this very repository:
83
130
 
84
131
  ```shell
85
- npx simple-scaffold@latest \
86
- -gh chenasraf/simple-scaffold#examples/test-input/scaffold.config.js:component \
132
+ $ npx simple-scaffold@latest \
133
+ -gh chenasraf/simple-scaffold#scaffold.config.js:component \
87
134
  PageWrapper
88
135
 
89
136
  # equivalent to:
90
- npx simple-scaffold@latest \
91
- -c https://github.com/chenasraf/simple-scaffold.git#examples/test-input/scaffold.config.js:component \
137
+ $ npx simple-scaffold@latest \
138
+ -c https://github.com/chenasraf/simple-scaffold.git#scaffold.config.js:component \
92
139
  PageWrapper
93
140
  ```
94
141
 
95
142
  When template name (`:component`) is omitted, `default` is used.
96
143
 
97
- See more at the [CLI documentation](https://chenasraf.github.io/simple-scaffold/pages/cli.html)
144
+ See more at the [CLI documentation](https://chenasraf.github.io/simple-scaffold/pages/cli.html) and
145
+ [Configuration Files](https://chenasraf.github.io/simple-scaffold/pages/configuration_files.html).
98
146
 
99
147
  ## Documentation
100
148
 
package/cmd.js CHANGED
@@ -11,13 +11,13 @@ const types_1 = require("./types");
11
11
  const scaffold_1 = require("./scaffold");
12
12
  const path_1 = __importDefault(require("path"));
13
13
  const promises_1 = __importDefault(require("fs/promises"));
14
- const utils_1 = require("./utils");
14
+ const config_1 = require("./config");
15
15
  async function parseCliArgs(args = process.argv.slice(2)) {
16
16
  const pkg = JSON.parse((await promises_1.default.readFile(path_1.default.join(__dirname, "package.json"))).toString());
17
17
  const isConfig = args.includes("--config") || args.includes("-c") || args.includes("--github") || args.includes("-gh");
18
18
  return ((0, massarg_1.default)()
19
19
  .main(async (config) => {
20
- const _config = await (0, utils_1.parseConfig)(config);
20
+ const _config = await (0, config_1.parseConfig)(config);
21
21
  return (0, scaffold_1.Scaffold)(_config);
22
22
  })
23
23
  .option({
@@ -73,7 +73,7 @@ async function parseCliArgs(args = process.argv.slice(2)) {
73
73
  name: "append-data",
74
74
  aliases: ["D"],
75
75
  description: "Append additional custom data to the templates, which will overwrite --data, using an alternate syntax, which is easier to use with CLI: -D key1=string -D key2:=raw",
76
- parse: utils_1.parseAppendData,
76
+ parse: config_1.parseAppendData,
77
77
  })
78
78
  .option({
79
79
  name: "create-sub-folder",
package/cmd.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../src/cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../src/cmd.ts"],"names":[],"mappings":"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"}
package/config.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { ConfigLoadConfig, FileResponse, ScaffoldCmdConfig, ScaffoldConfig, ScaffoldConfigFile } from "./types";
2
+ import { OptionsBase } from "massarg/types";
3
+ export declare function getOptionValueForFile<T>(config: ScaffoldConfig, filePath: string, fn: FileResponse<T>, defaultValue?: T): T;
4
+ export declare function parseAppendData(value: string, options: ScaffoldCmdConfig & OptionsBase): unknown;
5
+ /** @internal */
6
+ export declare function parseConfig(config: ScaffoldCmdConfig & OptionsBase): Promise<ScaffoldConfig>;
7
+ /** @internal */
8
+ export declare function getConfig(config: ConfigLoadConfig): Promise<ScaffoldConfigFile>;
package/config.js ADDED
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getConfig = exports.parseConfig = exports.parseAppendData = exports.getOptionValueForFile = void 0;
30
+ const path_1 = __importDefault(require("path"));
31
+ const types_1 = require("./types");
32
+ const node_child_process_1 = require("node:child_process");
33
+ const node_os_1 = __importDefault(require("node:os"));
34
+ const parser_1 = require("./parser");
35
+ const logger_1 = require("./logger");
36
+ const utils_1 = require("./utils");
37
+ function getOptionValueForFile(config, filePath, fn, defaultValue) {
38
+ if (typeof fn !== "function") {
39
+ return defaultValue ?? fn;
40
+ }
41
+ return fn(filePath, path_1.default.dirname((0, parser_1.handlebarsParse)(config, filePath, { isPath: true }).toString()), path_1.default.basename((0, parser_1.handlebarsParse)(config, filePath, { isPath: true }).toString()));
42
+ }
43
+ exports.getOptionValueForFile = getOptionValueForFile;
44
+ function parseAppendData(value, options) {
45
+ const data = options.data ?? {};
46
+ const [key, val] = value.split(/\:?=/);
47
+ // raw
48
+ if (value.includes(":=") && !val.includes(":=")) {
49
+ return { ...data, [key]: JSON.parse(val) };
50
+ }
51
+ return { ...data, [key]: isWrappedWithQuotes(val) ? val.substring(1, val.length - 1) : val };
52
+ }
53
+ exports.parseAppendData = parseAppendData;
54
+ function isWrappedWithQuotes(string) {
55
+ return (string.startsWith('"') && string.endsWith('"')) || (string.startsWith("'") && string.endsWith("'"));
56
+ }
57
+ /** @internal */
58
+ async function parseConfig(config) {
59
+ let c = config;
60
+ if (config.github) {
61
+ (0, logger_1.log)(config, types_1.LogLevel.Info, `Loading config from github ${config.github}`);
62
+ const gitUrl = new URL(`https://github.com/${config.github}`);
63
+ if (!gitUrl.pathname.endsWith(".git")) {
64
+ gitUrl.pathname += ".git";
65
+ }
66
+ config.config = gitUrl.toString();
67
+ }
68
+ if (config.config) {
69
+ const isUrl = config.config.includes("://");
70
+ const hasColonToken = (!isUrl && config.config.includes(":")) || (isUrl && count(config.config, ":") > 1);
71
+ const colonIndex = config.config.lastIndexOf(":");
72
+ const [configFile, templateKey = "default"] = hasColonToken
73
+ ? [config.config.substring(0, colonIndex), config.config.substring(colonIndex + 1)]
74
+ : [config.config, undefined];
75
+ const key = (config.key ?? templateKey) || "default";
76
+ (0, logger_1.log)(config, types_1.LogLevel.Info, `Loading config from ${configFile} with key ${key}`);
77
+ const configPromise = await getConfig({ config: configFile, quiet: config.quiet, verbose: config.verbose });
78
+ const configImport = await (0, utils_1.resolve)(configPromise, config);
79
+ if (!configImport[key]) {
80
+ throw new Error(`Template "${key}" not found in ${configFile}`);
81
+ }
82
+ c = {
83
+ ...config,
84
+ ...configImport[key],
85
+ data: {
86
+ ...configImport[key].data,
87
+ ...config.data,
88
+ },
89
+ };
90
+ }
91
+ c.data = { ...c.data, ...config.appendData };
92
+ delete config.appendData;
93
+ return c;
94
+ }
95
+ exports.parseConfig = parseConfig;
96
+ function wrapNoopResolver(value) {
97
+ if (typeof value === "function") {
98
+ return value;
99
+ }
100
+ return (_) => value;
101
+ }
102
+ /** @internal */
103
+ async function getConfig(config) {
104
+ const { config: configFile, ...logConfig } = config;
105
+ const url = new URL(configFile);
106
+ if (url.protocol === "file:") {
107
+ (0, logger_1.log)(logConfig, types_1.LogLevel.Info, `Loading config from file ${configFile}`);
108
+ const absolutePath = path_1.default.resolve(process.cwd(), configFile);
109
+ return wrapNoopResolver(Promise.resolve(`${absolutePath}`).then(s => __importStar(require(s))));
110
+ }
111
+ const isHttp = url.protocol === "http:" || url.protocol === "https:";
112
+ const isGit = url.protocol === "git:" || (isHttp && url.pathname.endsWith(".git"));
113
+ if (isHttp || isGit) {
114
+ if (isGit) {
115
+ return getGitConfig(url, logConfig);
116
+ }
117
+ throw new Error(`Unsupported protocol ${url.protocol}`);
118
+ }
119
+ return wrapNoopResolver(Promise.resolve(`${path_1.default.resolve(process.cwd(), configFile)}`).then(s => __importStar(require(s))));
120
+ }
121
+ exports.getConfig = getConfig;
122
+ async function getGitConfig(url, logConfig) {
123
+ const repoUrl = `${url.protocol}//${url.host}${url.pathname}`;
124
+ (0, logger_1.log)(logConfig, types_1.LogLevel.Info, `Cloning git repo ${repoUrl}`);
125
+ const tmpPath = path_1.default.resolve(node_os_1.default.tmpdir(), `scaffold-config-${Date.now()}`);
126
+ return new Promise((resolve, reject) => {
127
+ const clone = (0, node_child_process_1.spawn)("git", ["clone", "--depth", "1", repoUrl, tmpPath]);
128
+ clone.on("error", reject);
129
+ clone.on("close", async (code) => {
130
+ if (code === 0) {
131
+ (0, logger_1.log)(logConfig, types_1.LogLevel.Info, `Loading config from git repo: ${repoUrl}`);
132
+ const hashPath = url.hash?.replace("#", "") || "scaffold.config.js";
133
+ const absolutePath = path_1.default.resolve(tmpPath, hashPath);
134
+ const loadedConfig = (await Promise.resolve(`${absolutePath}`).then(s => __importStar(require(s)))).default;
135
+ (0, logger_1.log)(logConfig, types_1.LogLevel.Info, `Loaded config from git`);
136
+ (0, logger_1.log)(logConfig, types_1.LogLevel.Debug, `Raw config:`, loadedConfig);
137
+ const fixedConfig = Object.fromEntries(Object.entries(loadedConfig).map(([k, v]) => [
138
+ k,
139
+ // use absolute paths for template as config is necessarily in another directory
140
+ { ...v, templates: v.templates.map((t) => path_1.default.resolve(tmpPath, t)) },
141
+ ]));
142
+ resolve(wrapNoopResolver(fixedConfig));
143
+ }
144
+ else {
145
+ reject(new Error(`Git clone failed with code ${code}`));
146
+ }
147
+ });
148
+ });
149
+ }
150
+ function count(string, substring) {
151
+ return string.split(substring).length - 1;
152
+ }
153
+ //# sourceMappingURL=config.js.map
package/config.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/file.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import { ScaffoldConfig } from "./types";
2
+ export declare function createDirIfNotExists(dir: string, config: ScaffoldConfig): Promise<void>;
3
+ export declare function pathExists(filePath: string): Promise<boolean>;
4
+ export declare function isDir(path: string): Promise<boolean>;
5
+ export declare function removeGlob(template: string): string;
6
+ export declare function makeRelativePath(str: string): string;
7
+ export declare function getBasePath(relPath: string): string;
8
+ export declare function getFileList(_config: ScaffoldConfig, template: string): Promise<string[]>;
9
+ export interface GlobInfo {
10
+ nonGlobTemplate: string;
11
+ origTemplate: string;
12
+ isDirOrGlob: boolean;
13
+ isGlob: boolean;
14
+ template: string;
15
+ }
16
+ export declare function getTemplateGlobInfo(config: ScaffoldConfig, template: string): Promise<GlobInfo>;
17
+ export interface OutputFileInfo {
18
+ inputPath: string;
19
+ outputPathOpt: string;
20
+ outputDir: string;
21
+ outputPath: string;
22
+ exists: boolean;
23
+ }
24
+ export declare function getTemplateFileInfo(config: ScaffoldConfig, { templatePath, basePath }: {
25
+ templatePath: string;
26
+ basePath: string;
27
+ }): Promise<OutputFileInfo>;
28
+ export declare function copyFileTransformed(config: ScaffoldConfig, { exists, overwrite, outputPath, inputPath, }: {
29
+ exists: boolean;
30
+ overwrite: boolean;
31
+ outputPath: string;
32
+ inputPath: string;
33
+ }): Promise<void>;
34
+ export declare function getOutputDir(config: ScaffoldConfig, outputPathOpt: string, basePath: string): string;
35
+ export declare function handleTemplateFile(config: ScaffoldConfig, { templatePath, basePath }: {
36
+ templatePath: string;
37
+ basePath: string;
38
+ }): Promise<void>;
package/file.js ADDED
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.handleTemplateFile = exports.getOutputDir = exports.copyFileTransformed = exports.getTemplateFileInfo = exports.getTemplateGlobInfo = exports.getFileList = exports.getBasePath = exports.makeRelativePath = exports.removeGlob = exports.isDir = exports.pathExists = exports.createDirIfNotExists = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const constants_1 = require("constants");
9
+ const types_1 = require("./types");
10
+ const fs_1 = require("fs");
11
+ const { stat, access, mkdir } = fs_1.promises;
12
+ const glob_1 = require("glob");
13
+ const logger_1 = require("./logger");
14
+ const config_1 = require("./config");
15
+ const parser_1 = require("./parser");
16
+ const utils_1 = require("./utils");
17
+ const { readFile, writeFile } = fs_1.promises;
18
+ async function createDirIfNotExists(dir, config) {
19
+ const parentDir = path_1.default.dirname(dir);
20
+ if (!(await pathExists(parentDir))) {
21
+ await createDirIfNotExists(parentDir, config);
22
+ }
23
+ if (!(await pathExists(dir))) {
24
+ try {
25
+ (0, logger_1.log)(config, types_1.LogLevel.Debug, `Creating dir ${dir}`);
26
+ await mkdir(dir);
27
+ return;
28
+ }
29
+ catch (e) {
30
+ if (e.code !== "EEXIST") {
31
+ throw e;
32
+ }
33
+ return;
34
+ }
35
+ }
36
+ }
37
+ exports.createDirIfNotExists = createDirIfNotExists;
38
+ async function pathExists(filePath) {
39
+ try {
40
+ await access(filePath, constants_1.F_OK);
41
+ return true;
42
+ }
43
+ catch (e) {
44
+ if (e.code === "ENOENT") {
45
+ return false;
46
+ }
47
+ throw e;
48
+ }
49
+ }
50
+ exports.pathExists = pathExists;
51
+ async function isDir(path) {
52
+ const tplStat = await stat(path);
53
+ return tplStat.isDirectory();
54
+ }
55
+ exports.isDir = isDir;
56
+ function removeGlob(template) {
57
+ return template.replace(/\*/g, "").replace(/(\/\/|\\\\)/g, path_1.default.sep);
58
+ }
59
+ exports.removeGlob = removeGlob;
60
+ function makeRelativePath(str) {
61
+ return str.startsWith(path_1.default.sep) ? str.slice(1) : str;
62
+ }
63
+ exports.makeRelativePath = makeRelativePath;
64
+ function getBasePath(relPath) {
65
+ return path_1.default
66
+ .resolve(process.cwd(), relPath)
67
+ .replace(process.cwd() + path_1.default.sep, "")
68
+ .replace(process.cwd(), "");
69
+ }
70
+ exports.getBasePath = getBasePath;
71
+ async function getFileList(_config, template) {
72
+ return (await (0, glob_1.glob)(template, {
73
+ dot: true,
74
+ nodir: true,
75
+ // debug: config.verbose === LogLevel.Debug,
76
+ })).map(path_1.default.normalize);
77
+ }
78
+ exports.getFileList = getFileList;
79
+ async function getTemplateGlobInfo(config, template) {
80
+ const isGlob = (0, glob_1.hasMagic)(template);
81
+ (0, logger_1.log)(config, types_1.LogLevel.Debug, "before isDir", "isGlob:", isGlob, template);
82
+ let _template = template;
83
+ let nonGlobTemplate = isGlob ? removeGlob(template) : template;
84
+ nonGlobTemplate = path_1.default.normalize(nonGlobTemplate);
85
+ const isDirOrGlob = isGlob ? true : await isDir(template);
86
+ (0, logger_1.log)(config, types_1.LogLevel.Debug, "after isDir", isDirOrGlob);
87
+ const _shouldAddGlob = !isGlob && isDirOrGlob;
88
+ const origTemplate = template;
89
+ if (_shouldAddGlob) {
90
+ _template = path_1.default.join(template, "**", "*");
91
+ }
92
+ return { nonGlobTemplate, origTemplate, isDirOrGlob, isGlob, template: _template };
93
+ }
94
+ exports.getTemplateGlobInfo = getTemplateGlobInfo;
95
+ async function getTemplateFileInfo(config, { templatePath, basePath }) {
96
+ const inputPath = path_1.default.resolve(process.cwd(), templatePath);
97
+ const outputPathOpt = (0, config_1.getOptionValueForFile)(config, inputPath, config.output);
98
+ const outputDir = getOutputDir(config, outputPathOpt, basePath);
99
+ const outputPath = (0, parser_1.handlebarsParse)(config, path_1.default.join(outputDir, path_1.default.basename(inputPath)), {
100
+ isPath: true,
101
+ }).toString();
102
+ const exists = await pathExists(outputPath);
103
+ return { inputPath, outputPathOpt, outputDir, outputPath, exists };
104
+ }
105
+ exports.getTemplateFileInfo = getTemplateFileInfo;
106
+ async function copyFileTransformed(config, { exists, overwrite, outputPath, inputPath, }) {
107
+ if (!exists || overwrite) {
108
+ if (exists && overwrite) {
109
+ (0, logger_1.log)(config, types_1.LogLevel.Info, `File ${outputPath} exists, overwriting`);
110
+ }
111
+ const templateBuffer = await readFile(inputPath);
112
+ const unprocessedOutputContents = (0, parser_1.handlebarsParse)(config, templateBuffer);
113
+ const finalOutputContents = (await config.beforeWrite?.(unprocessedOutputContents, templateBuffer, outputPath)) ?? unprocessedOutputContents;
114
+ if (!config.dryRun) {
115
+ await writeFile(outputPath, finalOutputContents);
116
+ (0, logger_1.log)(config, types_1.LogLevel.Info, "Done.");
117
+ }
118
+ else {
119
+ (0, logger_1.log)(config, types_1.LogLevel.Info, "Dry Run. Output should be:");
120
+ (0, logger_1.log)(config, types_1.LogLevel.Info, finalOutputContents);
121
+ }
122
+ }
123
+ else if (exists) {
124
+ (0, logger_1.log)(config, types_1.LogLevel.Info, `File ${outputPath} already exists, skipping`);
125
+ }
126
+ }
127
+ exports.copyFileTransformed = copyFileTransformed;
128
+ function getOutputDir(config, outputPathOpt, basePath) {
129
+ return path_1.default.resolve(process.cwd(), ...[
130
+ outputPathOpt,
131
+ basePath,
132
+ config.createSubFolder
133
+ ? config.subFolderNameHelper
134
+ ? (0, parser_1.handlebarsParse)(config, `{{ ${config.subFolderNameHelper} name }}`).toString()
135
+ : config.name
136
+ : undefined,
137
+ ].filter(Boolean));
138
+ }
139
+ exports.getOutputDir = getOutputDir;
140
+ async function handleTemplateFile(config, { templatePath, basePath }) {
141
+ return new Promise(async (resolve, reject) => {
142
+ try {
143
+ const { inputPath, outputPathOpt, outputDir, outputPath, exists } = await getTemplateFileInfo(config, {
144
+ templatePath,
145
+ basePath,
146
+ });
147
+ const overwrite = (0, config_1.getOptionValueForFile)(config, inputPath, config.overwrite ?? false);
148
+ (0, logger_1.log)(config, types_1.LogLevel.Debug, `\nParsing ${templatePath}`, `\nBase path: ${basePath}`, `\nFull input path: ${inputPath}`, `\nOutput Path Opt: ${outputPathOpt}`, `\nFull output dir: ${outputDir}`, `\nFull output path: ${outputPath}`, `\n`);
149
+ await createDirIfNotExists(path_1.default.dirname(outputPath), config);
150
+ (0, logger_1.log)(config, types_1.LogLevel.Info, `Writing to ${outputPath}`);
151
+ await copyFileTransformed(config, { exists, overwrite, outputPath, inputPath });
152
+ resolve();
153
+ }
154
+ catch (e) {
155
+ (0, utils_1.handleErr)(e);
156
+ reject(e);
157
+ }
158
+ });
159
+ }
160
+ exports.handleTemplateFile = handleTemplateFile;
161
+ //# sourceMappingURL=file.js.map
package/file.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}
package/logger.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { LogConfig, LogLevel, ScaffoldConfig } from "./types";
2
+ export declare function log(config: LogConfig, level: LogLevel, ...obj: any[]): void;
3
+ export declare function logInputFile(config: ScaffoldConfig, { origTemplate, relPath, template, inputFilePath, nonGlobTemplate, basePath, isDirOrGlob, isGlob, }: {
4
+ origTemplate: string;
5
+ relPath: string;
6
+ template: string;
7
+ inputFilePath: string;
8
+ nonGlobTemplate: string;
9
+ basePath: string;
10
+ isDirOrGlob: boolean;
11
+ isGlob: boolean;
12
+ }): void;
13
+ export declare function logInitStep(config: ScaffoldConfig): void;
package/logger.js ADDED
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logInitStep = exports.logInputFile = exports.log = void 0;
7
+ const types_1 = require("./types");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ function log(config, level, ...obj) {
10
+ if (config.quiet || config.verbose === types_1.LogLevel.None || level < (config.verbose ?? types_1.LogLevel.Info)) {
11
+ return;
12
+ }
13
+ const levelColor = {
14
+ [types_1.LogLevel.None]: "reset",
15
+ [types_1.LogLevel.Debug]: "blue",
16
+ [types_1.LogLevel.Info]: "dim",
17
+ [types_1.LogLevel.Warning]: "yellow",
18
+ [types_1.LogLevel.Error]: "red",
19
+ };
20
+ const chalkFn = chalk_1.default[levelColor[level]];
21
+ const key = level === types_1.LogLevel.Error ? "error" : level === types_1.LogLevel.Warning ? "warn" : "log";
22
+ const logFn = console[key];
23
+ logFn(...obj.map((i) => i instanceof Error
24
+ ? chalkFn(i, JSON.stringify(i, undefined, 1), i.stack)
25
+ : typeof i === "object"
26
+ ? chalkFn(JSON.stringify(i, undefined, 1))
27
+ : chalkFn(i)));
28
+ }
29
+ exports.log = log;
30
+ function logInputFile(config, { origTemplate, relPath, template, inputFilePath, nonGlobTemplate, basePath, isDirOrGlob, isGlob, }) {
31
+ log(config, types_1.LogLevel.Debug, `\nprocess.cwd(): ${process.cwd()}`, `\norigTemplate: ${origTemplate}`, `\nrelPath: ${relPath}`, `\ntemplate: ${template}`, `\ninputFilePath: ${inputFilePath}`, `\nnonGlobTemplate: ${nonGlobTemplate}`, `\nbasePath: ${basePath}`, `\nisDirOrGlob: ${isDirOrGlob}`, `\nisGlob: ${isGlob}`, `\n`);
32
+ }
33
+ exports.logInputFile = logInputFile;
34
+ function logInitStep(config) {
35
+ log(config, types_1.LogLevel.Debug, "Full config:", {
36
+ name: config.name,
37
+ templates: config.templates,
38
+ output: config.output,
39
+ createSubFolder: config.createSubFolder,
40
+ data: config.data,
41
+ overwrite: config.overwrite,
42
+ quiet: config.quiet,
43
+ subFolderNameHelper: config.subFolderNameHelper,
44
+ helpers: Object.keys(config.helpers ?? {}),
45
+ verbose: `${config.verbose} (${Object.keys(types_1.LogLevel).find((k) => types_1.LogLevel[k] === config.verbose)})`,
46
+ dryRun: config.dryRun,
47
+ beforeWrite: config.beforeWrite,
48
+ });
49
+ log(config, types_1.LogLevel.Info, "Data:", config.data);
50
+ }
51
+ exports.logInitStep = logInitStep;
52
+ //# sourceMappingURL=logger.js.map
package/logger.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "simple-scaffold",
3
- "version": "1.6.0",
3
+ "version": "1.7.0-develop.1",
4
4
  "description": "Generate any file structure - from single components to entire app boilerplates, with a single command.",
5
5
  "homepage": "https://chenasraf.github.io/simple-scaffold",
6
6
  "repository": "https://github.com/chenasraf/simple-scaffold.git",
7
- "author": "Chen Asraf <inbox@casraf.com>",
7
+ "author": "Chen Asraf <contact@casraf.dev>",
8
8
  "license": "MIT",
9
9
  "main": "index.js",
10
10
  "bin": "cmd.js",
package/parser.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ import { DefaultHelpers, Helper, ScaffoldConfig } from "./types";
3
+ export declare const defaultHelpers: Record<DefaultHelpers, Helper>;
4
+ export declare function _dateHelper(date: Date, formatString: string): string;
5
+ export declare function _dateHelper(date: Date, formatString: string, durationDifference: number, durationType: keyof Duration): string;
6
+ export declare function nowHelper(formatString: string): string;
7
+ export declare function nowHelper(formatString: string, durationDifference: number, durationType: keyof Duration): string;
8
+ export declare function dateHelper(date: string, formatString: string): string;
9
+ export declare function dateHelper(date: string, formatString: string, durationDifference: number, durationType: keyof Duration): string;
10
+ export declare function pascalCase(s: string): string;
11
+ export declare function registerHelpers(config: ScaffoldConfig): void;
12
+ export declare function handlebarsParse(config: ScaffoldConfig, templateBuffer: Buffer | string, { isPath }?: {
13
+ isPath?: boolean;
14
+ }): Buffer;