aia 0.0.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +115 -27
- data/bin/aia +2 -4
- data/lib/aia/cli.rb +179 -0
- data/lib/aia/configuration.rb +44 -0
- data/lib/aia/external/,keep +0 -0
- data/lib/aia/external/.irbrc +11 -0
- data/lib/aia/external/ag.rb +103 -0
- data/lib/aia/external/bat.rb +189 -0
- data/lib/aia/external/fzf.rb +147 -0
- data/lib/aia/external/glow.rb +37 -0
- data/lib/aia/external/mods.rb +57 -0
- data/lib/aia/external/rg.rb +1163 -0
- data/lib/aia/external/sgpt.rb +58 -0
- data/lib/aia/external/subl.rb +47 -0
- data/lib/aia/external/temp.md +37 -0
- data/lib/aia/external/tool.rb +73 -0
- data/lib/aia/external.rb +259 -0
- data/lib/aia/external_two.rb +43 -0
- data/lib/aia/logging.rb +22 -0
- data/lib/aia/main.rb +39 -0
- data/lib/aia/prompt_processing.rb +212 -0
- data/lib/aia/version.rb +2 -1
- data/lib/aia.rb +4 -381
- data/lib/modularization_plan.md +126 -0
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4d68353a3458a4a3e485acbf09ec6444e63d33ddaedca66a1f48aaf38b31a96
|
4
|
+
data.tar.gz: b2d07bde2cb329db6f23ccda5c845b67251f00f5bdfab680406d671a32ee0b32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d27e5190de909b14a71a52f2eea78b8d948de6cbe5c621f3b10e819404d0a9a78087c5da748598b6dfbf8af88ece61382c407d62382eadb062ad0582d5f4b8f9
|
7
|
+
data.tar.gz: 6cc9b0ad1d570f0cb994e06af614d4faea07b356303042fa1e1bfe03ed12a62f273824e0240b8bb2cb46a64b6f195dd715b15161a228255f3d2639fc1648e61e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.3.0] = 2023-11-23
|
4
|
+
|
5
|
+
- Matching version to [prompt_manager](https://github.com/prompt_manager) This version allows for the user of history in the entery of values to prompt keywords. KW_HISTORY_MAX is set at 5. Changed CLI enteraction to use historical selection and editing of prior keyword values.
|
6
|
+
|
3
7
|
## [0.1.0] - 2023-11-23
|
4
8
|
|
5
9
|
- Initial release
|
data/README.md
CHANGED
@@ -1,11 +1,27 @@
|
|
1
1
|
# AI Assistant (AIA)
|
2
2
|
|
3
|
-
**Under Development**
|
4
|
-
|
5
3
|
`aia` is a command-line utility that integrates prameterized prompt management with generative AI (gen-AI) execution.
|
6
4
|
|
7
5
|
Uses the gem "prompt_manager" to manage the prompts sent to the `mods` command-line utility. Uses the command line tools "ripgrep" to search for prompts to send and "fzf" to select the prompts that match the search term.
|
8
6
|
|
7
|
+
**Most Recent Change**
|
8
|
+
|
9
|
+
v0.3.0 - Matching version to [prompt_manager](https://github.com/prompt_manager) This version allows for the user of history in the entery of values to prompt keywords. KW_HISTORY_MAX is set at 5. Changed CLI enteraction to use historical selection and editing of prior keyword values.
|
10
|
+
|
11
|
+
|
12
|
+
<!-- Tocer[start]: Auto-generated, don't remove. -->
|
13
|
+
|
14
|
+
## Table of Contents
|
15
|
+
|
16
|
+
- [Installation](#installation)
|
17
|
+
- [Usage](#usage)
|
18
|
+
- [System Environment Variables (envars)](#system-environment-variables-envars)
|
19
|
+
- [External CLI Tools Used](#external-cli-tools-used)
|
20
|
+
- [Development](#development)
|
21
|
+
- [Contributing](#contributing)
|
22
|
+
- [License](#license)
|
23
|
+
|
24
|
+
<!-- Tocer[finish]: Auto-generated, don't remove. -->
|
9
25
|
|
10
26
|
|
11
27
|
## Installation
|
@@ -31,48 +47,120 @@ TODO: don't forget to mention have access token (API keys) setup as envars for t
|
|
31
47
|
|
32
48
|
## Usage
|
33
49
|
|
34
|
-
|
50
|
+
```text
|
51
|
+
$ aia --help
|
52
|
+
|
53
|
+
aia v0.0.5
|
54
|
+
|
55
|
+
Usage: aia [options] prompt_id [context_file]* [-- external_options+]
|
56
|
+
|
57
|
+
Options
|
58
|
+
-------
|
59
|
+
|
60
|
+
Edit the Prompt File -e --edit
|
61
|
+
default: false
|
62
|
+
|
63
|
+
Turn On Debugging -d --debug
|
64
|
+
default: false
|
65
|
+
|
66
|
+
Be Verbose -v --verbose
|
67
|
+
default: false
|
68
|
+
|
69
|
+
Print Version --version
|
70
|
+
default: false
|
71
|
+
|
72
|
+
Show Usage -h --help
|
73
|
+
default: false
|
74
|
+
|
75
|
+
Use Fuzzy Matching --fuzzy
|
76
|
+
default: false
|
77
|
+
|
78
|
+
Out FILENAME -o --output --no-output
|
79
|
+
default: ./temp.md
|
35
80
|
|
36
|
-
|
81
|
+
Log FILEPATH -l --log --no-log
|
82
|
+
default: $HOME/.prompts/_prompts.log
|
37
83
|
|
38
|
-
|
39
|
-
|
84
|
+
Format with Markdown -m --markdown --no-markdown --md --no-md
|
85
|
+
default: true
|
86
|
+
```
|
40
87
|
|
41
|
-
|
88
|
+
Turn on `verbose` with `help` to see more usage information that includes system environment variables and external CLI tools that are used.
|
42
89
|
|
43
|
-
|
90
|
+
```text
|
91
|
+
$ aia --help --verbose
|
92
|
+
```
|
44
93
|
|
94
|
+
## System Environment Variables (envars)
|
95
|
+
|
96
|
+
From the verbose help text ...
|
45
97
|
|
46
98
|
```text
|
47
|
-
$ aia -h
|
48
|
-
Use generative AI with saved parameterized prompts
|
49
99
|
|
50
|
-
|
100
|
+
System Environment Variables Used
|
101
|
+
---------------------------------
|
102
|
+
|
103
|
+
The OUTPUT and PROMPT_LOG envars can be overridden
|
104
|
+
by cooresponding options on the command line.
|
105
|
+
|
106
|
+
Name Default Value
|
107
|
+
-------------- -------------------------
|
108
|
+
PROMPTS_DIR $HOME/.prompts_dir
|
109
|
+
AI_CLI_PROGRAM mods
|
110
|
+
EDITOR edit
|
111
|
+
MODS_MODEL gpt-4-1106-preview
|
112
|
+
OUTPUT ./temp.md
|
113
|
+
PROMPT_LOG $PROMPTS_DIR/_prompts.log
|
114
|
+
|
115
|
+
These two are required for access the OpenAI
|
116
|
+
services. The have the same value but different
|
117
|
+
programs use different envar names.
|
118
|
+
|
119
|
+
To get an OpenAI access key/token (same thing)
|
120
|
+
you must first create an account at OpenAI.
|
121
|
+
Here is the link: https://platform.openai.com/docs/overview
|
122
|
+
|
123
|
+
OPENAI_ACCESS_TOKEN
|
124
|
+
OPENAI_API_KEY
|
125
|
+
```
|
126
|
+
|
127
|
+
## External CLI Tools Used
|
128
|
+
|
129
|
+
From the verbose help text ...
|
130
|
+
|
131
|
+
```text
|
132
|
+
External Tools Used
|
133
|
+
-------------------
|
51
134
|
|
52
|
-
|
135
|
+
To install the external CLI programs used by aia:
|
136
|
+
brew install fzf mods rg
|
53
137
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
-d, --debug enable debug mode
|
58
|
-
--version print the version: 1.2.0
|
138
|
+
fzf
|
139
|
+
Command-line fuzzy finder written in Go
|
140
|
+
https://github.com/junegunn/fzf
|
59
141
|
|
60
|
-
|
61
|
-
|
62
|
-
|
142
|
+
mods
|
143
|
+
AI on the command-line
|
144
|
+
https://github.com/charmbracelet/mods
|
63
145
|
|
64
|
-
|
65
|
-
|
146
|
+
rg
|
147
|
+
Search tool like grep and The Silver Searcher
|
148
|
+
https://github.com/BurntSushi/ripgrep
|
66
149
|
|
67
|
-
|
150
|
+
A text editor whose executable is setup in the
|
151
|
+
system environment variable 'EDITOR' like this:
|
68
152
|
|
69
|
-
|
70
|
-
"-m gpt-4-1106-preview --no-limit -f"
|
153
|
+
export EDITOR="subl -w"
|
71
154
|
|
72
|
-
You can pass additional CLI options to mods like this:
|
73
|
-
"aia my options -- options for mods"
|
74
155
|
```
|
75
156
|
|
157
|
+
## Shell Completion
|
158
|
+
|
159
|
+
One of the executables with this gem is `aia_completion.sh` which contains a completion script for hte `aia` such that you specify the first few characters of a prompt ID on the command line and the shell will complete the rest of the ID for you. It works with the `bash` shell but do not know whether it works with the other shells.
|
160
|
+
|
161
|
+
To set the completion you can execute aia_completion.sh` in your `.bashrc` however, the PROMPTS_DIR environment variable must be set in order for prompt ID to work correctly.
|
162
|
+
|
163
|
+
|
76
164
|
## Development
|
77
165
|
|
78
166
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/bin/aia
CHANGED
data/lib/aia/cli.rb
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
# lib/aia/cli.rb
|
2
|
+
|
3
|
+
module AIA::Cli
|
4
|
+
def setup_cli_options(args)
|
5
|
+
@arguments = args
|
6
|
+
# TODO: consider a fixed config file: ~/,aia
|
7
|
+
@options = {
|
8
|
+
# Value
|
9
|
+
edit?: [false, "-e --edit", "Edit the Prompt File"],
|
10
|
+
debug?: [false, "-d --debug", "Turn On Debugging"],
|
11
|
+
verbose?: [false, "-v --verbose", "Be Verbose"],
|
12
|
+
version?: [false, "--version", "Print Version"],
|
13
|
+
help?: [false, "-h --help", "Show Usage"],
|
14
|
+
fuzzy?: [false, "--fuzzy", "Use Fuzzy Matching"],
|
15
|
+
# TODO: Consider dropping output in favor of always
|
16
|
+
# going to STDOUT so user can redirect or pipe somewhere else
|
17
|
+
output: [OUTPUT,"-o --output --no-output", "Out FILENAME"],
|
18
|
+
log: [PROMPT_LOG,"-l --log --no-log", "Log FILEPATH"],
|
19
|
+
markdown?: [true, "-m --markdown --no-markdown --md --no-md", "Format with Markdown"],
|
20
|
+
backend: [:mods, "-b --be --backend --no-backend", "Specify the backend prompt resolver"],
|
21
|
+
}
|
22
|
+
|
23
|
+
# Array(String)
|
24
|
+
@extra_options = [] # intended for the backend AI processor
|
25
|
+
|
26
|
+
build_reader_methods # for the @options keys
|
27
|
+
process_arguments
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def usage
|
32
|
+
usage = "\n#{MY_NAME} v#{AIA::VERSION}\n\n"
|
33
|
+
usage += "Usage: #{MY_NAME} [options] prompt_id [context_file]* [-- external_options+]\n\n"
|
34
|
+
usage += usage_options
|
35
|
+
usage += "\n"
|
36
|
+
usage += usage_notes if verbose?
|
37
|
+
|
38
|
+
usage
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def usage_options
|
43
|
+
options = [
|
44
|
+
"Options",
|
45
|
+
"-------",
|
46
|
+
""
|
47
|
+
]
|
48
|
+
|
49
|
+
max_size = @options.values.map{|o| o[2].size}.max + 2
|
50
|
+
|
51
|
+
@options.values.each do |o|
|
52
|
+
pad_size = max_size - o[2].size
|
53
|
+
options << o[2] + (" "*pad_size) + o[1]
|
54
|
+
|
55
|
+
default = o[0]
|
56
|
+
default = "./" + default.basename.to_s if o[1].include?('output')
|
57
|
+
default = default.is_a?(Pathname) ? "$HOME/" + default.relative_path_from(HOME).to_s : default
|
58
|
+
|
59
|
+
options << " default: #{default}\n"
|
60
|
+
end
|
61
|
+
|
62
|
+
options.join("\n")
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
def usage_notes
|
67
|
+
<<~EOS
|
68
|
+
#{usage_envars}
|
69
|
+
#{AIA::ExternalCommands::HELP}
|
70
|
+
EOS
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
def usage_envars
|
75
|
+
<<~EOS
|
76
|
+
System Environment Variables Used
|
77
|
+
---------------------------------
|
78
|
+
|
79
|
+
The OUTPUT and PROMPT_LOG envars can be overridden
|
80
|
+
by cooresponding options on the command line.
|
81
|
+
|
82
|
+
Name Default Value
|
83
|
+
-------------- -------------------------
|
84
|
+
PROMPTS_DIR $HOME/.prompts_dir
|
85
|
+
AI_CLI_PROGRAM mods
|
86
|
+
EDITOR edit
|
87
|
+
MODS_MODEL gpt-4-1106-preview
|
88
|
+
OUTPUT ./temp.md
|
89
|
+
PROMPT_LOG $PROMPTS_DIR/_prompts.log
|
90
|
+
|
91
|
+
These two are required for access the OpenAI
|
92
|
+
services. The have the same value but different
|
93
|
+
programs use different envar names.
|
94
|
+
|
95
|
+
To get an OpenAI access key/token (same thing)
|
96
|
+
you must first create an account at OpenAI.
|
97
|
+
Here is the link: https://platform.openai.com/docs/overview
|
98
|
+
|
99
|
+
OPENAI_ACCESS_TOKEN
|
100
|
+
OPENAI_API_KEY
|
101
|
+
|
102
|
+
EOS
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
def build_reader_methods
|
107
|
+
@options.keys.each do |key|
|
108
|
+
define_singleton_method(key) do
|
109
|
+
@options[key][0]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
def process_arguments
|
116
|
+
@options.keys.each do |option|
|
117
|
+
check_for option
|
118
|
+
end
|
119
|
+
|
120
|
+
# get the options meant for the backend AI command
|
121
|
+
extract_extra_options
|
122
|
+
|
123
|
+
bad_options = @arguments.select{|a| a.start_with?('-')}
|
124
|
+
|
125
|
+
unless bad_options.empty?
|
126
|
+
puts <<~EOS
|
127
|
+
|
128
|
+
ERROR: Unknown options: #{bad_options.join(' ')}
|
129
|
+
|
130
|
+
EOS
|
131
|
+
|
132
|
+
show_usage
|
133
|
+
|
134
|
+
exit
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
def check_for(option_sym)
|
140
|
+
boolean = option_sym.to_s.end_with?('?')
|
141
|
+
switches = @options[option_sym][1].split
|
142
|
+
|
143
|
+
switches.each do |switch|
|
144
|
+
if @arguments.include?(switch)
|
145
|
+
index = @arguments.index(switch)
|
146
|
+
|
147
|
+
if boolean
|
148
|
+
@options[option_sym][0] = switch.include?('-no-') ? false : true
|
149
|
+
@arguments.slice!(index,1)
|
150
|
+
else
|
151
|
+
if switch.include?('-no-')
|
152
|
+
@options[option_sym][0] = nil
|
153
|
+
@arguments.slice!(index,1)
|
154
|
+
else
|
155
|
+
@options[option_sym][0] = @arguments[index + 1]
|
156
|
+
@arguments.slice!(index,2)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
break
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
def show_usage
|
168
|
+
@options[:help?][0] = false
|
169
|
+
puts usage
|
170
|
+
exit
|
171
|
+
end
|
172
|
+
alias_method :show_help, :show_usage
|
173
|
+
|
174
|
+
|
175
|
+
def show_version
|
176
|
+
puts AIA::VERSION
|
177
|
+
exit
|
178
|
+
end
|
179
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# lib/aia/configuration.rb
|
2
|
+
|
3
|
+
HOME = Pathname.new(ENV['HOME'])
|
4
|
+
PROMPTS_DIR = Pathname.new(ENV['PROMPTS_DIR'] || (HOME + ".prompts_dir"))
|
5
|
+
|
6
|
+
AI_CLI_PROGRAM = "mods"
|
7
|
+
EDITOR = ENV['EDITOR'] || 'edit'
|
8
|
+
MY_NAME = "aia"
|
9
|
+
MODS_MODEL = ENV['MODS_MODEL'] || 'gpt-4-1106-preview'
|
10
|
+
OUTPUT = Pathname.pwd + "temp.md"
|
11
|
+
PROMPT_LOG = PROMPTS_DIR + "_prompts.log"
|
12
|
+
|
13
|
+
|
14
|
+
module AIA::Configuration
|
15
|
+
def setup_configuration
|
16
|
+
@prompt = nil
|
17
|
+
|
18
|
+
PromptManager::Prompt.storage_adapter =
|
19
|
+
PromptManager::Storage::FileSystemAdapter.config do |config|
|
20
|
+
config.prompts_dir = PROMPTS_DIR
|
21
|
+
config.prompt_extension = '.txt'
|
22
|
+
config.params_extension = '.json'
|
23
|
+
config.search_proc = nil
|
24
|
+
# TODO: add the rgfzz script for search_proc
|
25
|
+
end.new
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
# Get the additional CLI arguments intended for the
|
30
|
+
# backend gen-AI processor.
|
31
|
+
def extract_extra_options
|
32
|
+
extra_index = @arguments.index('--')
|
33
|
+
if extra_index.nil?
|
34
|
+
@extra_options = []
|
35
|
+
else
|
36
|
+
@extra_options = @arguments.slice!(extra_index..-1)[1..]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
end
|
File without changes
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# lib/aia/external/ag.rb
|
2
|
+
|
3
|
+
class AIA::External::Ag < AIA::External::Tool
|
4
|
+
def initialize
|
5
|
+
super
|
6
|
+
@role = :search
|
7
|
+
@desc = "the_silver_searcher Code-search similar to ack"
|
8
|
+
@url = "https://github.com/ggreer/the_silver_searcher"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
__END__
|
13
|
+
|
14
|
+
Usage: ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
|
15
|
+
|
16
|
+
Recursively search for PATTERN in PATH.
|
17
|
+
Like grep or ack, but faster.
|
18
|
+
|
19
|
+
Example:
|
20
|
+
ag -i foo /bar/
|
21
|
+
|
22
|
+
Output Options:
|
23
|
+
--ackmate Print results in AckMate-parseable format
|
24
|
+
-A --after [LINES] Print lines after match (Default: 2)
|
25
|
+
-B --before [LINES] Print lines before match (Default: 2)
|
26
|
+
--[no]break Print newlines between matches in different files
|
27
|
+
(Enabled by default)
|
28
|
+
-c --count Only print the number of matches in each file.
|
29
|
+
(This often differs from the number of matching lines)
|
30
|
+
--[no]color Print color codes in results (Enabled by default)
|
31
|
+
--color-line-number Color codes for line numbers (Default: 1;33)
|
32
|
+
--color-match Color codes for result match numbers (Default: 30;43)
|
33
|
+
--color-path Color codes for path names (Default: 1;32)
|
34
|
+
--column Print column numbers in results
|
35
|
+
--[no]filename Print file names (Enabled unless searching a single file)
|
36
|
+
-H --[no]heading Print file names before each file's matches
|
37
|
+
(Enabled by default)
|
38
|
+
-C --context [LINES] Print lines before and after matches (Default: 2)
|
39
|
+
--[no]group Same as --[no]break --[no]heading
|
40
|
+
-g --filename-pattern PATTERN
|
41
|
+
Print filenames matching PATTERN
|
42
|
+
-l --files-with-matches Only print filenames that contain matches
|
43
|
+
(don't print the matching lines)
|
44
|
+
-L --files-without-matches
|
45
|
+
Only print filenames that don't contain matches
|
46
|
+
--print-all-files Print headings for all files searched, even those that
|
47
|
+
don't contain matches
|
48
|
+
--[no]numbers Print line numbers. Default is to omit line numbers
|
49
|
+
when searching streams
|
50
|
+
-o --only-matching Prints only the matching part of the lines
|
51
|
+
--print-long-lines Print matches on very long lines (Default: >2k characters)
|
52
|
+
--passthrough When searching a stream, print all lines even if they
|
53
|
+
don't match
|
54
|
+
--silent Suppress all log messages, including errors
|
55
|
+
--stats Print stats (files scanned, time taken, etc.)
|
56
|
+
--stats-only Print stats and nothing else.
|
57
|
+
(Same as --count when searching a single file)
|
58
|
+
--vimgrep Print results like vim's :vimgrep /pattern/g would
|
59
|
+
(it reports every match on the line)
|
60
|
+
-0 --null --print0 Separate filenames with null (for 'xargs -0')
|
61
|
+
|
62
|
+
Search Options:
|
63
|
+
-a --all-types Search all files (doesn't include hidden files
|
64
|
+
or patterns from ignore files)
|
65
|
+
-D --debug Ridiculous debugging (probably not useful)
|
66
|
+
--depth NUM Search up to NUM directories deep (Default: 25)
|
67
|
+
-f --follow Follow symlinks
|
68
|
+
-F --fixed-strings Alias for --literal for compatibility with grep
|
69
|
+
-G --file-search-regex PATTERN Limit search to filenames matching PATTERN
|
70
|
+
--hidden Search hidden files (obeys .*ignore files)
|
71
|
+
-i --ignore-case Match case insensitively
|
72
|
+
--ignore PATTERN Ignore files/directories matching PATTERN
|
73
|
+
(literal file/directory names also allowed)
|
74
|
+
--ignore-dir NAME Alias for --ignore for compatibility with ack.
|
75
|
+
-m --max-count NUM Skip the rest of a file after NUM matches (Default: 10,000)
|
76
|
+
--one-device Don't follow links to other devices.
|
77
|
+
-p --path-to-ignore STRING
|
78
|
+
Use .ignore file at STRING
|
79
|
+
-Q --literal Don't parse PATTERN as a regular expression
|
80
|
+
-s --case-sensitive Match case sensitively
|
81
|
+
-S --smart-case Match case insensitively unless PATTERN contains
|
82
|
+
uppercase characters (Enabled by default)
|
83
|
+
--search-binary Search binary files for matches
|
84
|
+
-t --all-text Search all text files (doesn't include hidden files)
|
85
|
+
-u --unrestricted Search all files (ignore .ignore, .gitignore, etc.;
|
86
|
+
searches binary and hidden files as well)
|
87
|
+
-U --skip-vcs-ignores Ignore VCS ignore files
|
88
|
+
(.gitignore, .hgignore; still obey .ignore)
|
89
|
+
-v --invert-match
|
90
|
+
-w --word-regexp Only match whole words
|
91
|
+
-W --width NUM Truncate match lines after NUM characters
|
92
|
+
-z --search-zip Search contents of compressed (e.g., gzip) files
|
93
|
+
|
94
|
+
File Types:
|
95
|
+
The search can be restricted to certain types of files. Example:
|
96
|
+
ag --html needle
|
97
|
+
- Searches for 'needle' in files with suffix .htm, .html, .shtml or .xhtml.
|
98
|
+
|
99
|
+
For a list of supported file types run:
|
100
|
+
ag --list-file-types
|
101
|
+
|
102
|
+
ag was originally created by Geoff Greer. More information (and the latest release)
|
103
|
+
can be found at http://geoff.greer.fm/ag
|