1234567891011121314151617181920212223242526272829303132333435 |
- #!/usr/bin/env ruby
- #
- # pbrisbin 2013 - smartly update haskell ctags.
- #
- ###
- class Ctags
- def initialize(tags)
- @tags = tags || 'tags'
- @module = find_module or exit 1
- end
-
- def run
- system(%{ echo ":ctags #{@tags}" | cabal exec ghci -- -v0 '#{@module}' })
- end
-
- private
-
- def find_module
- Dir.glob(module_glob, File::FNM_CASEFOLD).first
- end
-
- def module_glob
- File.join('**', "{#{module_name},main}.hs")
- end
-
- def module_name
- File.join(*project_directory.split('-'))
- end
-
- def project_directory
- File.basename(ENV['PWD'])
- end
- end
-
- Ctags.new(ARGV.first).run
|