diff --git a/dev.py b/dev.py index dc83d35..97f4370 100644 --- a/dev.py +++ b/dev.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + """ usage: dev.py [-h] (-v | -d | -c | -run-vagrant | -run-docker | -no-container) [--with-docs] [--with-npm-settings] @@ -27,6 +29,7 @@ Copyright (c) 2017, Django MarkdownX - Adi, Pouria Hadjibagheri. """ # Python's internal libraries: +from __future__ import unicode_literals from os.path import join as join_path, dirname, abspath, exists, splitext from os import remove, chmod, stat from stat import S_IEXEC @@ -177,13 +180,19 @@ def create_files(name): st = stat(absolute_path) chmod(absolute_path, st.st_mode | S_IEXEC) - contents_xml.write( - file_or_filename=XML_FILE_ABSOLUTE_PATH, - xml_declaration=True, - encoding='unicode', - method='xml' - ) - + try: + contents_xml.write( + file_or_filename=XML_FILE_ABSOLUTE_PATH, + xml_declaration=True, + encoding='unicode', + method='xml' + ) + except LookupError: + contents_xml.write( + file_or_filename=XML_FILE_ABSOLUTE_PATH, + xml_declaration=True, + method='xml' + ) return True @@ -236,13 +245,19 @@ def clean(): delete(absolute_path, display_path) - contents_xml.write( - file_or_filename=XML_FILE_ABSOLUTE_PATH, - xml_declaration=True, - encoding='unicode', - method='xml' - ) - + try: + contents_xml.write( + file_or_filename=XML_FILE_ABSOLUTE_PATH, + xml_declaration=True, + encoding='unicode', + method='xml' + ) + except LookupError: + contents_xml.write( + file_or_filename=XML_FILE_ABSOLUTE_PATH, + xml_declaration=True, + method='xml' + ) return True diff --git a/dev.xml b/dev.xml index feab1cc..eb106ca 100644 --- a/dev.xml +++ b/dev.xml @@ -1,313 +1 @@ - -Vagrantfile - Vagrant.configure("2") do |config| - - config.vm.box = "bento/ubuntu-16.04" - config.vm.synced_folder ".", "/vagrant", disabled: true - config.vm.synced_folder "../django-markdownx", "/srv/django-markdownx", create: true - config.vm.provision :shell, :path => "bootstrap.sh", privileged: false - config.vm.network :forwarded_port, guest: 8000, host: 8000 - config.vm.hostname = "django-markdownx" - config.ssh.forward_agent = true - - config.vm.provider "virtualbox" do |vb| - vb.name = "django-markdownx" - vb.gui = true - vb.customize ["modifyvm", :id, - "--memory", "512", - "--ioapic", "on", - "--cpus", "2"] - end -end - - bootstrap.sh - #!/usr/bin/env bash - -# NOTE: Python alias -alias python=python3 - -# NOTE: Install dependencies -sudo apt-get update -y -sudo apt-get install -y gettext build-essential pkg-config nodejs-legacy npm python3-dev libjpeg-dev zlib1g-dev python-virtualenv virtualenvwrapper - -# NOTE: Install virtual environment -source /etc/bash_completion.d/virtualenvwrapper -mkvirtualenv --python=/usr/bin/python3 --no-site-packages --unzip-setuptools django-markdownx -pip install --upgrade pip -pip install -r /srv/django-markdownx/requirements.txt - -# NOTE: Folders -sudo chown vagrant:vagrant /srv - -# NOTE: Bash -sudo sed -i '$a cd /srv/django-markdownx/' ~/.bashrc -sudo sed -i '$a workon django-markdownx' ~/.bashrc - -# NOTE: Install Node modules, compile static files and run migrations -cd /srv/django-markdownx/ -npm install -npm run dist -python manage.py migrate - -echo -e '\e[33;1;5mDONE!\e[0m \e[33;1;3m Connect using "vagrant ssh" \e[0m' - - package.json - { - "name": "django-markdownx", - "description": "Django Markdownx frontend (JavaScript).", - "version": "2.0.0", - "author": "Adi, Pouria Hadjibagheri", - "license": "2-clause BSD", - "engines": { - "node": ">=0.10", - "npm": ">=1.3" - }, - - "devDependencies": { - "watch": "~1", - "typescript": "~2.2", - "uglify-js": "~2.7", - "browserify": "~14.1", - "clean-css-cli": "~4" - }, - - "config": { - "tsfolder": "markdownx/.static/markdownx/js", - "jsoutput": "markdownx/static/markdownx/js", - - "cssfolder": "markdownx/.static/markdownx/admin/css", - "cssoutput": "markdownx/static/markdownx/admin/css" - }, - - "scripts": { - "build:ts": "tsc -p $npm_package_config_tsfolder/tsconfig.json", - "build:js": "npm run build:ts && browserify $npm_package_config_tsfolder/markdownx.js -o $npm_package_config_jsoutput/markdownx.js && uglifyjs $npm_package_config_jsoutput/markdownx.js -o $npm_package_config_jsoutput/markdownx.js --beautify --stats", - "build:css": "cleancss $npm_package_config_cssfolder/markdownx.css -o $npm_package_config_cssoutput/markdownx.css --format beautify --debug", - "build": "npm run build:js && npm run build:css", - - "dist:js": "npm run build:ts && browserify $npm_package_config_tsfolder/markdownx.js -o $npm_package_config_jsoutput/markdownx.js && uglifyjs $npm_package_config_jsoutput/markdownx.js -o $npm_package_config_jsoutput/markdownx.min.js --screw-ie8 --mangle --stats", - "dist:css": "npm run build:css && cleancss $npm_package_config_cssfolder/markdownx.css -o $npm_package_config_cssoutput/markdownx.min.css --compatibility ie9 --debug", - "dist": "npm run dist:js && npm run dist:css", - - "watch:js": "watch 'npm run build:js' $npm_package_config_tsfolder -d -u", - "watch:css": "watch 'npm run build:css' $npm_package_config_cssfolder -d -u" - } -} - - runtests.py - from __future__ import absolute_import - -import os -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), 'markdownx')) - -import django -from django.conf import settings - -configure_settings = { - 'DATABASES': { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': ':memory:', - } - }, - 'INSTALLED_APPS': [ - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.staticfiles', - 'markdownx', - ], - 'DEBUG': False, - 'STATIC_URL': '/static/', - 'TEMPLATES': [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [ - os.path.join(os.path.abspath(os.path.dirname(__file__)), 'markdownx/tests/templates'), - ], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.contrib.auth.context_processors.auth', - 'django.template.context_processors.debug', - 'django.template.context_processors.i18n', - 'django.template.context_processors.media', - 'django.template.context_processors.static', - 'django.template.context_processors.tz', - 'django.contrib.messages.context_processors.messages', - ], - 'debug': True, - }, - }, - ], - 'ROOT_URLCONF': 'tests.urls', -} - -settings.configure(**configure_settings) -django.setup() - -from django.test.utils import get_runner -test_runner = get_runner(settings) -failures = test_runner( - verbosity=1, - interactive=False, - failfast=False).run_tests(['tests']) -sys.exit(failures) - - - Makefile - # Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = DjangoMarkdownx -SOURCEDIR = docs-src -BUILDDIR = docs - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - - create_docs.sh - #!/usr/bin/env bash - -# Compile the docs. -make clean -make html - -mv ./docs/html/* ./docs/ - -# Open in the browser. -URL="docs/index.html" - -echo "Documentations index file: $URL" - -[[ -x $BROWSER ]] && exec "$BROWSER" "$URL" -path=$(which xdg-open || which gnome-open || which open) && exec "$path" "$URL" -echo "Built the docs - but couldn't find a browser to open them." - - - - manage.py - #!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testapp.settings") - try: - from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise - execute_from_command_line(sys.argv) - - Dockerfile - FROM python:3.6 -ENV PYTHONUNBUFFERED 1 -RUN mkdir /markdownx -WORKDIR /markdownx -ADD requirements.txt /markdownx/ -RUN python3.6 -m pip install -U setuptools -RUN python3.6 -m pip install -r requirements.txt -ADD . /markdownx/ - - docker-compose.yml - version: '2' -services: - web: - restart: always - build: . - command: python3.6 manage.py runserver 0.0.0.0:8000 - volumes: - - .:/markdownx - ports: - - "8000:8000" - - mem_limit: 500m - cpuset: "1" - - runtests.py - from __future__ import absolute_import - -import os -import sys - -sys.path.append(os.path.join(os.path.dirname(__file__), 'markdownx')) - -import django -from django.conf import settings - -configure_settings = { - 'DATABASES': { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': ':memory:', - } - }, - 'INSTALLED_APPS': [ - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.staticfiles', - 'markdownx', - ], - 'DEBUG': False, - 'STATIC_URL': '/static/', - 'TEMPLATES': [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [ - os.path.join(os.path.abspath(os.path.dirname(__file__)), 'markdownx/tests/templates'), - ], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.contrib.auth.context_processors.auth', - 'django.template.context_processors.debug', - 'django.template.context_processors.i18n', - 'django.template.context_processors.media', - 'django.template.context_processors.static', - 'django.template.context_processors.tz', - 'django.contrib.messages.context_processors.messages', - ], - 'debug': True, - }, - }, - ], - 'ROOT_URLCONF': 'tests.urls', -} - -settings.configure(**configure_settings) -django.setup() - -from django.test.utils import get_runner -test_runner = get_runner(settings) -failures = test_runner( - verbosity=1, - interactive=False, - failfast=False).run_tests(['tests']) -sys.exit(failures) - - \ No newline at end of file +