@shadsapp/cli 0.1.0
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/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +18 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/themes.d.ts +3 -0
- package/dist/commands/themes.d.ts.map +1 -0
- package/dist/commands/themes.js +23 -0
- package/dist/commands/themes.js.map +1 -0
- package/dist/commands/validate.d.ts +2 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +17 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/project.d.ts +7 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +29 -0
- package/dist/project.js.map +1 -0
- package/package.json +24 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { THEME_SCHEMA } from "@shadsapp/schema";
|
|
3
|
+
import { runInstall } from "./commands/install.js";
|
|
4
|
+
import { runThemesImport, runThemesList } from "./commands/themes.js";
|
|
5
|
+
import { runValidate } from "./commands/validate.js";
|
|
6
|
+
function printHelp() {
|
|
7
|
+
console.log(`shads — theme tooling for shadcn/ui projects
|
|
8
|
+
|
|
9
|
+
Usage:
|
|
10
|
+
shads install -t <theme> Install theme files into the current project
|
|
11
|
+
shads themes list List public starter themes
|
|
12
|
+
shads themes import <theme> Import a public theme into the current project
|
|
13
|
+
shads validate <file> Validate a theme.json document
|
|
14
|
+
shads schema Print the active theme document schema id
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
npx @shadsapp/cli install -t workspace
|
|
18
|
+
npx @shadsapp/cli themes import workspace
|
|
19
|
+
npx @shadsapp/cli validate theme.json
|
|
20
|
+
`);
|
|
21
|
+
}
|
|
22
|
+
async function main() {
|
|
23
|
+
const [command, subcommand, ...rest] = process.argv.slice(2);
|
|
24
|
+
if (!command || command === "--help" || command === "-h") {
|
|
25
|
+
printHelp();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (command === "schema") {
|
|
29
|
+
console.log(THEME_SCHEMA);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (command === "validate") {
|
|
33
|
+
const filePath = subcommand;
|
|
34
|
+
if (!filePath) {
|
|
35
|
+
console.error("Missing file path. Usage: shads validate <file>");
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
runValidate(filePath);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (command === "install") {
|
|
43
|
+
let themeId = "workspace";
|
|
44
|
+
for (let index = 0; index < rest.length; index += 1) {
|
|
45
|
+
const token = rest[index];
|
|
46
|
+
if (token === "-t" || token === "--theme") {
|
|
47
|
+
themeId = rest[index + 1] ?? themeId;
|
|
48
|
+
index += 1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (subcommand === "-t" || subcommand === "--theme") {
|
|
52
|
+
themeId = rest[0] ?? themeId;
|
|
53
|
+
}
|
|
54
|
+
else if (subcommand && !subcommand.startsWith("-")) {
|
|
55
|
+
themeId = subcommand;
|
|
56
|
+
}
|
|
57
|
+
await runInstall(themeId);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (command === "themes") {
|
|
61
|
+
if (!subcommand || subcommand === "list") {
|
|
62
|
+
runThemesList();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (subcommand === "import") {
|
|
66
|
+
const themeId = rest[0];
|
|
67
|
+
if (!themeId) {
|
|
68
|
+
console.error("Missing theme id. Usage: shads themes import <theme>");
|
|
69
|
+
process.exitCode = 1;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
await runThemesImport(themeId);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
console.error(`Unknown command: ${command}`);
|
|
77
|
+
printHelp();
|
|
78
|
+
process.exitCode = 1;
|
|
79
|
+
}
|
|
80
|
+
main().catch((error) => {
|
|
81
|
+
console.error(error instanceof Error ? error.message : error);
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAOA,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { getTheme } from "@shadsapp/themes";
|
|
4
|
+
import { resolveProjectPaths } from "../project.js";
|
|
5
|
+
export async function runInstall(themeId) {
|
|
6
|
+
const bundle = getTheme(themeId);
|
|
7
|
+
const paths = resolveProjectPaths();
|
|
8
|
+
mkdirSync(dirname(paths.themeJson), { recursive: true });
|
|
9
|
+
mkdirSync(dirname(paths.themeCss), { recursive: true });
|
|
10
|
+
writeFileSync(paths.themeJson, `${bundle.themeJson}\n`, "utf8");
|
|
11
|
+
writeFileSync(paths.themeCss, `${bundle.themeCss}\n`, "utf8");
|
|
12
|
+
console.log(`Installed ${bundle.meta.label} theme`);
|
|
13
|
+
console.log(` ${paths.themeJson}`);
|
|
14
|
+
console.log(` ${paths.themeCss}`);
|
|
15
|
+
console.log("");
|
|
16
|
+
console.log("Next: import the CSS in your app entry and open https://shads.app");
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;IAEnC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvD,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/D,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,MAAM,CAAC,CAAA;IAE7D,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAA;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;AAClF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/commands/themes.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { getTheme, listThemes } from "@shadsapp/themes";
|
|
4
|
+
import { resolveProjectPaths } from "../project.js";
|
|
5
|
+
export function runThemesList() {
|
|
6
|
+
const themes = listThemes();
|
|
7
|
+
console.log("Available public themes:\n");
|
|
8
|
+
for (const theme of themes) {
|
|
9
|
+
console.log(` ${theme.id.padEnd(12)} ${theme.label} — ${theme.description}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export async function runThemesImport(themeId) {
|
|
13
|
+
const bundle = getTheme(themeId);
|
|
14
|
+
const paths = resolveProjectPaths();
|
|
15
|
+
mkdirSync(dirname(paths.themeJson), { recursive: true });
|
|
16
|
+
mkdirSync(dirname(paths.themeCss), { recursive: true });
|
|
17
|
+
writeFileSync(paths.themeJson, `${bundle.themeJson}\n`, "utf8");
|
|
18
|
+
writeFileSync(paths.themeCss, `${bundle.themeCss}\n`, "utf8");
|
|
19
|
+
console.log(`Imported ${bundle.meta.label}`);
|
|
20
|
+
console.log(` ${paths.themeJson}`);
|
|
21
|
+
console.log(` ${paths.themeCss}`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/commands/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;IAEnC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvD,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/D,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,MAAM,CAAC,CAAA;IAE7D,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAelD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { parseThemeDocumentInput } from "@shadsapp/schema";
|
|
3
|
+
export function runValidate(filePath) {
|
|
4
|
+
const source = readFileSync(filePath, "utf8");
|
|
5
|
+
const result = parseThemeDocumentInput(source);
|
|
6
|
+
if (!result.ok) {
|
|
7
|
+
console.error(`Invalid theme document: ${filePath}`);
|
|
8
|
+
for (const error of result.errors) {
|
|
9
|
+
console.error(` - ${error}`);
|
|
10
|
+
}
|
|
11
|
+
process.exitCode = 1;
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const name = result.document.name ?? "(unnamed)";
|
|
15
|
+
console.log(`Valid theme document: ${name}`);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAE9C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAA;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,GAAG,SAAgB,GAAG,YAAY,CA+BrE"}
|
package/dist/project.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export function resolveProjectPaths(cwd = process.cwd()) {
|
|
4
|
+
const candidates = [
|
|
5
|
+
{
|
|
6
|
+
themeJson: join(cwd, "theme.json"),
|
|
7
|
+
themeCss: join(cwd, "src/styles/theme.css"),
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
themeJson: join(cwd, "theme.json"),
|
|
11
|
+
themeCss: join(cwd, "styles/theme.css"),
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
themeJson: join(cwd, "src/theme.json"),
|
|
15
|
+
themeCss: join(cwd, "src/styles/theme.css"),
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
const existing = candidates.find((candidate) => existsSync(candidate.themeJson) || existsSync(candidate.themeCss));
|
|
19
|
+
const fallback = candidates[0] ?? {
|
|
20
|
+
themeJson: join(cwd, "theme.json"),
|
|
21
|
+
themeCss: join(cwd, "src/styles/theme.css"),
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
cwd,
|
|
25
|
+
themeJson: existing?.themeJson ?? fallback.themeJson,
|
|
26
|
+
themeCss: existing?.themeCss ?? fallback.themeCss,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAQhC,MAAM,UAAU,mBAAmB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrD,MAAM,UAAU,GAAG;QACjB;YACE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC;SAC5C;QACD;YACE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC;SACxC;QACD;YACE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC;SAC5C;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAC9B,CAAC,SAAS,EAAE,EAAE,CACZ,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CACpE,CAAA;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI;QAChC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;QAClC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC;KAC5C,CAAA;IAED,OAAO;QACL,GAAG;QACH,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;QACpD,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ;KAClD,CAAA;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@shadsapp/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for installing and importing shads themes",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"shads": "./dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc -p tsconfig.json",
|
|
15
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@shadsapp/schema": "0.1.0",
|
|
19
|
+
"@shadsapp/themes": "0.1.0"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
}
|
|
24
|
+
}
|