#compdef bedtools
#autoload

local curcontext="$curcontext" state line ret=1
local -a _files

_arguments -C \
  '1: :->cmds' \
  '2:: :->args' && ret=0

case $state in
  cmds)
    _values "bedtools command" \
        "--contact[Feature requests, bugs, mailing lists, etc.]" \
        "--help[Print this help menu.]" \
        "--version[What version of bedtools are you using?.]" \
        "annotate[Annotate coverage of features from multiple files.]" \
        "bamtobed[Convert BAM alignments to BED (& other) formats.]" \
        "bamtofastq[Convert BAM records to FASTQ records.]" \
        "bed12tobed6[Breaks BED12 intervals into discrete BED6 intervals.]" \
        "bedpetobam[Convert BEDPE intervals to BAM records.]" \
        "bedtobam[Convert intervals to BAM records.]" \
        "closest[Find the closest, potentially non-overlapping interval.]" \
        "cluster[Cluster (but don't merge) overlapping/nearby intervals.]" \
        "complement[Extract intervals _not_ represented by an interval file.]" \
        "coverage[Compute the coverage over defined intervals.]" \
        "expand[Replicate lines based on lists of values in columns.]" \
        "fisher[Calculate Fisher statistic b/w two feature files.]" \
        "flank[Create new intervals from the flanks of existing intervals.]" \
        "genomecov[Compute the coverage over an entire genome.]" \
        "getfasta[Use intervals to extract sequences from a FASTA file.]" \
        "groupby[Group by common cols. & summarize oth. cols. (~ SQL "groupBy")]" \
        "igv[Create an IGV snapshot batch script.]" \
        "intersect[Find overlapping intervals in various ways.]" \
        "jaccard[Calculate the Jaccard statistic b/w two sets of intervals.]" \
        "links[Create a HTML page of links to UCSC locations.]" \
        "makewindows[Make interval "windows" across a genome.]" \
        "map[Apply a function to a column for each overlapping interval.]" \
        "maskfasta[Use intervals to mask sequences from a FASTA file.]" \
        "merge[Combine overlapping/nearby intervals into a single interval.]" \
        "multicov[Counts coverage from multiple BAMs at specific intervals.]" \
        "multiinter[Identifies common intervals among multiple interval files.]" \
        "nuc[Profile the nucleotide content of intervals in a FASTA file.]" \
        "overlap[Computes the amount of overlap from two intervals.]" \
        "pairtobed[Find pairs that overlap intervals in various ways.]" \
        "pairtopair[Find pairs that overlap other pairs in various ways.]" \
        "random[Generate random intervals in a genome.]" \
        "reldist[Calculate the distribution of relative distances b/w two files.]" \
        "sample[Sample random records from file using reservoir sampling.]" \
        "shuffle[Randomly redistrubute intervals in a genome.]" \
        "slop[Adjust the size of intervals.]" \
        "sort[Order the intervals in a file.]" \
        "subtract[Remove intervals based on overlaps b/w two files.]" \
        "tag[Tag BAM alignments based on overlaps with interval files.]" \
        "unionbedg[Combines coverage intervals from multiple BEDGRAPH files.]" \
        "window[Find overlapping intervals within a window around an interval.]" \
    ret=0
    ;;
  *)
    _files
    ;;
esac

return ret