hsume2-aka 0.3.2 → 0.4.1
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/README.md +11 -3
- data/bin/aka +18 -0
- data/bin/build +37 -0
- data/bin/postinstall +3 -0
- data/bin/postremove +3 -0
- data/lib/aka/configuration.pb.rb +41 -0
- data/lib/aka/configuration.proto +20 -0
- data/lib/aka/link_manager.rb +30 -0
- data/lib/aka/man/aka-add.1 +1 -1
- data/lib/aka/man/aka-add.1.txt +1 -1
- data/lib/aka/man/aka-edit.1 +1 -1
- data/lib/aka/man/aka-edit.1.txt +1 -1
- data/lib/aka/man/aka-generate.1 +1 -1
- data/lib/aka/man/aka-generate.1.txt +1 -1
- data/lib/aka/man/aka-link.1 +1 -1
- data/lib/aka/man/aka-link.1.txt +1 -1
- data/lib/aka/man/aka-list.1 +1 -1
- data/lib/aka/man/aka-list.1.txt +1 -1
- data/lib/aka/man/aka-remove.1 +1 -1
- data/lib/aka/man/aka-remove.1.txt +1 -1
- data/lib/aka/man/aka-show.1 +1 -1
- data/lib/aka/man/aka-show.1.txt +1 -1
- data/lib/aka/man/aka-sync.1 +1 -1
- data/lib/aka/man/aka-sync.1.txt +1 -1
- data/lib/aka/man/aka-upgrade.1 +3 -3
- data/lib/aka/man/aka-upgrade.1.txt +3 -3
- data/lib/aka/man/aka.7 +4 -4
- data/lib/aka/man/aka.7.txt +4 -4
- data/lib/aka/shortcut.rb +43 -0
- data/lib/aka/{shortcuts.rb → shortcut_manager.rb} +16 -34
- data/lib/aka/store.rb +92 -39
- data/lib/aka/upgrader.rb +45 -12
- data/lib/aka/version.rb +1 -1
- data/lib/aka.rb +4 -3
- metadata +23 -74
- data/.gitignore +0 -11
- data/.ruby-version.example +0 -1
- data/.travis.yml +0 -4
- data/Gemfile +0 -8
- data/Guardfile +0 -6
- data/Rakefile +0 -98
- data/aka.gemspec +0 -28
- data/features/aka/add.feature +0 -199
- data/features/aka/edit.feature +0 -196
- data/features/aka/generate.feature +0 -117
- data/features/aka/help.feature +0 -112
- data/features/aka/link.feature +0 -339
- data/features/aka/list.feature +0 -62
- data/features/aka/remove.feature +0 -52
- data/features/aka/show.feature +0 -38
- data/features/aka/upgrade.feature +0 -137
- data/features/step_definitions/aka_steps.rb +0 -3
- data/features/support/env.rb +0 -80
- data/lib/aka/configuration.rb +0 -94
- data/lib/aka/links.rb +0 -33
- data/lib/aka/man/.gitkeep +0 -0
- data/man/aka-add.1.ronn +0 -32
- data/man/aka-edit.1.ronn +0 -67
- data/man/aka-generate.1.ronn +0 -51
- data/man/aka-link.1.ronn +0 -49
- data/man/aka-list.1.ronn +0 -51
- data/man/aka-remove.1.ronn +0 -21
- data/man/aka-show.1.ronn +0 -27
- data/man/aka-sync.1.ronn +0 -31
- data/man/aka-upgrade.1.ronn +0 -22
- data/man/aka.7.ronn +0 -120
- data/test/tc_something.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f0b27b609206bce2e4823a1a725eb4cd306a1df
|
4
|
+
data.tar.gz: 3722a3fb045fd6de7ccb08d76ced37375d96a3a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2112b82f8e06dfb5396cb85ba2abc7612438f6e4b3dd0364e53c40da3ee852400bd86dea97445a0891640fc20c4baa9d47a1979aeee21840b22541718047f338
|
7
|
+
data.tar.gz: 070aa70d2079222da19ae3b193b30ffdfe4946c088c4050bca63141183d5a7f7f55868eb68cfe72a9a2080b18416ead2cc02ce95da508a8d0ce023622b0488ef
|
data/README.md
CHANGED
@@ -38,6 +38,14 @@ With **aka**, you can add, show, edit, remove, list keyboard shortcuts. On top o
|
|
38
38
|
|
39
39
|
$ gem install hsume2-aka
|
40
40
|
|
41
|
+
### Debian/Ubuntu
|
42
|
+
|
43
|
+
$ curl -OL https://github.com/hsume2/aka/raw/v0.4.0/pkg/aka_0.4.0_amd64.deb && sudo dpkg -i aka_0.4.0_amd64.deb
|
44
|
+
|
45
|
+
### OS X
|
46
|
+
|
47
|
+
$ curl -OL https://github.com/hsume2/aka/raw/v0.4.0/pkg/aka-0.4.0.pkg && open aka-0.4.0.pkg
|
48
|
+
|
41
49
|
## EXAMPLES
|
42
50
|
|
43
51
|
Add a keyboard shortcut and generate the output script:
|
@@ -117,10 +125,10 @@ Synchronize links:
|
|
117
125
|
Upgrade links from v0 to v1:
|
118
126
|
|
119
127
|
$ aka upgrade
|
120
|
-
Upgraded ~/.aka.
|
121
|
-
Backed up to ~/.aka.
|
128
|
+
Upgraded ~/.aka.db.
|
129
|
+
Backed up to ~/.aka.db.backup.
|
122
130
|
|
123
131
|
## ENVIRONMENT
|
124
132
|
|
125
133
|
* `AKA`:<br>
|
126
|
-
The file where **aka** stores everything. Default: ~/.aka.
|
134
|
+
The file where **aka** stores everything. Default: ~/.aka.db
|
data/bin/aka
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# resolve bin path, ignoring symlinks
|
4
|
+
require "pathname"
|
5
|
+
bin_file = Pathname.new(__FILE__).realpath
|
6
|
+
|
7
|
+
# add locally vendored gems to libpath
|
8
|
+
gem_dir = File.expand_path("../../vendor/gems", bin_file)
|
9
|
+
Dir["#{gem_dir}/**/lib"].each do |libdir|
|
10
|
+
$:.unshift libdir
|
11
|
+
end
|
12
|
+
|
13
|
+
# add self to libpath
|
14
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
15
|
+
|
16
|
+
if RUBY_VERSION < '1.9.0' # this is a string comparison, but it should work for any old ruby version
|
17
|
+
$stderr.puts "aka requires Ruby 1.9+."
|
18
|
+
exit 1
|
19
|
+
end
|
20
|
+
|
3
21
|
require 'aka.rb'
|
4
22
|
|
5
23
|
Aka::App.go!
|
data/bin/build
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require 'shellwords'
|
5
|
+
require "bundler/setup"
|
6
|
+
require "aka"
|
7
|
+
|
8
|
+
GEM_BLACKLIST = %w( bundler aka )
|
9
|
+
|
10
|
+
target_dir = Dir.pwd
|
11
|
+
|
12
|
+
FileUtils.rm_rf "#{target_dir}/vendor/gems"
|
13
|
+
|
14
|
+
%x{env BUNDLE_WITHOUT="development:test" bundle show}.split("\n").each do |line|
|
15
|
+
if line =~ /^ \* (.*?) \((.*?)\)/
|
16
|
+
next if GEM_BLACKLIST.include?($1)
|
17
|
+
gem_dir = %x{ bundle show #{$1} }.strip
|
18
|
+
FileUtils.mkdir_p "#{target_dir}/vendor/gems"
|
19
|
+
%x{ cp -R "#{gem_dir}" "#{target_dir}/vendor/gems" }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
FileUtils.mkdir_p "#{target_dir}/pkg"
|
24
|
+
|
25
|
+
description = Gem::Specification.find_by_name('aka').description
|
26
|
+
|
27
|
+
system("rake man:build")
|
28
|
+
|
29
|
+
%x{which pkgbuild}
|
30
|
+
|
31
|
+
if $?.success?
|
32
|
+
package_type = 'osxpkg'
|
33
|
+
else
|
34
|
+
package_type = 'deb'
|
35
|
+
end
|
36
|
+
|
37
|
+
system(%{fpm -s dir -t #{package_type} -n aka -v #{Aka::VERSION} --after-install #{target_dir}/bin/postinstall --after-remove #{target_dir}/bin/postremove --prefix /usr/local/aka --description #{Shellwords.escape(description)} -x .git -x pkg -x man -x test -x features -x tmp -x .bundle -p pkg .})
|
data/bin/postinstall
ADDED
data/bin/postremove
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
##
|
4
|
+
# This file is auto-generated. DO NOT EDIT!
|
5
|
+
#
|
6
|
+
require 'protobuf/message'
|
7
|
+
|
8
|
+
|
9
|
+
##
|
10
|
+
# Message Classes
|
11
|
+
#
|
12
|
+
class Configuration < ::Protobuf::Message
|
13
|
+
class Shortcut < ::Protobuf::Message; end
|
14
|
+
class Link < ::Protobuf::Message; end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
##
|
21
|
+
# Message Fields
|
22
|
+
#
|
23
|
+
class Configuration
|
24
|
+
class Shortcut
|
25
|
+
required :string, :shortcut, 1
|
26
|
+
required :string, :command, 2
|
27
|
+
repeated :string, :tag, 3
|
28
|
+
optional :string, :description, 4
|
29
|
+
optional :bool, :function, 5
|
30
|
+
end
|
31
|
+
|
32
|
+
class Link
|
33
|
+
repeated :string, :tag, 1
|
34
|
+
required :string, :output, 2
|
35
|
+
end
|
36
|
+
|
37
|
+
required :string, :version, 1
|
38
|
+
repeated ::Configuration::Shortcut, :shortcuts, 2
|
39
|
+
repeated ::Configuration::Link, :links, 3
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
message Configuration {
|
2
|
+
required string version = 1;
|
3
|
+
|
4
|
+
message Shortcut {
|
5
|
+
required string shortcut = 1;
|
6
|
+
required string command = 2;
|
7
|
+
repeated string tag = 3;
|
8
|
+
optional string description = 4;
|
9
|
+
optional bool function = 5;
|
10
|
+
}
|
11
|
+
|
12
|
+
repeated Shortcut shortcuts = 2;
|
13
|
+
|
14
|
+
message Link {
|
15
|
+
repeated string tag = 1;
|
16
|
+
required string output = 2;
|
17
|
+
}
|
18
|
+
|
19
|
+
repeated Link links = 3;
|
20
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Aka
|
2
|
+
class LinkManager
|
3
|
+
def initialize(links)
|
4
|
+
@links = links
|
5
|
+
end
|
6
|
+
|
7
|
+
def find(link)
|
8
|
+
@links.find do |item|
|
9
|
+
item == link
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def add(new_link)
|
14
|
+
return if found = find(new_link)
|
15
|
+
@links << new_link
|
16
|
+
end
|
17
|
+
|
18
|
+
def remove(key)
|
19
|
+
@links.delete_at(key.to_i - 1)
|
20
|
+
end
|
21
|
+
|
22
|
+
def any?(&block)
|
23
|
+
@links.any?(&block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def each(&block)
|
27
|
+
@links.each(&block)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/aka/man/aka-add.1
CHANGED
data/lib/aka/man/aka-add.1.txt
CHANGED
data/lib/aka/man/aka-edit.1
CHANGED
data/lib/aka/man/aka-edit.1.txt
CHANGED
data/lib/aka/man/aka-generate.1
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "AKA\-GENERATE" "1" "
|
4
|
+
.TH "AKA\-GENERATE" "1" "August 2016" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBaka\-generate\fR \- Generate commands for loading keyboard shortcuts into your shell
|
data/lib/aka/man/aka-link.1
CHANGED
data/lib/aka/man/aka-link.1.txt
CHANGED
data/lib/aka/man/aka-list.1
CHANGED
data/lib/aka/man/aka-list.1.txt
CHANGED
data/lib/aka/man/aka-remove.1
CHANGED
data/lib/aka/man/aka-show.1
CHANGED
data/lib/aka/man/aka-show.1.txt
CHANGED
data/lib/aka/man/aka-sync.1
CHANGED
data/lib/aka/man/aka-sync.1.txt
CHANGED
data/lib/aka/man/aka-upgrade.1
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "AKA\-UPGRADE" "1" "
|
4
|
+
.TH "AKA\-UPGRADE" "1" "August 2016" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBaka\-upgrade\fR \- Upgrade keyboard shortcuts
|
@@ -20,8 +20,8 @@ Upgrade links from v0 to v1:
|
|
20
20
|
.nf
|
21
21
|
|
22
22
|
$ aka upgrade
|
23
|
-
Upgraded ~/\.aka\.
|
24
|
-
Backed up to ~/\.aka\.
|
23
|
+
Upgraded ~/\.aka\.db\.
|
24
|
+
Backed up to ~/\.aka\.db\.backup\.
|
25
25
|
.
|
26
26
|
.fi
|
27
27
|
.
|
@@ -17,8 +17,8 @@ EXAMPLES
|
|
17
17
|
|
18
18
|
|
19
19
|
$ aka upgrade
|
20
|
-
Upgraded ~/.aka.
|
21
|
-
Backed up to ~/.aka.
|
20
|
+
Upgraded ~/.aka.db.
|
21
|
+
Backed up to ~/.aka.db.backup.
|
22
22
|
|
23
23
|
|
24
24
|
|
@@ -27,4 +27,4 @@ SEE ALSO
|
|
27
27
|
|
28
28
|
|
29
29
|
|
30
|
-
|
30
|
+
August 2016 AKA-UPGRADE(1)
|
data/lib/aka/man/aka.7
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "AKA" "7" "
|
4
|
+
.TH "AKA" "7" "August 2016" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBaka\fR \- Manage Shell Keyboard Shortcuts
|
@@ -228,8 +228,8 @@ Upgrade links from v0 to v1:
|
|
228
228
|
.nf
|
229
229
|
|
230
230
|
$ aka upgrade
|
231
|
-
Upgraded ~/\.aka\.
|
232
|
-
Backed up to ~/\.aka\.
|
231
|
+
Upgraded ~/\.aka\.db\.
|
232
|
+
Backed up to ~/\.aka\.db\.backup\."
|
233
233
|
.
|
234
234
|
.fi
|
235
235
|
.
|
@@ -241,6 +241,6 @@ Backed up to ~/\.aka\.yml\.backup\."
|
|
241
241
|
\fBAKA\fR:
|
242
242
|
.
|
243
243
|
.br
|
244
|
-
The file where \fBaka\fR stores everything\. Default: ~/\.aka\.
|
244
|
+
The file where \fBaka\fR stores everything\. Default: ~/\.aka\.db
|
245
245
|
|
246
246
|
|
data/lib/aka/man/aka.7.txt
CHANGED
@@ -155,17 +155,17 @@ EXAMPLES
|
|
155
155
|
|
156
156
|
|
157
157
|
$ aka upgrade
|
158
|
-
Upgraded ~/.aka.
|
159
|
-
Backed up to ~/.aka.
|
158
|
+
Upgraded ~/.aka.db.
|
159
|
+
Backed up to ~/.aka.db.backup."
|
160
160
|
|
161
161
|
|
162
162
|
|
163
163
|
ENVIRONMENT
|
164
164
|
AKA:
|
165
|
-
The file where aka stores everything. Default: ~/.aka.
|
165
|
+
The file where aka stores everything. Default: ~/.aka.db
|
166
166
|
|
167
167
|
|
168
168
|
|
169
169
|
|
170
170
|
|
171
|
-
|
171
|
+
August 2016 AKA(7)
|
data/lib/aka/shortcut.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module Aka
|
2
|
+
class Shortcut
|
3
|
+
def self.parse(options)
|
4
|
+
self.new.tap do |row|
|
5
|
+
row.shortcut = options['shortcut']
|
6
|
+
row.command = options['command']
|
7
|
+
row.tag = options['tag'] if options['tag']
|
8
|
+
row.description = options['description'] if options['description']
|
9
|
+
row.function = options['function'] if options['function']
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.generate_output(row)
|
14
|
+
string = if row.function
|
15
|
+
<<-EOS.gsub(/^ /, '')
|
16
|
+
function #{row.shortcut} {
|
17
|
+
#{row.command}
|
18
|
+
}
|
19
|
+
EOS
|
20
|
+
else
|
21
|
+
%{alias #{row.shortcut}="#{row.command.gsub(%{"}, %{\\"})}"}
|
22
|
+
end
|
23
|
+
|
24
|
+
string
|
25
|
+
end
|
26
|
+
|
27
|
+
attr_accessor :shortcut
|
28
|
+
attr_accessor :command
|
29
|
+
attr_accessor :tag
|
30
|
+
attr_accessor :description
|
31
|
+
attr_accessor :function
|
32
|
+
|
33
|
+
def to_hash
|
34
|
+
{
|
35
|
+
:shortcut => self.shortcut,
|
36
|
+
:command => self.command,
|
37
|
+
:tag => self.tag,
|
38
|
+
:description => self.description,
|
39
|
+
:function => self.function
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,42 +1,31 @@
|
|
1
1
|
module Aka
|
2
|
-
class
|
2
|
+
class ShortcutManager
|
3
3
|
def initialize(shortcuts)
|
4
|
-
@shortcuts = shortcuts
|
4
|
+
@shortcuts = shortcuts
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
@shortcuts
|
7
|
+
def add(shortcut)
|
8
|
+
@shortcuts << shortcut
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
@shortcuts
|
13
|
-
|
14
|
-
|
15
|
-
def delete(key)
|
16
|
-
@shortcuts.delete(key)
|
17
|
-
end
|
18
|
-
|
19
|
-
def count
|
20
|
-
result, _ = @shortcuts.max { |(n, _)| n }
|
21
|
-
result || 0
|
22
|
-
end
|
23
|
-
|
24
|
-
def all
|
25
|
-
@shortcuts.dup
|
11
|
+
def remove(shortcut)
|
12
|
+
@shortcuts.delete_if do |item|
|
13
|
+
item == shortcut
|
14
|
+
end
|
26
15
|
end
|
27
16
|
|
28
17
|
def find(options)
|
29
18
|
if options[:tag]
|
30
|
-
@shortcuts.select do |
|
31
|
-
next unless
|
19
|
+
@shortcuts.select do |shortcut|
|
20
|
+
next unless shortcut.shortcut == options[:shortcut]
|
32
21
|
|
33
22
|
options[:tag].find do |tag|
|
34
|
-
|
23
|
+
shortcut.tag && shortcut.tag.include?(tag)
|
35
24
|
end
|
36
25
|
end
|
37
26
|
else
|
38
|
-
@shortcuts.select do |
|
39
|
-
|
27
|
+
@shortcuts.select do |shortcut|
|
28
|
+
shortcut.shortcut == options[:shortcut]
|
40
29
|
end
|
41
30
|
end
|
42
31
|
end
|
@@ -48,9 +37,9 @@ module Aka
|
|
48
37
|
excluded = match_by_tag(options[:tag] || []) do |tag, rows|
|
49
38
|
rows.each do |row|
|
50
39
|
unless row.function
|
51
|
-
scripts <<
|
40
|
+
scripts << Shortcut.generate_output(row)
|
52
41
|
else
|
53
|
-
functions <<
|
42
|
+
functions << Shortcut.generate_output(row)
|
54
43
|
end
|
55
44
|
end
|
56
45
|
end
|
@@ -80,13 +69,6 @@ module Aka
|
|
80
69
|
excluded
|
81
70
|
end
|
82
71
|
|
83
|
-
def excluded_output(excluded)
|
84
|
-
return if excluded[:tags].empty?
|
85
|
-
|
86
|
-
tags = excluded[:tags].map { |t| '#' + t }.join(', ')
|
87
|
-
$stderr.puts "#{excluded[:shortcuts]} shortcut(s) excluded (#{tags})."
|
88
|
-
end
|
89
|
-
|
90
72
|
def match_by_tag(tags, &blk)
|
91
73
|
excluded = { :tags => [], :shortcuts => 0 }
|
92
74
|
|
@@ -105,7 +87,7 @@ module Aka
|
|
105
87
|
end
|
106
88
|
|
107
89
|
def by_tag
|
108
|
-
@shortcuts.inject({ :default => [] }) do |acc,
|
90
|
+
@shortcuts.inject({ :default => [] }) do |acc, row|
|
109
91
|
if row.tag && !row.tag.empty?
|
110
92
|
row.tag.each do |tag|
|
111
93
|
acc[tag] ||= []
|