Coverage for /Users/davegaeddert/Developer/dropseed/plain/plain-tailwind/plain/tailwind/cli.py: 25%
64 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-23 11:16 -0600
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-23 11:16 -0600
1import os
3import click
5from plain.packages import packages
6from plain.runtime import APP_PATH
8from .core import Tailwind
11@click.group("tailwind")
12def cli():
13 """Tailwind CSS"""
14 pass
17@cli.command()
18def init():
19 """Install Tailwind, create a tailwind.config.js and app/assets/src/tailwind.css"""
20 tailwind = Tailwind()
22 tailwind_installed = tailwind.is_installed()
24 if not tailwind_installed:
25 # Need to do an initial download to run init
26 tailwind.download()
28 # Config needs to exist first so we can save the version here
29 if not tailwind.config_exists():
30 click.secho("Creating Tailwind config...", bold=True)
31 tailwind.create_config()
33 if not tailwind_installed:
34 # Mostly need to save the version to config...
35 click.secho("Installing Tailwind standalone...", bold=True, nl=False)
36 version = tailwind.install()
37 click.secho(f"Tailwind {version} installed", fg="green")
39 if not tailwind.src_css_exists():
40 click.secho("Creating Tailwind source CSS...", bold=True)
41 tailwind.create_src_css()
44@cli.command()
45@click.option("--watch", is_flag=True)
46@click.option("--minify", is_flag=True)
47def compile(watch, minify):
48 """Compile a Tailwind CSS file"""
49 tailwind = Tailwind()
51 if not tailwind.is_installed() or tailwind.needs_update():
52 version_to_install = tailwind.get_version_from_config()
53 if version_to_install:
54 click.secho(
55 f"Installing Tailwind standalone {version_to_install}...",
56 bold=True,
57 nl=False,
58 )
59 version = tailwind.install(version_to_install)
60 else:
61 click.secho("Installing Tailwind standalone...", bold=True, nl=False)
62 version = tailwind.install()
63 click.secho(f"Tailwind {version} installed", fg="green")
65 args = []
66 args.append("-i")
67 print(f"Input: {tailwind.src_css_path}")
68 args.append(tailwind.src_css_path)
70 args.append("-o")
71 print(f"Output: {tailwind.dist_css_path}")
72 args.append(tailwind.dist_css_path)
74 # These paths should actually work on Windows too
75 # https://github.com/mrmlnc/fast-glob#how-to-write-patterns-on-windows
76 args.append("--content")
77 paths = [
78 os.path.relpath(APP_PATH) + "/**/*.{html,js}",
79 ]
81 # Add paths from installed packages
82 for package_config in packages.get_package_configs():
83 paths.append(os.path.relpath(package_config.path) + "/**/*.{html,js}")
85 content = ",".join(paths)
86 print(f"Content: {content}")
87 args.append(content)
89 if watch:
90 args.append("--watch")
92 if minify:
93 args.append("--minify")
95 tailwind.invoke(*args, cwd=os.path.dirname(APP_PATH))
98@cli.command()
99def update():
100 """Update the Tailwind CSS version"""
101 tailwind = Tailwind()
102 click.secho("Installing Tailwind standalone...", bold=True, nl=True)
103 version = tailwind.install()
104 click.secho(f"Tailwind {version} installed", fg="green")
107if __name__ == "__main__":
108 cli()