From 2fb54ce7172069566fa3e6d9b284bacd9c7ae2cf Mon Sep 17 00:00:00 2001 From: Glavin Wiechert Date: Tue, 9 Jan 2018 14:55:53 -0400 Subject: [PATCH 01/13] Add Twitter badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 951a101..040ec4e 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ [![Gitter](https://img.shields.io/gitter/room/Glavin001/atom-beautify.svg?style=flat-square)](https://gitter.im/Glavin001/atom-beautify) [![Bountysource](https://img.shields.io/bountysource/team/atom-beautify/activity.svg?style=flat-square)](https://www.bountysource.com/teams/atom-beautify) [![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify¤cy_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) +[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify) **Help improve Atom-Beautify by completing the questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** From 3a4f982bfe8f9f0e123f0039b182a882440db7d9 Mon Sep 17 00:00:00 2001 From: Glavin Wiechert Date: Tue, 9 Jan 2018 14:58:50 -0400 Subject: [PATCH 02/13] Add Twitter badge to README-template --- README-template.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-template.md b/README-template.md index bd514f3..ec5ab35 100644 --- a/README-template.md +++ b/README-template.md @@ -6,6 +6,7 @@ [![Gitter](https://img.shields.io/gitter/room/Glavin001/atom-beautify.svg?style=flat-square)](https://gitter.im/Glavin001/atom-beautify) [![Bountysource](https://img.shields.io/bountysource/team/atom-beautify/activity.svg?style=flat-square)](https://www.bountysource.com/teams/atom-beautify) [![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify¤cy_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) +[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify) **Help improve Atom-Beautify by completing the questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** From 615f4cff783e5f4a0aa05134cfe9a8d8ed4af10b Mon Sep 17 00:00:00 2001 From: Stephen Date: Fri, 5 Jan 2018 21:04:01 -0800 Subject: [PATCH 03/13] Cleanup build --- .travis.yml | 166 +++++++---------------------------- Brewfile | 12 +++ Gemfile | 6 ++ appveyor.yml | 123 +++----------------------- appveyor/install.ps1 | 180 -------------------------------------- appveyor/run_with_env.cmd | 47 ---------- atom-packages.txt | 9 ++ build-package.sh | 60 ++----------- composer.json | 5 ++ packages.config | 9 ++ requirements.txt | 4 + 11 files changed, 95 insertions(+), 526 deletions(-) create mode 100644 Brewfile create mode 100644 Gemfile delete mode 100644 appveyor/install.ps1 delete mode 100644 appveyor/run_with_env.cmd create mode 100644 atom-packages.txt create mode 100644 composer.json create mode 100644 packages.config create mode 100644 requirements.txt diff --git a/.travis.yml b/.travis.yml index f12cc1e..5da898d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,53 +11,22 @@ notifications: script: sh build-package.sh +cache: + timeout: 1000 + git: - depth: 10 + depth: 1 -php: - - '5.6' -python: - - '2.7' -go: - - release - -matrix: - include: - - os: linux - dist: trusty - sudo: required - services: - - docker - env: - - ATOM_CHANNEL=stable - - os: linux - dist: trusty - sudo: required - services: - - docker - env: - - ATOM_CHANNEL=beta - # - os: linux - # dist: trusty - # sudo: require - # env: - # - ATOM_CHANNEL=stable - # - os: linux - # dist: trusty - # sudo: require - # env: - # - ATOM_CHANNEL=beta - - os: osx - env: - - ATOM_CHANNEL=stable - # - os: osx - # env: - # - ATOM_CHANNEL=beta +os: + - linux + - osx +sudo: required env: global: - - APM_TEST_PACKAGES="language-marko language-html-swig language-svg language-d mavensmate-atom language-lua language-puppet fuse" - - PATH="/home/travis/gopath/bin:$HOME/.linuxbrew/bin:$PATH" + matrix: + - ATOM_SCRIPT_NAME=atom-beta APM_SCRIPT_NAME=apm-beta + - ATOM_SCRIPT_NAME=atom APM_SCRIPT_NAME=apm addons: apt: @@ -71,9 +40,7 @@ addons: - libgnome-keyring-dev - fakeroot - crystal - - ocaml - camlp4 - - opam - php5-cli - golang @@ -84,111 +51,38 @@ cache: - vendor/bundle # gems are installed here, https://docs.travis-ci.com/user/languages/ruby/#Dependency-Management - node_modules - $HOME/.atom - - $HOME/.stack + - $HOME/.opam before_install: - # Install Homebrew on Linux + # linux: Install Nix, Nix packages, upgrade pip, and install python packages + # osx: Update Homebrew, remove conflicting cask, brew bundle, symlink elm-format, + # upgrade pip, and install python packages - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - git clone --depth=1 https://github.com/Linuxbrew/brew.git ~/.linuxbrew || true; + curl https://nixos.org/nix/install | sh && + . ~/.nix-profile/etc/profile.d/nix.sh && + nix-env -i uncrustify R elm-format terraform atom atom-beta opam && + pip install --upgrade pip && + pip install --user -r requirements.txt; + elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then + brew update && brew cask zap oclint && brew bundle && + ln -s /usr/local/bin/elm-format-0.17 /usr/local/bin/elm-format && + pip2 install --upgrade pip && + pip2 install -r requirements.txt; + else + echo Error:TRAVIS_OS_NAME && exit 1; fi - # Update Homebrew - - brew update - - brew tap homebrew/dupes - - brew tap homebrew/versions # Ruby language support - # - gem install ruby-beautify --verbose - # - gem install rubocop - - gem install htmlbeautifier - - gem install puppet-lint - # Sass language support - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - gem install sass; - else - docker pull unibeautify/sass-convert; - fi - # Python language support - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - sudo chmod 777 -R /opt/python; - pip install --upgrade pip; - pip install --user --upgrade autopep8; - pip install --user --upgrade isort; - else - pip2 install --upgrade pip2; - pip2 install --upgrade autopep8; - pip2 install --upgrade isort; - fi - # SQL language support - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - pip install --user --upgrade sqlparse; - else - pip2 install --upgrade sqlparse; - fi - # Java, C, C++, C#, Objective-C, D, Pawn, Vala - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew install uncrustify; - else - docker pull unibeautify/uncrustify; - fi + - bundle install # R - - brew tap homebrew/science - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew install r; - rscript --version; - else - docker pull unibeautify/rscript; - fi + - Rscript --version # PHP - - brew tap homebrew/homebrew-php - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew install php56 || true; - brew gist-logs php56 || true; - echo -e "\n[Phar]\nphar.readonly = Off\n" >> /usr/local/etc/php/5.6/php.ini; - brew install php-cs-fixer || true; - brew gist-logs php-cs-fixer || true; - fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer; - chmod a+x php-cs-fixer; - mv php-cs-fixer $HOME/.linuxbrew/bin/php-cs-fixer; - fi + - composer install # CoffeeScript - npm install coffee-formatter - # Haskell - # - brew install haskell-stack - # - stack setup - # - stack install stylish-haskell - # Elm - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - curl -L -o /tmp/elm-format.tgz - https://github.com/avh4/elm-format/releases/download/0.7.0-exp/elm-format-0.17-0.7.0-exp-mac-x64.tgz; - tar xvzf /tmp/elm-format.tgz -C /usr/local/bin; - fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - curl -L -o /tmp/elm-format.tgz https://github.com/avh4/elm-format/releases/download/0.7.0-exp/elm-format-0.17-0.7.0-exp-linux-x64.tgz; - tar xvzf /tmp/elm-format.tgz -C $HOME/.linuxbrew/bin; - fi # OCaml - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew install ocaml; - brew install opam; - fi - opam init --auto-setup # Init environment variables for opam - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then eval `opam config env`; fi - opam install --yes ocp-indent - # Crystal - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install crystal-lang; fi - # Bash - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - pip install --user beautysh; - else - pip2 install beautysh; - fi - # terraform - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew install terraform; - else - docker pull hashicorp/terraform; - fi diff --git a/Brewfile b/Brewfile new file mode 100644 index 0000000..486f415 --- /dev/null +++ b/Brewfile @@ -0,0 +1,12 @@ +tap 'homebrew/science' +tap 'homebrew/php' +tap 'caskroom/versions' +brew 'uncrustify' +brew 'r' +brew 'composer' +brew 'opam' +brew 'crystal-lang' +brew 'terraform' +brew 'elm-format' +cask 'atom' +cask 'atom-beta' diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..4805589 --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source "https://rubygems.org" + +gem "rubocop" +gem "htmlbeautifier" +gem "puppet-lint" +gem "sass" diff --git a/appveyor.yml b/appveyor.yml index e3fb5d8..d82f7f6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,136 +10,35 @@ environment: # /E:ON and /V:ON options are not enabled in the batch script intepreter # See: http://stackoverflow.com/a/13751649/163740 CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_env.cmd" - - matrix: - - PYTHON: "C:\\Python27" - PYTHON_VERSION: "2.7.8" - PYTHON_ARCH: "32" - RUBY_VERSION: 23 - - # - PYTHON: "C:\\Python27-x64" - # PYTHON_VERSION: "2.7.8" - # PYTHON_ARCH: "64" - # - # - PYTHON: "C:\\Python33" - # PYTHON_VERSION: "3.3.5" - # PYTHON_ARCH: "32" - # - # - PYTHON: "C:\\Python33-x64" - # PYTHON_VERSION: "3.3.5" - # PYTHON_ARCH: "64" - # - # - PYTHON: "C:\\Python34" - # PYTHON_VERSION: "3.4.1" - # PYTHON_ARCH: "32" - # - # - PYTHON: "C:\\Python34-x64" - # PYTHON_VERSION: "3.4.1" - # PYTHON_ARCH: "64" + PATH: C:\Ruby23\bin;C:\Ruby23-x64\DevKit\mingw\bin;C:\Python27;C:\Python27\Scripts;%PATH% init: - cmd: rd /s /q %CHOCOLATEYINSTALL% - ps: iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) install: - - - ECHO "Filesystem root:" - - ps: "ls \"C:/\"" - - - cinst atom -y - - cd %APPVEYOR_BUILD_FOLDER% - # Add Atom's bin (apm, etc) to PATH - - SET PATH=%LOCALAPPDATA%\atom\bin;%PATH% + - cinst packages.config -y + - refreshenv - apm install - # Install CLI beautifiers + # https://packaging.python.org/guides/supporting-windows-using-appveyor/ + - pip install -r requirements.txt - # Install Python (from the official .msi of http://python.org) and pip when - # not already installed. - - "powershell ./appveyor/install.ps1" + # Gemfile Install + - bundle install - # Prepend newly installed Python to the PATH of this build (this cannot be - # done from inside the powershell script as it would require to restart - # the parent CMD process). - - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" - - # Check that we have the expected version and architecture for Python - - "python --version" - - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" - - # Install the build dependencies of the project. If some dependencies contain - # compiled extensions and are not provided as pre-built wheel packages, - # pip will build them from source using the MSVC compiler matching the - # target Python version and architecture - - "%CMD_IN_ENV% pip install --upgrade autopep8" - - where autopep8 - - - "%CMD_IN_ENV% pip install --upgrade isort" - - where isort - - - "%CMD_IN_ENV% pip install --upgrade sqlparse" - - # Ruby & Gem - - SET PATH=C:\Ruby%RUBY_VERSION%\bin;C:\Ruby23-x64\DevKit\mingw\bin;%PATH% - # Rubocop - - gem install rubocop - - where rubocop - # HTMLBeautifier - - gem install htmlbeautifier - - where htmlbeautifier - # Puppet-Lint - - gem install puppet-lint - - where puppet-lint - # Sass - - gem install sass - - where sass-convert - - # emacs - - cinst emacs -y - - where emacs - - # terraform - - cinst terraform -y - - where terraform - - # FIXME: Enable allowEmptyChecksums, until someone fixes the checksum issue of php - - choco feature enable -n allowEmptyChecksums # PHP - ps: Set-Service wuauserv -StartupType Manual - - cinst php -y - - ps: "ls \"C:\\tools\\php72\"" - - "SET PATH=C:\\tools\\php72;%PATH%" - - where php # PHP-CS-Fixer - - cinst curl -y # Use cURL to download file from URL - - curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer - - "SET PATH=%cd%;%PATH%" # Add current working directory to PATH - - where php-cs-fixer - - # Uncrustify - - curl -k -L https://sourceforge.net/projects/uncrustify/files/uncrustify/uncrustify-0.65/uncrustify-0.65-win32.zip/download -o uncrustify.zip - - cinst 7zip.commandline -y - - 7za e uncrustify.zip -ouncrustify-d - - "SET PATH=%cd%\\uncrustify-d;%PATH%" - - where uncrustify + - composer install # elm-format - - curl -k -L https://github.com/avh4/elm-format/releases/download/0.7.0-exp/elm-format-0.18-0.7.0-exp-win-i386.zip -o elm-format.zip - - 7za e elm-format.zip -oelm-format-d - - "SET PATH=%cd%\\elm-format-d;%PATH%" - - where elm-format - - # Beautysh - - pip install beautysh - - where beautysh - + - npm install -g elm-format@exp + build_script: - - cd %APPVEYOR_BUILD_FOLDER% # Install languages to Atom - - apm install language-marko language-html-swig language-svg language-elm language-d mavensmate-atom language-lua language-puppet fuse - # Show current PATH - - echo %PATH% + - apm install --packages-file atom-packages.txt # Run tests on package #- "%LOCALAPPDATA%\\atom\\bin\\atom.cmd --test spec" - apm test --path %LOCALAPPDATA%/atom/bin/atom.cmd diff --git a/appveyor/install.ps1 b/appveyor/install.ps1 deleted file mode 100644 index 0f165d8..0000000 --- a/appveyor/install.ps1 +++ /dev/null @@ -1,180 +0,0 @@ -# Sample script to install Python and pip under Windows -# Authors: Olivier Grisel, Jonathan Helmus and Kyle Kastner -# License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ - -$MINICONDA_URL = "http://repo.continuum.io/miniconda/" -$BASE_URL = "https://www.python.org/ftp/python/" -$GET_PIP_URL = "https://bootstrap.pypa.io/get-pip.py" -$GET_PIP_PATH = "C:\get-pip.py" - - -function DownloadPython ($python_version, $platform_suffix) { - $webclient = New-Object System.Net.WebClient - $filename = "python-" + $python_version + $platform_suffix + ".msi" - $url = $BASE_URL + $python_version + "/" + $filename - - $basedir = $pwd.Path + "\" - $filepath = $basedir + $filename - if (Test-Path $filename) { - Write-Host "Reusing" $filepath - return $filepath - } - - # Download and retry up to 3 times in case of network transient errors. - Write-Host "Downloading" $filename "from" $url - $retry_attempts = 2 - for($i=0; $i -lt $retry_attempts; $i++){ - try { - $webclient.DownloadFile($url, $filepath) - break - } - Catch [Exception]{ - Start-Sleep 1 - } - } - if (Test-Path $filepath) { - Write-Host "File saved at" $filepath - } else { - # Retry once to get the error message if any at the last try - $webclient.DownloadFile($url, $filepath) - } - return $filepath -} - - -function InstallPython ($python_version, $architecture, $python_home) { - Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home - if (Test-Path $python_home) { - Write-Host $python_home "already exists, skipping." - return $false - } - if ($architecture -eq "32") { - $platform_suffix = "" - } else { - $platform_suffix = ".amd64" - } - $msipath = DownloadPython $python_version $platform_suffix - Write-Host "Installing" $msipath "to" $python_home - $install_log = $python_home + ".log" - $install_args = "/qn /log $install_log /i $msipath TARGETDIR=$python_home" - $uninstall_args = "/qn /x $msipath" - RunCommand "msiexec.exe" $install_args - if (-not(Test-Path $python_home)) { - Write-Host "Python seems to be installed else-where, reinstalling." - RunCommand "msiexec.exe" $uninstall_args - RunCommand "msiexec.exe" $install_args - } - if (Test-Path $python_home) { - Write-Host "Python $python_version ($architecture) installation complete" - } else { - Write-Host "Failed to install Python in $python_home" - Get-Content -Path $install_log - Exit 1 - } -} - -function RunCommand ($command, $command_args) { - Write-Host $command $command_args - Start-Process -FilePath $command -ArgumentList $command_args -Wait -Passthru -} - - -function InstallPip ($python_home) { - $pip_path = $python_home + "\Scripts\pip.exe" - $python_path = $python_home + "\python.exe" - if (-not(Test-Path $pip_path)) { - Write-Host "Installing pip..." - $webclient = New-Object System.Net.WebClient - $webclient.DownloadFile($GET_PIP_URL, $GET_PIP_PATH) - Write-Host "Executing:" $python_path $GET_PIP_PATH - Start-Process -FilePath "$python_path" -ArgumentList "$GET_PIP_PATH" -Wait -Passthru - } else { - Write-Host "pip already installed." - } -} - - -function DownloadMiniconda ($python_version, $platform_suffix) { - $webclient = New-Object System.Net.WebClient - if ($python_version -eq "3.4") { - $filename = "Miniconda3-3.5.5-Windows-" + $platform_suffix + ".exe" - } else { - $filename = "Miniconda-3.5.5-Windows-" + $platform_suffix + ".exe" - } - $url = $MINICONDA_URL + $filename - - $basedir = $pwd.Path + "\" - $filepath = $basedir + $filename - if (Test-Path $filename) { - Write-Host "Reusing" $filepath - return $filepath - } - - # Download and retry up to 3 times in case of network transient errors. - Write-Host "Downloading" $filename "from" $url - $retry_attempts = 2 - for($i=0; $i -lt $retry_attempts; $i++){ - try { - $webclient.DownloadFile($url, $filepath) - break - } - Catch [Exception]{ - Start-Sleep 1 - } - } - if (Test-Path $filepath) { - Write-Host "File saved at" $filepath - } else { - # Retry once to get the error message if any at the last try - $webclient.DownloadFile($url, $filepath) - } - return $filepath -} - - -function InstallMiniconda ($python_version, $architecture, $python_home) { - Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home - if (Test-Path $python_home) { - Write-Host $python_home "already exists, skipping." - return $false - } - if ($architecture -eq "32") { - $platform_suffix = "x86" - } else { - $platform_suffix = "x86_64" - } - $filepath = DownloadMiniconda $python_version $platform_suffix - Write-Host "Installing" $filepath "to" $python_home - $install_log = $python_home + ".log" - $args = "/S /D=$python_home" - Write-Host $filepath $args - Start-Process -FilePath $filepath -ArgumentList $args -Wait -Passthru - if (Test-Path $python_home) { - Write-Host "Python $python_version ($architecture) installation complete" - } else { - Write-Host "Failed to install Python in $python_home" - Get-Content -Path $install_log - Exit 1 - } -} - - -function InstallMinicondaPip ($python_home) { - $pip_path = $python_home + "\Scripts\pip.exe" - $conda_path = $python_home + "\Scripts\conda.exe" - if (-not(Test-Path $pip_path)) { - Write-Host "Installing pip..." - $args = "install --yes pip" - Write-Host $conda_path $args - Start-Process -FilePath "$conda_path" -ArgumentList $args -Wait -Passthru - } else { - Write-Host "pip already installed." - } -} - -function main () { - InstallPython $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON - InstallPip $env:PYTHON -} - -main diff --git a/appveyor/run_with_env.cmd b/appveyor/run_with_env.cmd deleted file mode 100644 index 3a472bc..0000000 --- a/appveyor/run_with_env.cmd +++ /dev/null @@ -1,47 +0,0 @@ -:: To build extensions for 64 bit Python 3, we need to configure environment -:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of: -:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1) -:: -:: To build extensions for 64 bit Python 2, we need to configure environment -:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of: -:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0) -:: -:: 32 bit builds do not require specific environment configurations. -:: -:: Note: this script needs to be run with the /E:ON and /V:ON flags for the -:: cmd interpreter, at least for (SDK v7.0) -:: -:: More details at: -:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows -:: http://stackoverflow.com/a/13751649/163740 -:: -:: Author: Olivier Grisel -:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ -@ECHO OFF - -SET COMMAND_TO_RUN=%* -SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows - -SET MAJOR_PYTHON_VERSION="%PYTHON_VERSION:~0,1%" -IF %MAJOR_PYTHON_VERSION% == "2" ( - SET WINDOWS_SDK_VERSION="v7.0" -) ELSE IF %MAJOR_PYTHON_VERSION% == "3" ( - SET WINDOWS_SDK_VERSION="v7.1" -) ELSE ( - ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%" - EXIT 1 -) - -IF "%PYTHON_ARCH%"=="64" ( - ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture - SET DISTUTILS_USE_SDK=1 - SET MSSdk=1 - "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION% - "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release - ECHO Executing: %COMMAND_TO_RUN% - call %COMMAND_TO_RUN% || EXIT 1 -) ELSE ( - ECHO Using default MSVC build environment for 32 bit architecture - ECHO Executing: %COMMAND_TO_RUN% - call %COMMAND_TO_RUN% || EXIT 1 -) diff --git a/atom-packages.txt b/atom-packages.txt new file mode 100644 index 0000000..aa032ad --- /dev/null +++ b/atom-packages.txt @@ -0,0 +1,9 @@ +language-marko +language-html-swig +language-svg +language-d +mavensmate-atom +language-lua +language-elm +language-puppet +fuse diff --git a/build-package.sh b/build-package.sh index 98674d1..eaade9a 100644 --- a/build-package.sh +++ b/build-package.sh @@ -1,63 +1,21 @@ #!/bin/sh -echo "Downloading latest Atom release..." -ATOM_CHANNEL="${ATOM_CHANNEL:=stable}" - -if [ "$TRAVIS_OS_NAME" = "osx" ]; then - curl -s -L "https://atom.io/download/mac?channel=$ATOM_CHANNEL" \ - -H 'Accept: application/octet-stream' \ - -o "atom.zip" - mkdir atom - unzip -q atom.zip -d atom - if [ "$ATOM_CHANNEL" = "stable" ]; then - export ATOM_APP_NAME="Atom.app" - export ATOM_SCRIPT_NAME="atom.sh" - export ATOM_SCRIPT_PATH="./atom/${ATOM_APP_NAME}/Contents/Resources/app/atom.sh" - else - export ATOM_APP_NAME="Atom ${ATOM_CHANNEL}.app" - export ATOM_SCRIPT_NAME="atom-${ATOM_CHANNEL}" - export ATOM_SCRIPT_PATH="./atom-${ATOM_CHANNEL}" - ln -s "./atom/${ATOM_APP_NAME}/Contents/Resources/app/atom.sh" "${ATOM_SCRIPT_PATH}" - fi - export PATH="$PWD/atom/${ATOM_APP_NAME}/Contents/Resources/app/apm/bin:$PATH" - export ATOM_PATH="./atom" - export APM_SCRIPT_PATH="./atom/${ATOM_APP_NAME}/Contents/Resources/app/apm/node_modules/.bin/apm" -else - curl -s -L "https://atom.io/download/deb?channel=$ATOM_CHANNEL" \ - -H 'Accept: application/octet-stream' \ - -o "atom.deb" +if [ "$TRAVIS_OS_NAME" != "osx" ]; then /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 export DISPLAY=":99" - dpkg-deb -x atom.deb "$HOME/atom" - if [ "$ATOM_CHANNEL" = "stable" ]; then - export ATOM_SCRIPT_NAME="atom" - export APM_SCRIPT_NAME="apm" - else - export ATOM_SCRIPT_NAME="atom-$ATOM_CHANNEL" - export APM_SCRIPT_NAME="apm-$ATOM_CHANNEL" - fi - export ATOM_SCRIPT_PATH="$HOME/atom/usr/bin/$ATOM_SCRIPT_NAME" - export APM_SCRIPT_PATH="$HOME/atom/usr/bin/$APM_SCRIPT_NAME" fi - echo "Using Atom version:" -"$ATOM_SCRIPT_PATH" -v +"$ATOM_SCRIPT_NAME" -v echo "Using APM version:" -"$APM_SCRIPT_PATH" -v +"$APM_SCRIPT_NAME" -v echo "Downloading package dependencies..." -"$APM_SCRIPT_PATH" clean -"$APM_SCRIPT_PATH" install +"$APM_SCRIPT_NAME" clean +"$APM_SCRIPT_NAME" install -TEST_PACKAGES="${APM_TEST_PACKAGES:=none}" - -if [ "$TEST_PACKAGES" != "none" ]; then - echo "Installing atom package dependencies..." - for pack in $TEST_PACKAGES ; do - "$APM_SCRIPT_PATH" install $pack - done -fi +echo "Installing atom package dependencies..." +"$APM_SCRIPT_NAME" install --packages-file atom-packages.txt if [ -f ./node_modules/.bin/coffeelint ]; then if [ -d ./src ]; then @@ -100,9 +58,9 @@ fi if [ -d ./spec ]; then echo "Running specs..." - "$ATOM_SCRIPT_PATH" --test spec + "$ATOM_SCRIPT_NAME" --test spec else echo "Missing spec folder! Please consider adding a test suite in `./spec`" exit 1 fi -exit \ No newline at end of file +exit diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..5c33245 --- /dev/null +++ b/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "friendsofphp/php-cs-fixer": ">0" + } +} diff --git a/packages.config b/packages.config new file mode 100644 index 0000000..0c544bc --- /dev/null +++ b/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e3d1477 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +autopep8 +isort +sqlparse +beautysh From 78a927992c1e6257df5afa6e333a65d700432e71 Mon Sep 17 00:00:00 2001 From: Steven Zeck Date: Wed, 17 Jan 2018 13:08:36 -0600 Subject: [PATCH 04/13] Add language generic for Travis builds --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 5da898d..07c27c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,8 @@ notifications: script: sh build-package.sh +language: generic + cache: timeout: 1000 From 39deb8e534acdea3acb09cb0f4467a12b09a6ae5 Mon Sep 17 00:00:00 2001 From: Glavin Wiechert Date: Wed, 17 Jan 2018 22:49:01 -0400 Subject: [PATCH 05/13] Add link to Unibeautify Bot form --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 040ec4e..2dde5f0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ [![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify¤cy_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify) -**Help improve Atom-Beautify by completing the questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** +**Sign up for Unibeautify Bot: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)** + +**Help improve Atom-Beautify by completing the quick questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** | Mac OS and | | | --- | --- | From 7f43e9613a85a2b059128dbb619796d4d10e2df5 Mon Sep 17 00:00:00 2001 From: Glavin Wiechert Date: Wed, 17 Jan 2018 22:50:48 -0400 Subject: [PATCH 06/13] Add Unibeautify Bot link to README-template --- README-template.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README-template.md b/README-template.md index ec5ab35..ac4abb3 100644 --- a/README-template.md +++ b/README-template.md @@ -8,7 +8,9 @@ [![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify¤cy_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify) -**Help improve Atom-Beautify by completing the questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** +**Sign up for Unibeautify Bot: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)** + +**Help improve Atom-Beautify by completing the quick questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** | Mac OS and | | | --- | --- | From 2ef6dbbabbc1ae9c1853b82fcedd5cdf565809a3 Mon Sep 17 00:00:00 2001 From: Steven Zeck Date: Sun, 21 Jan 2018 23:05:51 -0600 Subject: [PATCH 07/13] Update typescript-formatter --- package.json | 2 +- src/beautifiers/typescript-formatter.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8898cdd..5a1734f 100644 --- a/package.json +++ b/package.json @@ -194,7 +194,7 @@ "temp": "^0.8.3", "tidy-markdown": "2.0.3", "typescript": "2.4.1", - "typescript-formatter": "5.2.0", + "typescript-formatter": "^7.0.0", "underscore-plus": "^1.6.6", "universal-analytics": "0.4.13", "which": "1.2.14", diff --git a/src/beautifiers/typescript-formatter.coffee b/src/beautifiers/typescript-formatter.coffee index 1a0f204..1cbfd8c 100644 --- a/src/beautifiers/typescript-formatter.coffee +++ b/src/beautifiers/typescript-formatter.coffee @@ -12,7 +12,7 @@ module.exports = class TypeScriptFormatter extends Beautifier return new @Promise((resolve, reject) => try - format = require("typescript-formatter/lib/formatter").default + format = require("typescript-formatter/lib/formatter").format formatterUtils = require("typescript-formatter/lib/utils") # @verbose('format', format, formatterUtils) From 1987f7d81fbed61a21b4d3ccc967f63b2547cfdc Mon Sep 17 00:00:00 2001 From: Steven Zeck Date: Fri, 26 Jan 2018 13:28:23 -0600 Subject: [PATCH 08/13] Output gem info during build --- build-package.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build-package.sh b/build-package.sh index eaade9a..e32fc28 100644 --- a/build-package.sh +++ b/build-package.sh @@ -5,6 +5,10 @@ if [ "$TRAVIS_OS_NAME" != "osx" ]; then export DISPLAY=":99" fi +echo "Gem Info" +bundle info puppet-lint +bundle info sass + echo "Using Atom version:" "$ATOM_SCRIPT_NAME" -v echo "Using APM version:" From 5d0a33868470328dfd1fc9fb68499267a260d9a7 Mon Sep 17 00:00:00 2001 From: Glavin Wiechert Date: Sun, 28 Jan 2018 17:52:02 -0400 Subject: [PATCH 09/13] Change Unibeautify Bot to Unibeautify CI in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2dde5f0..0a75b7a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify¤cy_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify) -**Sign up for Unibeautify Bot: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)** +**Sign up for Unibeautify CI: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)** **Help improve Atom-Beautify by completing the quick questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** From 7ee1b193f786d0e26b69b734b30a5fb4281b4bdb Mon Sep 17 00:00:00 2001 From: Glavin Wiechert Date: Sun, 28 Jan 2018 17:52:31 -0400 Subject: [PATCH 10/13] Change Unibeautify Bot to Unibeautify CI in README-template --- README-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-template.md b/README-template.md index ac4abb3..2d743ef 100644 --- a/README-template.md +++ b/README-template.md @@ -8,7 +8,7 @@ [![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify¤cy_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify) -**Sign up for Unibeautify Bot: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)** +**Sign up for Unibeautify CI: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)** **Help improve Atom-Beautify by completing the quick questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)** From 328e21b1e6ab97e9cae2b0297e73957562346af0 Mon Sep 17 00:00:00 2001 From: Steven Zeck Date: Mon, 29 Jan 2018 17:47:33 -0600 Subject: [PATCH 11/13] Remove gem info --- build-package.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build-package.sh b/build-package.sh index e32fc28..eaade9a 100644 --- a/build-package.sh +++ b/build-package.sh @@ -5,10 +5,6 @@ if [ "$TRAVIS_OS_NAME" != "osx" ]; then export DISPLAY=":99" fi -echo "Gem Info" -bundle info puppet-lint -bundle info sass - echo "Using Atom version:" "$ATOM_SCRIPT_NAME" -v echo "Using APM version:" From aefb7794d669ad853490e005b1ea7b075c96f099 Mon Sep 17 00:00:00 2001 From: Steven Zeck Date: Tue, 30 Jan 2018 17:35:23 -0600 Subject: [PATCH 12/13] Add new language tsx, add tsx support to typescript-formatter --- README.md | 1 + docs/options.md | 69 +++++++++++++++++++ .../simple-jsbeautifyrc/tsx/expected/test.tsx | 12 ++++ .../simple-jsbeautifyrc/tsx/original/test.tsx | 12 ++++ package.json | 8 ++- src/beautifiers/typescript-formatter.coffee | 1 + src/languages/index.coffee | 1 + src/languages/tsx.coffee | 21 ++++++ src/options.json | 41 +++++++++++ 9 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 examples/simple-jsbeautifyrc/tsx/expected/test.tsx create mode 100644 examples/simple-jsbeautifyrc/tsx/original/test.tsx create mode 100644 src/languages/tsx.coffee diff --git a/README.md b/README.md index 2dde5f0..4d6f0ae 100644 --- a/README.md +++ b/README.md @@ -199,6 +199,7 @@ See [all supported options in the documentation at `docs/options.md`](docs/opti | Swig | `HTML (Swig)`, `SWIG` |`.swig` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** | | Terraform | `Terraform` |`.tf` | **[`terraformfmt`](https://www.terraform.io/docs/commands/fmt.html)** | | TSS | `TSS` |`.tss` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** | +| TSX | `TypeScriptReact` |`.tsx` | **[`TypeScript Formatter`](https://github.com/vvakame/typescript-formatter)** | | Twig | `HTML (Twig)` |`.twig` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** | | TypeScript | `TypeScript` |`.ts` | **[`TypeScript Formatter`](https://github.com/vvakame/typescript-formatter)** | | UX Markup | `UX` |`.ux` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** | diff --git a/docs/options.md b/docs/options.md index 0ae2840..6047ede 100644 --- a/docs/options.md +++ b/docs/options.md @@ -12622,6 +12622,75 @@ Maximum amount of characters per line (0 = disable) (Supported by Pretty Diff) } ``` +#### [TSX](#tsx) + +**Supported Beautifiers**: [`TypeScript Formatter`](#typescript-formatter) + +| Option | TypeScript Formatter | +| --- | --- | +| `disabled` | :white_check_mark: | +| `default_beautifier` | :white_check_mark: | +| `beautify_on_save` | :white_check_mark: | + +**Description**: + +Options for language TSX + +##### [Disable Beautifying Language](#disable-beautifying-language) + +**Important**: This option is only configurable from within Atom Beautify's setting panel. + +**Type**: `boolean` + +**Description**: + +Disable TSX Beautification + +**How to Configure** + +1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to +*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*. +2. Go into *Packages* and search for "*Atom Beautify*" package. +3. Find the option "*Disable Beautifying Language*" and change it to your desired configuration. + +##### [Default Beautifier](#default-beautifier) + +**Important**: This option is only configurable from within Atom Beautify's setting panel. + +**Default**: `TypeScript Formatter` + +**Type**: `string` + +**Enum**: `TypeScript Formatter` + +**Description**: + +Default Beautifier to be used for TSX + +**How to Configure** + +1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to +*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*. +2. Go into *Packages* and search for "*Atom Beautify*" package. +3. Find the option "*Default Beautifier*" and change it to your desired configuration. + +##### [Beautify On Save](#beautify-on-save) + +**Important**: This option is only configurable from within Atom Beautify's setting panel. + +**Type**: `boolean` + +**Description**: + +Automatically beautify TSX files on save + +**How to Configure** + +1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to +*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*. +2. Go into *Packages* and search for "*Atom Beautify*" package. +3. Find the option "*Beautify On Save*" and change it to your desired configuration. + #### [Twig](#twig) **Supported Beautifiers**: [`Pretty Diff`](#pretty-diff) diff --git a/examples/simple-jsbeautifyrc/tsx/expected/test.tsx b/examples/simple-jsbeautifyrc/tsx/expected/test.tsx new file mode 100644 index 0000000..273dd06 --- /dev/null +++ b/examples/simple-jsbeautifyrc/tsx/expected/test.tsx @@ -0,0 +1,12 @@ +class Test extends React.Component { + render() { + return ( +
+

+ { this.foo.bar } + < /h2> + { this.foo.bar.children } +

+ ); + } +} \ No newline at end of file diff --git a/examples/simple-jsbeautifyrc/tsx/original/test.tsx b/examples/simple-jsbeautifyrc/tsx/original/test.tsx new file mode 100644 index 0000000..a974f18 --- /dev/null +++ b/examples/simple-jsbeautifyrc/tsx/original/test.tsx @@ -0,0 +1,12 @@ +class Test extends React.Component { + render() { + return ( +
+

+ {this.foo.bar} +

+ {this.foo.bar.children} +
+ ); + } +} \ No newline at end of file diff --git a/package.json b/package.json index 5a1734f..af5e4da 100644 --- a/package.json +++ b/package.json @@ -277,7 +277,8 @@ "atom-beautify:beautify-language-xml", "atom-beautify:beautify-language-xtemplate", "atom-beautify:beautify-language-yaml", - "atom-beautify:beautify-language-terraform" + "atom-beautify:beautify-language-terraform", + "atom-beautify:beautify-language-tsx" ], ".tree-view .file .name": [ "atom-beautify:beautify-file" @@ -412,7 +413,8 @@ "align-yaml", "goimports", "terraform", - "terraformfmt" + "terraformfmt", + "tsx" ], "devDependencies": { "coffeelint": "1.16.0" @@ -449,4 +451,4 @@ "prettydiff2" ] } -} +} \ No newline at end of file diff --git a/src/beautifiers/typescript-formatter.coffee b/src/beautifiers/typescript-formatter.coffee index 1cbfd8c..a5081ea 100644 --- a/src/beautifiers/typescript-formatter.coffee +++ b/src/beautifiers/typescript-formatter.coffee @@ -6,6 +6,7 @@ module.exports = class TypeScriptFormatter extends Beautifier link: "https://github.com/vvakame/typescript-formatter" options: { TypeScript: true + TSX: true } beautify: (text, language, options) -> diff --git a/src/languages/index.coffee b/src/languages/index.coffee index 7cc1e5c..69c14a8 100644 --- a/src/languages/index.coffee +++ b/src/languages/index.coffee @@ -68,6 +68,7 @@ module.exports = class Languages "svg" "swig" "tss" + "tsx" "twig" "typescript" "ux_markup" diff --git a/src/languages/tsx.coffee b/src/languages/tsx.coffee new file mode 100644 index 0000000..7625b88 --- /dev/null +++ b/src/languages/tsx.coffee @@ -0,0 +1,21 @@ +module.exports = { + + name: "TSX" + namespace: "tsx" + fallback: ['ts'] + + ### + Supported Grammars + ### + grammars: [ + "TypeScriptReact" + ] + + ### + Supported extensions + ### + extensions: [ + "tsx" + ] + +} diff --git a/src/options.json b/src/options.json index 35bda1b..d545bd3 100644 --- a/src/options.json +++ b/src/options.json @@ -7365,6 +7365,47 @@ } } }, + "tsx": { + "title": "TSX", + "type": "object", + "description": "Options for language TSX", + "collapsed": true, + "beautifiers": [ + "TypeScript Formatter" + ], + "grammars": [ + "TypeScriptReact" + ], + "extensions": [ + "tsx" + ], + "properties": { + "disabled": { + "title": "Disable Beautifying Language", + "order": -3, + "type": "boolean", + "default": false, + "description": "Disable TSX Beautification" + }, + "default_beautifier": { + "title": "Default Beautifier", + "order": -2, + "type": "string", + "default": "TypeScript Formatter", + "description": "Default Beautifier to be used for TSX", + "enum": [ + "TypeScript Formatter" + ] + }, + "beautify_on_save": { + "title": "Beautify On Save", + "order": -1, + "type": "boolean", + "default": false, + "description": "Automatically beautify TSX files on save" + } + } + }, "twig": { "title": "Twig", "type": "object", From 6765faf09b9c7e29cb32e780de1d9c0003991e2e Mon Sep 17 00:00:00 2001 From: Steven Zeck Date: Wed, 31 Jan 2018 10:08:48 -0600 Subject: [PATCH 13/13] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3284e8d..e51a050 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Next - Fix [#1862](https://github.com/Glavin001/atom-beautify/issues/1862) Add support for ocp-indent as an executable +- See [#601](https://github.com/Glavin001/atom-beautify/issues/1862) Add support for tsx files # v0.30.9 (2017-11-22) - Fix [#1949](https://github.com/Glavin001/atom-beautify/issues/1949): Fix beautify on save when text has not changed.