summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-web-compile.spec1118
-rw-r--r--sources1
3 files changed, 1120 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..d09aa03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/web-compile-0.2.3.tar.gz
diff --git a/python-web-compile.spec b/python-web-compile.spec
new file mode 100644
index 0000000..eceb15f
--- /dev/null
+++ b/python-web-compile.spec
@@ -0,0 +1,1118 @@
+%global _empty_manifest_terminate_build 0
+Name: python-web-compile
+Version: 0.2.3
+Release: 1
+Summary: A CLI to compile/minify SCSS & JS, and associated pre-commit hook.
+License: MIT
+URL: https://github.com/executablebooks/web-compile
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/dc/dc/40110ddaad2bb34585596b26ec127b35cd4253725a8faef7fac32cf057e9/web-compile-0.2.3.tar.gz
+BuildArch: noarch
+
+Requires: python3-click
+Requires: python3-jinja2
+Requires: python3-libsass
+Requires: python3-gitpython
+Requires: python3-pyyaml
+Requires: python3-rjsmin
+Requires: python3-toml
+Requires: python3-pytest
+
+%description
+# web-compile
+
+[![PyPI][pypi-badge]][pypi-link]
+
+A CLI to compile/minify SCSS & JS, and associated pre-commit hook.
+
+This CLI is a small wrapper around [libsass-python](https://github.com/sass/libsass-python),
+[rJSmin](http://opensource.perlig.de/rjsmin/) and [jinja2](https://jinja.palletsprojects.com),
+which also aims to be compatible with [pre-commit](https://pre-commit.com/),
+and provide a pre-commit hook.
+
+**NOTE**: The package in on alpha release, but looks to be working as intended,
+and will be trialled in [sphinx-panels](https://github.com/executablebooks/sphinx-panels),
+and then [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme).
+
+[pypi-badge]: https://img.shields.io/pypi/v/web-compile.svg
+[pypi-link]: https://pypi.org/project/web-compile
+
+## Installation
+
+To use directly as a CLI:
+
+```console
+pip install web-compile
+web-compile --help
+```
+
+To use *via* pre-commit:
+
+Add to your `.pre-commit-config.yaml`
+
+```yaml
+- repo: https://github.com/executablebooks/web-compile
+ rev: v0.2.0
+ hooks:
+ - id: web-compile
+ # optional
+ args: [--config=config.yml]
+ files: >-
+ (?x)^(
+ web-compile-config.yml|
+ src/.*|
+ dist/.*
+ )$
+```
+
+By default, the hook will be initiated for all text file changes.
+But it is advisable to constrain this to the known configuration file, and input/output folders.
+
+## Configuration
+
+You can can configure the compilation directly *via* the CLI or using a configuration file;
+simply replace `-` with `_`, CLI takes priority over the file:
+
+```console
+$ web-compile --help
+Usage: web-compile [OPTIONS]
+
+ Compile web assets.
+
+Options:
+ --version Show the version and exit.
+ -c, --config FILE Allowed extensions: json, toml, yml, yaml
+ [default: web-compile-config.yml]
+
+ --sass-files DICT File mapping (config only)
+ --sass-format [nested|expanded|compact|compressed]
+ [default: compressed]
+ --sass-precision INTEGER precision for numbers. [default: 5]
+ --sass-sourcemap Output source map.
+ --sass-encoding TEXT [default: utf8]
+ --js-files DICT File mapping (config only)
+ --js-comments Keep comments starting with '/*!'.
+ --js-encoding TEXT [default: utf8]
+ --jinja-files DICT File mapping (config only)
+ --jinja-variables DICT Global variable mapping (config only)
+ --jinja-encoding TEXT [default: utf8]
+ --git-add / --no-git-add Add new files to git index. [default: True]
+ --continue-on-error Do not stop on the first error.
+ --exit-code INTEGER Exit code when files changed. [default: 3]
+ --test-run Do not delete/create any files.
+ -q, --quiet Remove stdout logging.
+ -v, --verbose Increase stdout logging.
+ --help Show this message and exit.
+```
+
+`--config` can point to any of three file-formats:
+
+`config.yml`/`config.yaml`:
+
+```yaml
+web-compile:
+ sass:
+ encoding: utf8
+ files:
+ tests/example_src/example1.scss: tests/example_dist/example1.[hash].css
+ tests/example_src/example2.scss: tests/example_dist/example2.[hash].css
+ format: compressed
+ precision: 5
+ sourcemap: true
+ js:
+ comments: false
+ encoding: utf8
+ files:
+ tests/example_src/example1.js: tests/example_dist/example1.[hash].js
+ jinja:
+ files:
+ tests/example_src/example1.j2: tests/example_dist/example1.txt
+ tests/example_src/example3.j2: tests/example_dist/example3.txt
+ variables:
+ a: b
+ continue_on_error: true
+ exit_code: 2
+ test_run: false
+ verbose: false
+ quiet: false
+```
+
+`config.toml`:
+
+```toml
+[web-compile]
+exit_code = 2
+verbose = false
+test_run = false
+continue_on_error = true
+quiet = false
+
+[web-compile.sass]
+precision = 5
+sourcemap = true
+format = "compressed"
+encoding = "utf8"
+
+[web-compile.js]
+comments = false
+encoding = "utf8"
+
+[web-compile.sass.files]
+"tests/example_src/example1.scss" = "tests/example_dist/example1.[hash].css"
+"tests/example_src/example2.scss" = "tests/example_dist/example2.[hash].css"
+
+[web-compile.js.files]
+"tests/example_src/example1.js" = "tests/example_dist/example1.[hash].js"
+
+[web-compile.jinja.files]
+"tests/example_src/example1.j2" = "tests/example_dist/example1.txt"
+"tests/example_src/example3.j2" = "tests/example_dist/example3.txt"
+
+[web-compile.jinja.variables]
+a = "b"
+```
+
+`config.json`:
+
+```json
+{
+ "web-compile": {
+ "sass": {
+ "files": {
+ "tests/example_src/example1.scss": "tests/example_dist/example1.[hash].css",
+ "tests/example_src/example2.scss": "tests/example_dist/example2.[hash].css"
+ },
+ "precision": 5,
+ "sourcemap": true,
+ "format": "compressed",
+ "encoding": "utf8"
+ },
+ "js": {
+ "files": {
+ "tests/example_src/example1.js": "tests/example_dist/example1.[hash].js"
+ },
+ "comments": false,
+ "encoding": "utf8"
+ },
+ "jinja": {
+ "files": {
+ "tests/example_src/example1.j2": "tests/example_dist/example1.txt",
+ "tests/example_src/example3.j2": "tests/example_dist/example3.txt"
+ },
+ "variables": {
+ "a": "b"
+ }
+ },
+ "exit_code": 2,
+ "verbose": false,
+ "test_run": false,
+ "continue_on_error": true,
+ "quiet": false
+ }
+}
+```
+
+## Usage
+
+### SCSS Compilation
+
+Simply map a source SCSS file to an output CSS filename.Paths should be relative to the configuration files and `@import` \ `@use`ed partial files will also be read:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.css
+```
+
+```console
+$ web-compile
+```
+
+```
+src/
+ _partial.scss
+ file.scss
+dist/
+ file.css
+```
+
+If you use the `sourcemap` option, then a sourcemap will also be output,
+and a `sourceMappingURL` comment added to the CSS:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.css
+ sourcemap: true
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.css
+ file.scss.map.json
+```
+
+If you add `[hash]` to the CSS filename, then it will be replaced with the content hash.
+Also, any existing files, matching the pattern, with a different hash will be removed:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.[hash].css
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.beabd761a3703567b4ce06c9a6adde55.css
+```
+
+### JavaScript
+
+Javascript files are minified and are configured similarly to SCSS.
+
+```yaml
+web-compile:
+ js:
+ files:
+ src/file.js: dist/file.[hash].js
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.beabd761a3703567b4ce06c9a6adde55.js
+```
+
+### Jinja Templates
+
+Files can be created from Jinja templates.
+These are created after the SCSS and JS files are compiled.
+In addition, they may be combined with two Jinja filters designed for this tool:
+
+- `compiled_name` will convert an input file path to the compiled file name.
+- `hash` will return the hash for a filename that can be inserted wherever you wish.
+
+`src/file.j2`:
+```jinja
+{{ "src/file.scss" | compiled_name }}
+{{ "src/file.scss" | compiled_name }}?digest={{ "src/file.scss" | hash }}
+{{ var1 }}
+```
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.[hash].css
+ jinja:
+ files:
+ src/file.j2: dist/file.txt
+ variables:
+ var1: other
+```
+
+```console
+$ web-compile
+```
+
+`dist/file.txt`:
+```
+file.beabd761a3703567b4ce06c9a6adde55.css
+file.beabd761a3703567b4ce06c9a6adde55.css?digest=beabd761a3703567b4ce06c9a6adde55
+other
+```
+
+## Development
+
+To run the tests:
+
+```console
+pip install tox
+tox -e py37
+```
+
+To test out the CLI:
+
+```console
+tox -e py37-cli
+```
+
+To test the pre-commit hook:
+
+```console
+tox -e try-repo
+```
+
+For code style:
+
+```console
+pip install pre-commit
+pre-commit run --all
+```
+
+
+
+
+%package -n python3-web-compile
+Summary: A CLI to compile/minify SCSS & JS, and associated pre-commit hook.
+Provides: python-web-compile
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-web-compile
+# web-compile
+
+[![PyPI][pypi-badge]][pypi-link]
+
+A CLI to compile/minify SCSS & JS, and associated pre-commit hook.
+
+This CLI is a small wrapper around [libsass-python](https://github.com/sass/libsass-python),
+[rJSmin](http://opensource.perlig.de/rjsmin/) and [jinja2](https://jinja.palletsprojects.com),
+which also aims to be compatible with [pre-commit](https://pre-commit.com/),
+and provide a pre-commit hook.
+
+**NOTE**: The package in on alpha release, but looks to be working as intended,
+and will be trialled in [sphinx-panels](https://github.com/executablebooks/sphinx-panels),
+and then [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme).
+
+[pypi-badge]: https://img.shields.io/pypi/v/web-compile.svg
+[pypi-link]: https://pypi.org/project/web-compile
+
+## Installation
+
+To use directly as a CLI:
+
+```console
+pip install web-compile
+web-compile --help
+```
+
+To use *via* pre-commit:
+
+Add to your `.pre-commit-config.yaml`
+
+```yaml
+- repo: https://github.com/executablebooks/web-compile
+ rev: v0.2.0
+ hooks:
+ - id: web-compile
+ # optional
+ args: [--config=config.yml]
+ files: >-
+ (?x)^(
+ web-compile-config.yml|
+ src/.*|
+ dist/.*
+ )$
+```
+
+By default, the hook will be initiated for all text file changes.
+But it is advisable to constrain this to the known configuration file, and input/output folders.
+
+## Configuration
+
+You can can configure the compilation directly *via* the CLI or using a configuration file;
+simply replace `-` with `_`, CLI takes priority over the file:
+
+```console
+$ web-compile --help
+Usage: web-compile [OPTIONS]
+
+ Compile web assets.
+
+Options:
+ --version Show the version and exit.
+ -c, --config FILE Allowed extensions: json, toml, yml, yaml
+ [default: web-compile-config.yml]
+
+ --sass-files DICT File mapping (config only)
+ --sass-format [nested|expanded|compact|compressed]
+ [default: compressed]
+ --sass-precision INTEGER precision for numbers. [default: 5]
+ --sass-sourcemap Output source map.
+ --sass-encoding TEXT [default: utf8]
+ --js-files DICT File mapping (config only)
+ --js-comments Keep comments starting with '/*!'.
+ --js-encoding TEXT [default: utf8]
+ --jinja-files DICT File mapping (config only)
+ --jinja-variables DICT Global variable mapping (config only)
+ --jinja-encoding TEXT [default: utf8]
+ --git-add / --no-git-add Add new files to git index. [default: True]
+ --continue-on-error Do not stop on the first error.
+ --exit-code INTEGER Exit code when files changed. [default: 3]
+ --test-run Do not delete/create any files.
+ -q, --quiet Remove stdout logging.
+ -v, --verbose Increase stdout logging.
+ --help Show this message and exit.
+```
+
+`--config` can point to any of three file-formats:
+
+`config.yml`/`config.yaml`:
+
+```yaml
+web-compile:
+ sass:
+ encoding: utf8
+ files:
+ tests/example_src/example1.scss: tests/example_dist/example1.[hash].css
+ tests/example_src/example2.scss: tests/example_dist/example2.[hash].css
+ format: compressed
+ precision: 5
+ sourcemap: true
+ js:
+ comments: false
+ encoding: utf8
+ files:
+ tests/example_src/example1.js: tests/example_dist/example1.[hash].js
+ jinja:
+ files:
+ tests/example_src/example1.j2: tests/example_dist/example1.txt
+ tests/example_src/example3.j2: tests/example_dist/example3.txt
+ variables:
+ a: b
+ continue_on_error: true
+ exit_code: 2
+ test_run: false
+ verbose: false
+ quiet: false
+```
+
+`config.toml`:
+
+```toml
+[web-compile]
+exit_code = 2
+verbose = false
+test_run = false
+continue_on_error = true
+quiet = false
+
+[web-compile.sass]
+precision = 5
+sourcemap = true
+format = "compressed"
+encoding = "utf8"
+
+[web-compile.js]
+comments = false
+encoding = "utf8"
+
+[web-compile.sass.files]
+"tests/example_src/example1.scss" = "tests/example_dist/example1.[hash].css"
+"tests/example_src/example2.scss" = "tests/example_dist/example2.[hash].css"
+
+[web-compile.js.files]
+"tests/example_src/example1.js" = "tests/example_dist/example1.[hash].js"
+
+[web-compile.jinja.files]
+"tests/example_src/example1.j2" = "tests/example_dist/example1.txt"
+"tests/example_src/example3.j2" = "tests/example_dist/example3.txt"
+
+[web-compile.jinja.variables]
+a = "b"
+```
+
+`config.json`:
+
+```json
+{
+ "web-compile": {
+ "sass": {
+ "files": {
+ "tests/example_src/example1.scss": "tests/example_dist/example1.[hash].css",
+ "tests/example_src/example2.scss": "tests/example_dist/example2.[hash].css"
+ },
+ "precision": 5,
+ "sourcemap": true,
+ "format": "compressed",
+ "encoding": "utf8"
+ },
+ "js": {
+ "files": {
+ "tests/example_src/example1.js": "tests/example_dist/example1.[hash].js"
+ },
+ "comments": false,
+ "encoding": "utf8"
+ },
+ "jinja": {
+ "files": {
+ "tests/example_src/example1.j2": "tests/example_dist/example1.txt",
+ "tests/example_src/example3.j2": "tests/example_dist/example3.txt"
+ },
+ "variables": {
+ "a": "b"
+ }
+ },
+ "exit_code": 2,
+ "verbose": false,
+ "test_run": false,
+ "continue_on_error": true,
+ "quiet": false
+ }
+}
+```
+
+## Usage
+
+### SCSS Compilation
+
+Simply map a source SCSS file to an output CSS filename.Paths should be relative to the configuration files and `@import` \ `@use`ed partial files will also be read:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.css
+```
+
+```console
+$ web-compile
+```
+
+```
+src/
+ _partial.scss
+ file.scss
+dist/
+ file.css
+```
+
+If you use the `sourcemap` option, then a sourcemap will also be output,
+and a `sourceMappingURL` comment added to the CSS:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.css
+ sourcemap: true
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.css
+ file.scss.map.json
+```
+
+If you add `[hash]` to the CSS filename, then it will be replaced with the content hash.
+Also, any existing files, matching the pattern, with a different hash will be removed:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.[hash].css
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.beabd761a3703567b4ce06c9a6adde55.css
+```
+
+### JavaScript
+
+Javascript files are minified and are configured similarly to SCSS.
+
+```yaml
+web-compile:
+ js:
+ files:
+ src/file.js: dist/file.[hash].js
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.beabd761a3703567b4ce06c9a6adde55.js
+```
+
+### Jinja Templates
+
+Files can be created from Jinja templates.
+These are created after the SCSS and JS files are compiled.
+In addition, they may be combined with two Jinja filters designed for this tool:
+
+- `compiled_name` will convert an input file path to the compiled file name.
+- `hash` will return the hash for a filename that can be inserted wherever you wish.
+
+`src/file.j2`:
+```jinja
+{{ "src/file.scss" | compiled_name }}
+{{ "src/file.scss" | compiled_name }}?digest={{ "src/file.scss" | hash }}
+{{ var1 }}
+```
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.[hash].css
+ jinja:
+ files:
+ src/file.j2: dist/file.txt
+ variables:
+ var1: other
+```
+
+```console
+$ web-compile
+```
+
+`dist/file.txt`:
+```
+file.beabd761a3703567b4ce06c9a6adde55.css
+file.beabd761a3703567b4ce06c9a6adde55.css?digest=beabd761a3703567b4ce06c9a6adde55
+other
+```
+
+## Development
+
+To run the tests:
+
+```console
+pip install tox
+tox -e py37
+```
+
+To test out the CLI:
+
+```console
+tox -e py37-cli
+```
+
+To test the pre-commit hook:
+
+```console
+tox -e try-repo
+```
+
+For code style:
+
+```console
+pip install pre-commit
+pre-commit run --all
+```
+
+
+
+
+%package help
+Summary: Development documents and examples for web-compile
+Provides: python3-web-compile-doc
+%description help
+# web-compile
+
+[![PyPI][pypi-badge]][pypi-link]
+
+A CLI to compile/minify SCSS & JS, and associated pre-commit hook.
+
+This CLI is a small wrapper around [libsass-python](https://github.com/sass/libsass-python),
+[rJSmin](http://opensource.perlig.de/rjsmin/) and [jinja2](https://jinja.palletsprojects.com),
+which also aims to be compatible with [pre-commit](https://pre-commit.com/),
+and provide a pre-commit hook.
+
+**NOTE**: The package in on alpha release, but looks to be working as intended,
+and will be trialled in [sphinx-panels](https://github.com/executablebooks/sphinx-panels),
+and then [sphinx-book-theme](https://github.com/executablebooks/sphinx-book-theme).
+
+[pypi-badge]: https://img.shields.io/pypi/v/web-compile.svg
+[pypi-link]: https://pypi.org/project/web-compile
+
+## Installation
+
+To use directly as a CLI:
+
+```console
+pip install web-compile
+web-compile --help
+```
+
+To use *via* pre-commit:
+
+Add to your `.pre-commit-config.yaml`
+
+```yaml
+- repo: https://github.com/executablebooks/web-compile
+ rev: v0.2.0
+ hooks:
+ - id: web-compile
+ # optional
+ args: [--config=config.yml]
+ files: >-
+ (?x)^(
+ web-compile-config.yml|
+ src/.*|
+ dist/.*
+ )$
+```
+
+By default, the hook will be initiated for all text file changes.
+But it is advisable to constrain this to the known configuration file, and input/output folders.
+
+## Configuration
+
+You can can configure the compilation directly *via* the CLI or using a configuration file;
+simply replace `-` with `_`, CLI takes priority over the file:
+
+```console
+$ web-compile --help
+Usage: web-compile [OPTIONS]
+
+ Compile web assets.
+
+Options:
+ --version Show the version and exit.
+ -c, --config FILE Allowed extensions: json, toml, yml, yaml
+ [default: web-compile-config.yml]
+
+ --sass-files DICT File mapping (config only)
+ --sass-format [nested|expanded|compact|compressed]
+ [default: compressed]
+ --sass-precision INTEGER precision for numbers. [default: 5]
+ --sass-sourcemap Output source map.
+ --sass-encoding TEXT [default: utf8]
+ --js-files DICT File mapping (config only)
+ --js-comments Keep comments starting with '/*!'.
+ --js-encoding TEXT [default: utf8]
+ --jinja-files DICT File mapping (config only)
+ --jinja-variables DICT Global variable mapping (config only)
+ --jinja-encoding TEXT [default: utf8]
+ --git-add / --no-git-add Add new files to git index. [default: True]
+ --continue-on-error Do not stop on the first error.
+ --exit-code INTEGER Exit code when files changed. [default: 3]
+ --test-run Do not delete/create any files.
+ -q, --quiet Remove stdout logging.
+ -v, --verbose Increase stdout logging.
+ --help Show this message and exit.
+```
+
+`--config` can point to any of three file-formats:
+
+`config.yml`/`config.yaml`:
+
+```yaml
+web-compile:
+ sass:
+ encoding: utf8
+ files:
+ tests/example_src/example1.scss: tests/example_dist/example1.[hash].css
+ tests/example_src/example2.scss: tests/example_dist/example2.[hash].css
+ format: compressed
+ precision: 5
+ sourcemap: true
+ js:
+ comments: false
+ encoding: utf8
+ files:
+ tests/example_src/example1.js: tests/example_dist/example1.[hash].js
+ jinja:
+ files:
+ tests/example_src/example1.j2: tests/example_dist/example1.txt
+ tests/example_src/example3.j2: tests/example_dist/example3.txt
+ variables:
+ a: b
+ continue_on_error: true
+ exit_code: 2
+ test_run: false
+ verbose: false
+ quiet: false
+```
+
+`config.toml`:
+
+```toml
+[web-compile]
+exit_code = 2
+verbose = false
+test_run = false
+continue_on_error = true
+quiet = false
+
+[web-compile.sass]
+precision = 5
+sourcemap = true
+format = "compressed"
+encoding = "utf8"
+
+[web-compile.js]
+comments = false
+encoding = "utf8"
+
+[web-compile.sass.files]
+"tests/example_src/example1.scss" = "tests/example_dist/example1.[hash].css"
+"tests/example_src/example2.scss" = "tests/example_dist/example2.[hash].css"
+
+[web-compile.js.files]
+"tests/example_src/example1.js" = "tests/example_dist/example1.[hash].js"
+
+[web-compile.jinja.files]
+"tests/example_src/example1.j2" = "tests/example_dist/example1.txt"
+"tests/example_src/example3.j2" = "tests/example_dist/example3.txt"
+
+[web-compile.jinja.variables]
+a = "b"
+```
+
+`config.json`:
+
+```json
+{
+ "web-compile": {
+ "sass": {
+ "files": {
+ "tests/example_src/example1.scss": "tests/example_dist/example1.[hash].css",
+ "tests/example_src/example2.scss": "tests/example_dist/example2.[hash].css"
+ },
+ "precision": 5,
+ "sourcemap": true,
+ "format": "compressed",
+ "encoding": "utf8"
+ },
+ "js": {
+ "files": {
+ "tests/example_src/example1.js": "tests/example_dist/example1.[hash].js"
+ },
+ "comments": false,
+ "encoding": "utf8"
+ },
+ "jinja": {
+ "files": {
+ "tests/example_src/example1.j2": "tests/example_dist/example1.txt",
+ "tests/example_src/example3.j2": "tests/example_dist/example3.txt"
+ },
+ "variables": {
+ "a": "b"
+ }
+ },
+ "exit_code": 2,
+ "verbose": false,
+ "test_run": false,
+ "continue_on_error": true,
+ "quiet": false
+ }
+}
+```
+
+## Usage
+
+### SCSS Compilation
+
+Simply map a source SCSS file to an output CSS filename.Paths should be relative to the configuration files and `@import` \ `@use`ed partial files will also be read:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.css
+```
+
+```console
+$ web-compile
+```
+
+```
+src/
+ _partial.scss
+ file.scss
+dist/
+ file.css
+```
+
+If you use the `sourcemap` option, then a sourcemap will also be output,
+and a `sourceMappingURL` comment added to the CSS:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.css
+ sourcemap: true
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.css
+ file.scss.map.json
+```
+
+If you add `[hash]` to the CSS filename, then it will be replaced with the content hash.
+Also, any existing files, matching the pattern, with a different hash will be removed:
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.[hash].css
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.beabd761a3703567b4ce06c9a6adde55.css
+```
+
+### JavaScript
+
+Javascript files are minified and are configured similarly to SCSS.
+
+```yaml
+web-compile:
+ js:
+ files:
+ src/file.js: dist/file.[hash].js
+```
+
+```console
+$ web-compile
+```
+
+```
+dist/
+ file.beabd761a3703567b4ce06c9a6adde55.js
+```
+
+### Jinja Templates
+
+Files can be created from Jinja templates.
+These are created after the SCSS and JS files are compiled.
+In addition, they may be combined with two Jinja filters designed for this tool:
+
+- `compiled_name` will convert an input file path to the compiled file name.
+- `hash` will return the hash for a filename that can be inserted wherever you wish.
+
+`src/file.j2`:
+```jinja
+{{ "src/file.scss" | compiled_name }}
+{{ "src/file.scss" | compiled_name }}?digest={{ "src/file.scss" | hash }}
+{{ var1 }}
+```
+
+```yaml
+web-compile:
+ sass:
+ files:
+ src/file.scss: dist/file.[hash].css
+ jinja:
+ files:
+ src/file.j2: dist/file.txt
+ variables:
+ var1: other
+```
+
+```console
+$ web-compile
+```
+
+`dist/file.txt`:
+```
+file.beabd761a3703567b4ce06c9a6adde55.css
+file.beabd761a3703567b4ce06c9a6adde55.css?digest=beabd761a3703567b4ce06c9a6adde55
+other
+```
+
+## Development
+
+To run the tests:
+
+```console
+pip install tox
+tox -e py37
+```
+
+To test out the CLI:
+
+```console
+tox -e py37-cli
+```
+
+To test the pre-commit hook:
+
+```console
+tox -e try-repo
+```
+
+For code style:
+
+```console
+pip install pre-commit
+pre-commit run --all
+```
+
+
+
+
+%prep
+%autosetup -n web-compile-0.2.3
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-web-compile -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.3-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..bc5ddde
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+26288e89214ede0ac4604fbb15149b4a web-compile-0.2.3.tar.gz