diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..f951363 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,19 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - high priority + - pending-publication + - add-language + - add-beautifier +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. If this is still an issue, please add a comment. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.travis.yml b/.travis.yml index 0b2e4ca..07c27c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,53 +11,24 @@ notifications: script: sh build-package.sh +language: generic + +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 +42,7 @@ addons: - libgnome-keyring-dev - fakeroot - crystal - - ocaml - camlp4 - - opam - php5-cli - golang @@ -84,111 +53,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 - pip install --upgrade pip; - pip install --upgrade autopep8; - pip install --upgrade isort; - fi - # SQL language support - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - pip install --user --upgrade sqlparse; - else - pip 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 - pip 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/README-template.md b/README-template.md index 1726007..2d743ef 100644 --- a/README-template.md +++ b/README-template.md @@ -1,10 +1,16 @@ # :lipstick: [{{package.name}}](https://github.com/Glavin001/atom-beautify) +[![apm](https://img.shields.io/apm/dm/atom-beautify.svg)](https://atom.io/packages/atom-beautify) [![Greenkeeper badge](https://badges.greenkeeper.io/Glavin001/atom-beautify.svg)](https://greenkeeper.io/) [![GitHub issues](https://img.shields.io/github/issues/Glavin001/atom-beautify.svg?style=flat-square)](https://github.com/Glavin001/atom-beautify/issues) [![GitHub stars](https://img.shields.io/github/stars/Glavin001/atom-beautify.svg?style=flat-square)](https://github.com/Glavin001/atom-beautify/stargazers) [![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) + +**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)** | Mac OS and | | | --- | --- | @@ -64,6 +70,18 @@ Thank you. Atom-Beautify is going to be completely rewritten with [Unibeautify](https://github.com/Unibeautify/unibeautify) at its core! See [`unibeautify` branch](../../tree/unibeautify) for work in progress and [Issue #1174](https://github.com/Glavin001/atom-beautify/issues/1174). +### Poll: Improving installation of third-party beautifiers + +Many users are experiencing issues when installing third party beautifiers (e.g. Uncrustify, PHP-CS-Fixer, and many more). +A possible solution is a "cloud" service which provides remote access to these beautifiers. Atom-Beautify would then communicate with these services, allowing for zero-installation beautification. + +Please let us know what you think! + +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!/vote) +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers/vote) +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker/vote) +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet/vote) + ## Beautifiers Some of the supported beautifiers are developed for Node.js and are automatically installed when Atom-Beautify is installed. However, other beautifiers are command-line interface (CLI) applications and require you to manually install them. @@ -203,6 +221,8 @@ See [`docs/troubleshooting.md`](docs/troubleshooting.md). ## Contributing +See [`CONTRIBUTING.md`](CONTRIBUTING.md). + [See all contributors on GitHub](../../graphs/contributors). Please update the [CHANGELOG.md](CHANGELOG.md), diff --git a/README.md b/README.md index ee00544..0a75b7a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ # :lipstick: [atom-beautify](https://github.com/Glavin001/atom-beautify) +[![apm](https://img.shields.io/apm/dm/atom-beautify.svg)](https://atom.io/packages/atom-beautify) [![Greenkeeper badge](https://badges.greenkeeper.io/Glavin001/atom-beautify.svg)](https://greenkeeper.io/) [![GitHub issues](https://img.shields.io/github/issues/Glavin001/atom-beautify.svg?style=flat-square)](https://github.com/Glavin001/atom-beautify/issues) [![GitHub stars](https://img.shields.io/github/stars/Glavin001/atom-beautify.svg?style=flat-square)](https://github.com/Glavin001/atom-beautify/stargazers) [![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) + +**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)** | Mac OS and | | | --- | --- | @@ -64,6 +70,18 @@ Thank you. Atom-Beautify is going to be completely rewritten with [Unibeautify](https://github.com/Unibeautify/unibeautify) at its core! See [`unibeautify` branch](../../tree/unibeautify) for work in progress and [Issue #1174](https://github.com/Glavin001/atom-beautify/issues/1174). +### Poll: Improving installation of third-party beautifiers + +Many users are experiencing issues when installing third party beautifiers (e.g. Uncrustify, PHP-CS-Fixer, and many more). +A possible solution is a "cloud" service which provides remote access to these beautifiers. Atom-Beautify would then communicate with these services, allowing for zero-installation beautification. + +Please let us know what you think! + +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!/vote) +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers/vote) +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker/vote) +[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet/vote) + ## Beautifiers Some of the supported beautifiers are developed for Node.js and are automatically installed when Atom-Beautify is installed. However, other beautifiers are command-line interface (CLI) applications and require you to manually install them. @@ -96,13 +114,13 @@ Some of the supported beautifiers are developed for Node.js and are automaticall | Lua beautifier | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! | | Marko Beautifier | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! | | Nginx Beautify | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! | -| ocp-indent | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to https://www.typerex.org/ocp-indent.html and follow the instructions. | +| ocp-indent | :warning: 1 executable | :white_check_mark: :100:% of executables | :whale: With [Docker](https://www.docker.com/):
1. Install [ocp-indent (`ocp-indent`)](https://www.typerex.org/ocp-indent.html) with `docker pull unibeautify/ocp-indent`

:bookmark_tabs: Manually:
1. Install [ocp-indent (`ocp-indent`)](https://www.typerex.org/ocp-indent.html) by following https://www.typerex.org/ocp-indent.html#installation
| | Perltidy | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to http://perltidy.sourceforge.net/ and follow the instructions. | | PHP-CS-Fixer | :warning: 2 executables | :warning: Only 1 of 2 executables | :whale: With [Docker](https://www.docker.com/):
1. Install [PHP-CS-Fixer (`php-cs-fixer`)](https://github.com/FriendsOfPHP/PHP-CS-Fixer) with `docker pull unibeautify/php-cs-fixer`

:bookmark_tabs: Manually:
1. Install [PHP (`php`)](http://php.net/) by following http://php.net/manual/en/install.php
2. Install [PHP-CS-Fixer (`php-cs-fixer`)](https://github.com/FriendsOfPHP/PHP-CS-Fixer) by following https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation
| | PHPCBF | :warning: 2 executables | :warning: Only 1 of 2 executables | :whale: With [Docker](https://www.docker.com/):
1. Install [PHPCBF (`phpcbf`)](https://github.com/squizlabs/PHP_CodeSniffer) with `docker pull unibeautify/phpcbf`

:bookmark_tabs: Manually:
1. Install [PHP (`php`)](http://php.net/) by following http://php.net/manual/en/install.php
2. Install [PHPCBF (`phpcbf`)](https://github.com/squizlabs/PHP_CodeSniffer) by following https://github.com/squizlabs/PHP_CodeSniffer#installation
| | Pretty Diff | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! | | Pug Beautify | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! | -| puppet-lint | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to http://puppet-lint.com/ and follow the instructions. | +| puppet-lint | :warning: 1 executable | :white_check_mark: :100:% of executables | :whale: With [Docker](https://www.docker.com/):
1. Install [puppet-lint (`puppet-lint`)](http://puppet-lint.com/) with `docker pull unibeautify/puppet-lint`

:bookmark_tabs: Manually:
1. Install [puppet-lint (`puppet-lint`)](http://puppet-lint.com/) by following http://puppet-lint.com/
| | pybeautifier | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to https://github.com/guyskk/pybeautifier and follow the instructions. | | Remark | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! | | Rubocop | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to https://github.com/bbatsov/rubocop and follow the instructions. | @@ -318,6 +336,8 @@ See [`docs/troubleshooting.md`](docs/troubleshooting.md). ## Contributing +See [`CONTRIBUTING.md`](CONTRIBUTING.md). + [See all contributors on GitHub](../../graphs/contributors). Please update the [CHANGELOG.md](CHANGELOG.md), diff --git a/appveyor.yml b/appveyor.yml index bf21dfb..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\\php71\"" - - "SET PATH=C:\\tools\\php71;%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/docs/troubleshooting.md b/docs/troubleshooting.md index df99d73..b01f828 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -16,3 +16,9 @@ The debugging results will be copied to your clipboard. 3. Create a file in your new Gist called `debug.md`. 4. Paste your debugging results from Atom beautify into `debug.md` file in your Gist. 5. Add a link to your Gist in your new Issue. + +## Common Issues + +> I receive an error when I try to install or update Atom Beautify + +Run `apm clean` from your terminal, then retry \ No newline at end of file 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 diff --git a/src/beautifiers/ocp-indent.coffee b/src/beautifiers/ocp-indent.coffee index 22c0463..7c196de 100644 --- a/src/beautifiers/ocp-indent.coffee +++ b/src/beautifiers/ocp-indent.coffee @@ -8,7 +8,24 @@ Beautifier = require('./beautifier') module.exports = class OCPIndent extends Beautifier name: "ocp-indent" link: "https://www.typerex.org/ocp-indent.html" - isPreInstalled: false + executables: [ + { + name: "ocp-indent" + cmd: "ocp-indent" + homepage: "https://www.typerex.org/ocp-indent.html" + installation: "https://www.typerex.org/ocp-indent.html#installation" + version: { + parse: (text) -> + try + text.match(/(\d+\.\d+\.\d+)/)[1] + catch + text.match(/(\d+\.\d+)/)[1] + ".0" + } + docker: { + image: "unibeautify/ocp-indent" + } + } + ] options: { OCaml: true @@ -21,4 +38,4 @@ module.exports = class OCPIndent extends Beautifier help: { link: "https://www.typerex.org/ocp-indent.html" } - }) + }) \ No newline at end of file diff --git a/src/beautifiers/puppet-fix.coffee b/src/beautifiers/puppet-fix.coffee index 4ae96ed..4a22325 100644 --- a/src/beautifiers/puppet-fix.coffee +++ b/src/beautifiers/puppet-fix.coffee @@ -8,21 +8,28 @@ module.exports = class PuppetFix extends Beautifier # this is what displays as your Default Beautifier in Language Config name: "puppet-lint" link: "http://puppet-lint.com/" - isPreInstalled: false options: { Puppet: true } - cli: (options) -> - if not options.puppet_path? - return new Error("'puppet-lint' path is not set!" + - " Please set this in the Atom Beautify package settings.") - else - return options.puppet_path + executables: [ + { + name: "puppet-lint" + cmd: "puppet-lint" + homepage: "http://puppet-lint.com/" + installation: "http://puppet-lint.com/" + version: { + parse: (text) -> text.match(/puppet-lint (\d+\.\d+\.\d+)/)[1] + } + docker: { + image: "unibeautify/puppet-lint" + } + } + ] beautify: (text, language, options) -> - @run("puppet-lint", [ + @exe("puppet-lint").run([ '--fix' tempFile = @tempFile("input", text) ], { diff --git a/src/beautify.coffee b/src/beautify.coffee index 3a850a4..af517ec 100644 --- a/src/beautify.coffee +++ b/src/beautify.coffee @@ -96,9 +96,10 @@ beautify = ({ editor, onSave, language }) -> if not text? # Do nothing, is undefined # console.log 'beautifyCompleted' + return resolve(text) else if text instanceof Error showError(text) - return reject(text) + return resolve(text) else if typeof text is "string" if oldText isnt text @@ -127,15 +128,18 @@ beautify = ({ editor, onSave, language }) -> # otherwise setScrollTop is not working, probably because the cursor # addition happens asynchronously setTimeout ( -> - # console.log "setScrollTop" setScrollTop editor, origScrollTop return resolve(text) ), 0 + else + return setTimeout(() -> + resolve(text) + , 0) else error = new Error("Unsupported beautification result '#{text}'.") showError(error) - return reject(error) + return resolve(text) # else # console.log "Already Beautiful!" @@ -506,20 +510,17 @@ debug = () -> handleSaveEvent = -> atom.workspace.observeTextEditors (editor) -> - pendingPaths = {} beautifyOnSaveHandler = ({path: filePath}) -> - logger.verbose('Should beautify on this save?') - if pendingPaths[filePath] - logger.verbose("Editor with file path #{filePath} already beautified!") - return - buffer = editor.getBuffer() path ?= require('path') - # Get Grammar - grammar = editor.getGrammar().name # Get file extension fileExtension = path.extname(filePath) # Remove prefix "." (period) in fileExtension fileExtension = fileExtension.substr(1) + # Set path of buffer for unsaved files + if editor.getPath() is undefined + editor.getBuffer().setPath(filePath) + # Get Grammar from the editor + grammar = editor.getGrammar().name # Get language languages = beautifier.languages.getLanguages({grammar, extension: fileExtension}) if languages.length < 1 @@ -535,23 +536,11 @@ handleSaveEvent = -> beautify({editor, onSave: true}) .then(() -> logger.verbose('Done beautifying file', filePath) - if editor.isAlive() is true - logger.verbose('Saving TextEditor...') - # Store the filePath to prevent infinite looping - # When Whitespace package has option "Ensure Single Trailing Newline" enabled - # It will add a newline and keep the file from converging on a beautified form - # and saving without emitting onDidSave event, because there were no changes. - pendingPaths[filePath] = true - Promise.resolve(editor.save()).then(() -> - delete pendingPaths[filePath] - logger.verbose('Saved TextEditor.') - ) ) .catch((error) -> return showError(error) ) - disposable = editor.onDidSave(({path : filePath}) -> - # TODO: Implement debouncing + disposable = editor.getBuffer().onWillSave(({path: filePath}) -> beautifyOnSaveHandler({path: filePath}) ) plugin.subscriptions.add disposable @@ -632,4 +621,4 @@ plugin.activate = -> @addLanguageCommands() plugin.deactivate = -> - @subscriptions.dispose() + @subscriptions.dispose() \ No newline at end of file diff --git a/src/options.json b/src/options.json index f2e3abf..c574c59 100644 --- a/src/options.json +++ b/src/options.json @@ -9480,4 +9480,4 @@ } } } -} +} \ No newline at end of file