Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed pip install cssbeautifier #1830

Merged
merged 2 commits into from
Aug 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ gh-pages
gh

*.pyc
python/setup.py
python/*/__pycache__
python/MANIFEST
python/build
Expand Down
14 changes: 11 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,17 @@ js/lib/*.js: $(BUILD_DIR)/node $(BUILD_DIR)/generate $(wildcard js/src/*) $(wild


# python package generation
python/dist/*: $(BUILD_DIR)/python $(wildcard python/**/*.py) python/jsbeautifier/*
python/dist/*: $(BUILD_DIR)/python $(wildcard python/**/*.py) python/jsbeautifier/* python/cssbeautifier/*
@echo Building python package...
rm -f python/dist/*
@cd python && \
$(PYTHON) setup.py sdist
cp setup-js.py setup.py && \
$(PYTHON) setup.py sdist && \
rm setup.py
@cd python && \
cp setup-css.py setup.py && \
$(PYTHON) setup.py sdist && \
rm setup.py
$(SCRIPT_DIR)/python-rel pip install -U python/dist/*

# python package generation
Expand Down Expand Up @@ -121,9 +127,11 @@ $(BUILD_DIR)/node: package.json package-lock.json | $(BUILD_DIR)
$(NPM) --version
@touch $(BUILD_DIR)/node

$(BUILD_DIR)/python: python/setup.py | $(BUILD_DIR) $(BUILD_DIR)/virtualenv
$(BUILD_DIR)/python: python/setup-js.py python/setup-css.py | $(BUILD_DIR) $(BUILD_DIR)/virtualenv
@$(PYTHON) --version
@cp ./python/setup-js.py ./python/setup.py
$(SCRIPT_DIR)/python-dev pip install -e ./python
@rm ./python/setup.py
@touch $(BUILD_DIR)/python

$(BUILD_DIR)/virtualenv: | $(BUILD_DIR)
Expand Down
205 changes: 12 additions & 193 deletions python/cssbeautifier/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,210 +23,29 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

from __future__ import print_function
import sys
import os
import io
import re
import copy
import getopt
from jsbeautifier.__version__ import __version__
from jsbeautifier import isFileDifferent, mkdir_p
from cssbeautifier.css.options import BeautifierOptions
from cssbeautifier.css.beautifier import Beautifier


def default_options():
return BeautifierOptions()
_main = __import__("cssbeautifier", globals(), locals(), ["_main"])._main
return _main.default_options()


def beautify(string, opts=default_options()):
b = Beautifier(string, opts)
return b.beautify()
def beautify(string, opts=None):
_main = __import__("cssbeautifier", globals(), locals(), ["_main"])._main
return _main.beautify(string, opts)


def beautify_file(file_name, opts=default_options()):
if file_name == "-": # stdin
try:
if sys.stdin.isatty():
raise Exception()

stream = sys.stdin
except Exception:
print("Must pipe input or define input file.\n", file=sys.stderr)
usage(sys.stderr)
raise Exception()
else:
stream = open(file_name)

content = "".join(stream.readlines())
b = Beautifier(content, opts)
return b.beautify()
def beautify_file(file_name, opts=None):
_main = __import__("cssbeautifier", globals(), locals(), ["_main"])._main
return _main.beautify_file(file, opts)


def usage(stream=sys.stdout):

print(
"cssbeautifier.py@"
+ __version__
+ """

CSS beautifier (https://beautifier.io/)

Usage: cssbeautifier.py [options] <infile>

<infile> can be "-", which means stdin.

Input options:

-i, --stdin Read input from stdin

Output options:

-s, --indent-size=NUMBER Indentation size. (default 4).
-c, --indent-char=CHAR Character to indent with. (default space).
-e, --eol=STRING Character(s) to use as line terminators.
(default first newline in file, otherwise "\\n")
-t, --indent-with-tabs Indent with tabs, overrides -s and -c
--preserve-newlines Preserve existing line breaks.
--disable-selector-separator-newline
Do not print each selector on a separate line.
-b, --brace-style=collapse Brace style (collapse, expand)
-n, --end-with-newline End output with newline
--disable-newline-between-rules
Do not print empty line between rules.
--space-around-combinator Print spaces around combinator.
--indent-empty-lines Keep indentation on empty lines
-r, --replace Write output in-place, replacing input
-o, --outfile=FILE Specify a file to output to (default stdout)

Rarely needed options:

-h, --help, --usage Prints this help statement.
-v, --version Show the version

""",
file=stream,
)
if stream == sys.stderr:
return 1
else:
return 0
_main = __import__("cssbeautifier", globals(), locals(), ["_main"])._main
return _main._sage(stream)


def main():

argv = sys.argv[1:]

try:
opts, args = getopt.getopt(
argv,
"hvio:rs:c:e:tnb:",
[
"help",
"usage",
"version",
"stdin",
"outfile=",
"replace",
"indent-size=",
"indent-char=",
"eol=",
"indent-with-tabs",
"preserve-newlines",
"brace-style=",
"disable-selector-separator-newline",
"end-with-newline",
"disable-newline-between-rules",
"space-around-combinator",
"indent-empty-lines",
],
)
except getopt.GetoptError as ex:
print(ex, file=sys.stderr)
return usage(sys.stderr)

css_options = default_options()

file = None
outfile = "stdout"
replace = False
if len(args) == 1:
file = args[0]

for opt, arg in opts:
if opt in ("--stdin", "-i"):
file = "-"
elif opt in ("--outfile", "-o"):
outfile = arg
elif opt in ("--replace", "-r"):
replace = True
elif opt in ("--version", "-v"):
return print(__version__)
elif opt in ("--help", "--usage", "-h"):
return usage()

elif opt in ("--indent-size", "-s"):
css_options.indent_size = int(arg)
elif opt in ("--indent-char", "-c"):
css_options.indent_char = arg
elif opt in ("--eol", "-e"):
css_options.eol = arg
elif opt in ("--indent-with-tabs", "-t"):
css_options.indent_with_tabs = True
elif opt in ("--preserve-newlines"):
css_options.preserve_newlines = True
elif opt in ("--disable-selector-separator-newline"):
css_options.selector_separator_newline = False
elif opt in ("--brace-style", "-b"):
css_options.brace_style = arg
elif opt in ("--end-with-newline", "-n"):
css_options.end_with_newline = True
elif opt in ("--disable-newline-between-rules"):
css_options.newline_between_rules = False
elif opt in ("--space-around-combinator"):
css_options.space_around_combinator = True
elif opt in ("--indent-empty-lines"):
css_options.indent_empty_lines = True

if not file:
file = "-"

try:
if outfile == "stdout" and replace and not file == "-":
outfile = file

pretty = beautify_file(file, css_options)

if outfile == "stdout":
# python automatically converts newlines in text to "\r\n" when on windows
# switch to binary to prevent this
if sys.platform == "win32":
import msvcrt

msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

sys.stdout.write(pretty)
else:
if isFileDifferent(outfile, pretty):
mkdir_p(os.path.dirname(outfile))

# python automatically converts newlines in text to "\r\n" when on windows
# set newline to empty to prevent this
with io.open(outfile, "wt", newline="") as f:
print("writing " + outfile, file=sys.stderr)
try:
f.write(pretty)
except TypeError:
# This is not pretty, but given how we did the version import
# it is the only way to do this without having setup.py
# fail on a missing six dependency.
six = __import__("six")
f.write(six.u(pretty))

except Exception as ex:
print(ex, file=sys.stderr)
return 1

# Success
return 0
_main = __import__("cssbeautifier", globals(), locals(), ["_main"])._main
return _main.main()
Loading