alias-manager 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a7f1d554c38bda992ad3ea7a07b6f7ebf5f68a25
4
+ data.tar.gz: 2d8e4995de0cf8988c74ddf6f7265c7e7162a7f2
5
+ SHA512:
6
+ metadata.gz: 9362f6007a1280d4575f95298adc37ea392bb569cd9c775b00f724112b0942d2450d3f3c8a296d530749e6a7ccb0453a20f7b32f197aa5364f18d6e7617d2c59
7
+ data.tar.gz: c1f46ed7926c9aa9e21e7b9e5ed4eafa0b1e6eb4e9dfddbdd05257a124d2f77266f94710f353000bb29c0e716b300f5ae1a8a038163eb599ffc7840abb763e87
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/alias_manager'
4
+
5
+ AliasManager.run
@@ -0,0 +1,27 @@
1
+ require_relative 'alias_manager/alias'
2
+ require_relative 'alias_manager/log_line'
3
+
4
+ module AliasManager
5
+
6
+ def self.run
7
+ commands_by_counts = LogLine.counts
8
+
9
+ unused_aliases = Alias.all.select do |aliaz|
10
+ commands_by_counts[aliaz.abbreviation] == nil
11
+ end
12
+
13
+ puts "You have never used these aliases in the past #{LogLine.all.count} commands:"
14
+ puts unused_aliases.map(&:string)
15
+
16
+ puts "You should remove them from your zshrc."
17
+
18
+ used_once_aliases = Alias.all.select do |aliaz|
19
+ commands_by_counts[aliaz.abbreviation] == 1
20
+ end
21
+
22
+ 3.times { puts '' }
23
+ puts "You have used these aliases only once in the past #{LogLine.all.count} commands:"
24
+ puts used_once_aliases.map(&:string)
25
+ puts "You should use them more, or consider removing them from your zshrc."
26
+ end
27
+ end
@@ -0,0 +1,22 @@
1
+ module AliasManager
2
+ class Alias < Struct.new(:string)
3
+
4
+ def self.all
5
+ @all ||= `echo "source #{ENV['HOME']}/.zshrc; alias -L" | /bin/zsh`.split("\n").select do |alias_line|
6
+ alias_line[/alias\s+[^=]*=/]
7
+ end.map do |string|
8
+ new(string)
9
+ end
10
+ end
11
+
12
+ def abbreviation
13
+ string.match(/alias\s+([^=]*)=/)[1]
14
+ end
15
+
16
+ def command
17
+ string.match(/='?"?([^'"]*)'?"?/)[1]
18
+ end
19
+
20
+
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ module AliasManager
2
+ class LogLine
3
+ def self.all
4
+ logs = File.readlines("#{ENV['HOME']}/.zsh_history")
5
+
6
+ logs.map do |log_line|
7
+ log_line.force_encoding("iso-8859-1").split(";").last.chomp.split(" ").first
8
+ end
9
+ end
10
+
11
+ def self.counts
12
+ all.group_by { |command| command }.map do |command, commands|
13
+ [command, commands.count]
14
+ end.to_h
15
+ end
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alias-manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Victor Mours
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-13 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Alias Manager finds which of your aliases are unused and which ones can
14
+ be improved
15
+ email: victor.mours@gmail.com
16
+ executables:
17
+ - alias-manager
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/alias-manager
22
+ - lib/alias_manager.rb
23
+ - lib/alias_manager/alias.rb
24
+ - lib/alias_manager/log_line.rb
25
+ homepage:
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.4.5
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Better shell alias management
49
+ test_files: []