项目作者: serokell

项目描述 :
:space_invader: Importi.fy — it's like Uber, but for Haskell modules.
高级语言: Haskell
项目地址: git://github.com/serokell/importify.git
创建时间: 2017-05-27T20:28:32Z
项目社区:https://github.com/serokell/importify

开源协议:MIT License

下载


importify — manage Haskell imports quickly

Build Status
Hackage
Stackage Nightly
Stackage LTS
HLint Status
License: MIT

Importify in a nutshell.

importify tool helps you to manage the import section of your Haskell project modules.
GHC compiler can warn you about unused imports, and it’s a good practice to remove such
imports immediately. But this becomes tedious, especially if you use explicit import lists.

Importify can remove unused imports automatically.

Before importify After importify
Module with imports mess After removing all unused imports

You can use stylish-haskell after importify to prettify imports.

In the future, we plan for Importify to be able to:

  • Add missing imports automatically, so you won’t have to manage
    imports manually at all.
  • Implement a cache server with the following features:
    • Download caches for Hackage packages to speed up Importify runs.
    • Upload your caches for yet-to-be-published FOSS projects to
      make it easier to collaborate.
    • Query mappings from any module of every package to symbols
      exported by it to write your refactoring tools.
  • Convert imports between implicit and explicit, and between
    qualified and unqualified forms.
  • Resolve merge conflicts in import section automatically. See an
    example of such conflict.

Installation

Installation process assumes that you have already installed and configured stack
build tool. Currently importify works only with projects built with stack.

Installing from Stackage

Install just as every usual package.

  1. stack install importify

Installing from source

Perform the next steps before driving:

  1. git clone https://github.com/serokell/importify.git # 1. Clone repository locally
  2. cd importify # 2. Step into folder
  3. stack install importify\:exe\:importify # 3. Copy executable under ~/.local/bin

Usage

In short:

  1. $ cd my-project-which-build-with-stack
  2. $ importify cache
  3. $ importify file path/to/File/With/Unused/Imports.hs

importify has several commands. Most important is

  1. importify --help

Before removing redundant imports run importify cache
command. Importify stores local cache for the project under the
.importify folder inside your project. This cache stores exported
entities for each module for every dependency and for all your local
packages. Make sure to re-run importify cache if you change the list
of exported functions and types in your project modules. Cache is
built incrementally; it builds dependencies only once. But if you add
dependencies or use other versions of them (for instance, because of
bumping stack lts) you need to run importify cache again. You can
always perform rm -rf .importify before caching if you face any
troubles.

After the cache is built, you can use importify file PATH_TO_FILE
command from your project root directory. This command runs
Importify on the file and prints the result in the terminal. If you
want to change a file in-place use the following command:

  1. importify file -i PATH_TO_FILE