Skip to content

Commit 729abad

Browse files
committed
initial commit
0 parents  commit 729abad

File tree

8 files changed

+473
-0
lines changed

8 files changed

+473
-0
lines changed

.gitignore

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
lerna-debug.log*
8+
.pnpm-debug.log*
9+
10+
# Diagnostic reports (https://nodejs.org/api/report.html)
11+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12+
13+
# Runtime data
14+
pids
15+
*.pid
16+
*.seed
17+
*.pid.lock
18+
19+
# Directory for instrumented libs generated by jscoverage/JSCover
20+
lib-cov
21+
22+
# Coverage directory used by tools like istanbul
23+
coverage
24+
*.lcov
25+
26+
# nyc test coverage
27+
.nyc_output
28+
29+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30+
.grunt
31+
32+
# Bower dependency directory (https://bower.io/)
33+
bower_components
34+
35+
# node-waf configuration
36+
.lock-wscript
37+
38+
# Compiled binary addons (https://nodejs.org/api/addons.html)
39+
build/Release
40+
41+
# Dependency directories
42+
node_modules/
43+
jspm_packages/
44+
45+
# Snowpack dependency directory (https://snowpack.dev/)
46+
web_modules/
47+
48+
# TypeScript cache
49+
*.tsbuildinfo
50+
51+
# Optional npm cache directory
52+
.npm
53+
54+
# Optional eslint cache
55+
.eslintcache
56+
57+
# Optional stylelint cache
58+
.stylelintcache
59+
60+
# Microbundle cache
61+
.rpt2_cache/
62+
.rts2_cache_cjs/
63+
.rts2_cache_es/
64+
.rts2_cache_umd/
65+
66+
# Optional REPL history
67+
.node_repl_history
68+
69+
# Output of 'npm pack'
70+
*.tgz
71+
72+
# Yarn Integrity file
73+
.yarn-integrity
74+
75+
# dotenv environment variable files
76+
.env
77+
.env.development.local
78+
.env.test.local
79+
.env.production.local
80+
.env.local
81+
82+
# parcel-bundler cache (https://parceljs.org/)
83+
.cache
84+
.parcel-cache
85+
86+
# Next.js build output
87+
.next
88+
out
89+
90+
# Nuxt.js build / generate output
91+
.nuxt
92+
dist
93+
94+
# Gatsby files
95+
.cache/
96+
# Comment in the public line in if your project uses Gatsby and not Next.js
97+
# https://nextjs.org/blog/next-9-1#public-directory-support
98+
# public
99+
100+
# vuepress build output
101+
.vuepress/dist
102+
103+
# vuepress v2.x temp and cache directory
104+
.temp
105+
.cache
106+
107+
# Docusaurus cache and generated files
108+
.docusaurus
109+
110+
# Serverless directories
111+
.serverless/
112+
113+
# FuseBox cache
114+
.fusebox/
115+
116+
# DynamoDB Local files
117+
.dynamodb/
118+
119+
# TernJS port file
120+
.tern-port
121+
122+
# Stores VSCode versions used for testing VSCode extensions
123+
.vscode-test
124+
125+
# yarn v2
126+
.yarn/cache
127+
.yarn/unplugged
128+
.yarn/build-state.yml
129+
.yarn/install-state.gz
130+
.pnp.*

.pre-commit-hooks.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
- id: lessc
2+
name: lessc
3+
description: ""
4+
entry: "lessc-wrapper"
5+
language: node
6+
"types": ["less"]
7+
args: []
8+
require_serial: false
9+
minimum_pre_commit_version: '0'

.prettierrc.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
printWidth: 90
2+
tabWidth: 4
3+
semi: true
4+
trailingComma: "none"
5+
singleQuote: false
6+
quoteProps: consistent
7+
bracketSpacing: false

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 Gina Häußge
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# pre-commit-lessc
2+
3+
pre-commit compatible wrapper for lessc.
4+
5+
Will turn a list of attached `.less` files into single calls of `lessc` with `source` and `target` files instead.
6+
7+
The relative output path for the `target` is generated from the `less` path and can be controlled through the
8+
`--wrapper-output` command line option, see below.
9+
10+
## Usage
11+
12+
``` yaml
13+
- repo: https://github.com/OctoPrint/pre-commit-lessc
14+
rev: 4.2.0
15+
hooks:
16+
- id: lessc
17+
args: ["--wrapper-quiet", "--clean-css=--s1 --advanced --compatibility=ie8"]
18+
additional_dependencies: ["less-plugin-clean-css"]
19+
files: ^(src/octoprint/static/less/(octoprint|recovery|login)\.less|src/octoprint/plugins/.*/static/less/.*\.less$)
20+
```
21+
22+
### Available command line options
23+
24+
The wrapper's command line options are all prefixed with `--wrapper-`. Anything not prefixed that way will be
25+
forwarded directly to the `lessc` call.
26+
27+
- `--wrapper-output`: Relative output for the generated css files, defaults to `../css`
28+
- `--wrapper-quiet`: Suppress logging (unless there's a runtime error)
29+
30+
## License
31+
32+
MIT

lessc-wrapper.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/usr/bin/env node
2+
3+
const path = require("path");
4+
const child_process = require("child_process");
5+
6+
let relativeOutputDir = "../css";
7+
let quiet = false;
8+
9+
const lessArgs = [];
10+
const lessFiles = [];
11+
12+
const [, , ...args] = process.argv;
13+
for (const arg of args) {
14+
if (arg.startsWith("--wrapper-")) {
15+
const parts = arg.substring("--wrapper-".length).split("=");
16+
const [key, value] = [parts.shift(), parts.join("=")];
17+
switch (key) {
18+
case "output": {
19+
relativeOutputDir = value;
20+
break;
21+
}
22+
case "quiet": {
23+
quiet = true;
24+
break;
25+
}
26+
}
27+
} else if (arg.startsWith("--")) {
28+
lessArgs.push(arg);
29+
} else {
30+
lessFiles.push(arg);
31+
}
32+
}
33+
34+
if (!quiet) {
35+
console.log(`less args: ${lessArgs}`);
36+
console.log(`less files: ${lessFiles}`);
37+
console.log(`relative output dir: ${relativeOutputDir}`);
38+
console.log("");
39+
}
40+
41+
const lessc = path.join(__dirname, "node_modules", ".bin", "lessc");
42+
for (const less of lessFiles) {
43+
const p = path.parse(less);
44+
const css = path.join(p.dir, relativeOutputDir, `${p.name}.css`);
45+
46+
const newArgs = [...lessArgs, less, css];
47+
48+
if (!quiet) console.log(`Running: lessc ${newArgs.join(" ")}`);
49+
try {
50+
const stdout = child_process.execFileSync(lessc, newArgs, {
51+
stdio: "pipe",
52+
encoding: "utf-8"
53+
});
54+
if (!quiet) console.log(stdout);
55+
} catch (err) {
56+
if (err.code) {
57+
// spawning failed
58+
console.error("Could spawn process: ${err.code}, ${err}");
59+
} else {
60+
const {stdout, stderr} = err;
61+
if (stdout) console.log(stdout);
62+
if (stderr) console.error(stderr);
63+
}
64+
}
65+
}

0 commit comments

Comments
 (0)