pk 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -24,6 +24,9 @@ pk team list team1
24
24
  # print public keys
25
25
  pk keys team1 member1,member2
26
26
  pk keys team1
27
+
28
+ pkeys team1 member1,member2
29
+ pkeys team1
27
30
  ```
28
31
 
29
32
  ## Rough cut version
data/bin/pk CHANGED
@@ -1,98 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'thor'
3
+ require 'pk/main'
4
4
 
5
- class PkIgnoreFile
6
- PKIGNORE_NAMES = %w(pkignore .pkignore).freeze
7
-
8
- def initialize(path)
9
- @ignore_list = PKIGNORE_NAMES.dup
10
- PKIGNORE_NAMES.each do |filename|
11
- file = File.expand_path(File.join(path, filename))
12
- if File.exist? file
13
- @ignore_list = @ignore_list + File.open(file, 'r').read.split("\n")
14
- break
15
- end
16
- end
17
- end
18
-
19
- def ignore_file?(filename)
20
- ignore = false
21
- @ignore_list.each do |ignore_pattern|
22
- if File.fnmatch(ignore_pattern, filename, File::FNM_PATHNAME)
23
- ignore = true
24
- break
25
- end
26
- end
27
- ignore
28
- end
29
- end
30
-
31
- module Helper
32
-
33
- def init
34
- `mkdir -p ~/.pk/data/`
35
- end
36
-
37
- def all_members_of(team)
38
- pkignore = PkIgnoreFile.new("~/.pk/data/#{team}")
39
- [].tap do |list|
40
- `ls ~/.pk/data/#{team}`.split.each do |filename|
41
- list << filename unless pkignore.ignore_file?(filename)
42
- end
43
- end
44
- end
45
- end
46
-
47
- class Team < Thor
48
- include Helper
49
-
50
- desc "add NAME, GIT_URL", "add team repo via git clone"
51
- def add(name, git_url)
52
- init
53
- `git clone #{git_url} ~/.pk/data/#{name}`
54
- end
55
-
56
- desc "reload [TEAM]", "reload a team repo, or all teams if not specified"
57
- def reload(team=nil)
58
- init
59
- teams = Dir["#{ENV["HOME"]}/.pk/data/*/"].map{|f| File.basename(f) }
60
- teams = teams.select{|t| t == team} if team
61
- teams.each do |t|
62
- `cd ~/.pk/data/#{t} && git pull && cd -`
63
- end
64
- end
65
-
66
- desc "list [TEAM]", "list all team, or team members if team is specified"
67
- def list(team=nil)
68
- init
69
- if team
70
- all_members_of(team).each do |m|
71
- puts m
72
- end
73
- else
74
- `ls ~/.pk/data`.split.each do |t|
75
- puts t
76
- end
77
- end
78
- end
79
-
80
- end
81
-
82
- class Pk < Thor
83
- include Helper
84
-
85
- desc "keys TEAM [MEMBER1,MEMBER2,..]", "print public keys of members in a specific team"
86
- def keys(team, members=nil)
87
- init
88
- member_list = members ? members.split(',').compact : all_members_of(team)
89
- member_list.each do |member|
90
- puts `cat ~/.pk/data/#{team}/#{member}`
91
- end
92
- end
93
-
94
- desc "team", "manage teams"
95
- subcommand "team", Team
96
- end
97
-
98
- Pk.start
5
+ Pk::Main.start
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pk/main'
4
+
5
+ Pk::Keys.start
@@ -0,0 +1,19 @@
1
+ require 'pk/ignore_file'
2
+
3
+ module Pk
4
+ module Helper
5
+
6
+ def init
7
+ `mkdir -p ~/.pk/data/`
8
+ end
9
+
10
+ def all_members_of(team)
11
+ pkignore = Pk::IgnoreFile.new("~/.pk/data/#{team}")
12
+ [].tap do |list|
13
+ `ls ~/.pk/data/#{team}`.split.each do |filename|
14
+ list << filename unless pkignore.ignore_file?(filename)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module Pk
2
+ class IgnoreFile
3
+ PKIGNORE_NAMES = %w(pkignore .pkignore).freeze
4
+
5
+ def initialize(path)
6
+ @ignore_list = PKIGNORE_NAMES.dup
7
+ PKIGNORE_NAMES.each do |filename|
8
+ file = File.expand_path(File.join(path, filename))
9
+ if File.exist? file
10
+ @ignore_list = @ignore_list + File.open(file, 'r').read.split("\n")
11
+ break
12
+ end
13
+ end
14
+ end
15
+
16
+ def ignore_file?(filename)
17
+ ignore = false
18
+ @ignore_list.each do |ignore_pattern|
19
+ if File.fnmatch(ignore_pattern, filename, File::FNM_PATHNAME)
20
+ ignore = true
21
+ break
22
+ end
23
+ end
24
+ ignore
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ require 'thor'
2
+ require 'pk/helper'
3
+ require 'thor/group'
4
+
5
+ module Pk
6
+ class Keys < Thor::Group
7
+ include Helper
8
+
9
+ desc "print public keys of members in a specific team"
10
+ argument :team, :type => :string, :desc => "Team name"
11
+ argument :members, :optional => true, :type => :string, :desc => "Members separated by comma (,)"
12
+
13
+ def self.banner
14
+ "#{basename} TEAM [MEMBER1,MEMBER2,..]"
15
+ end
16
+
17
+ def keys
18
+ init
19
+ member_list = members ? members.split(',').compact : all_members_of(team)
20
+ member_list.each do |member|
21
+ puts `cat ~/.pk/data/#{team}/#{member}`
22
+ end
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ require 'thor'
2
+ require 'pk/helper'
3
+ require 'pk/team'
4
+ require 'pk/keys'
5
+
6
+ module Pk
7
+ class Main < Thor
8
+ include Helper
9
+
10
+ desc "keys TEAM [MEMBER1,MEMBER2,..]", "print public keys of members in a specific team"
11
+ def keys(team, members=nil)
12
+ Pk::Keys.start( [team, members] )
13
+ end
14
+
15
+ desc "team", "manage teams"
16
+ subcommand "team", Team
17
+ end
18
+ end
@@ -0,0 +1,39 @@
1
+ require 'thor'
2
+ require 'pk/helper'
3
+
4
+ module Pk
5
+ class Team < Thor
6
+ include Helper
7
+
8
+ desc "add NAME, GIT_URL", "add team repo via git clone"
9
+ def add(name, git_url)
10
+ init
11
+ `git clone #{git_url} ~/.pk/data/#{name}`
12
+ end
13
+
14
+ desc "reload [TEAM]", "reload a team repo, or all teams if not specified"
15
+ def reload(team=nil)
16
+ init
17
+ teams = Dir["#{ENV["HOME"]}/.pk/data/*/"].map{|f| File.basename(f) }
18
+ teams = teams.select{|t| t == team} if team
19
+ teams.each do |t|
20
+ `cd ~/.pk/data/#{t} && git pull && cd -`
21
+ end
22
+ end
23
+
24
+ desc "list [TEAM]", "list all team, or team members if team is specified"
25
+ def list(team=nil)
26
+ init
27
+ if team
28
+ all_members_of(team).each do |m|
29
+ puts m
30
+ end
31
+ else
32
+ `ls ~/.pk/data`.split.each do |t|
33
+ puts t
34
+ end
35
+ end
36
+ end
37
+
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Pk
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/pk.gemspec CHANGED
@@ -16,4 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency "thor"
19
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,13 +9,30 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-16 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2013-01-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  description: Command line tool to collect and print public keys.
15
31
  email:
16
32
  - teohuiming@gmail.com
17
33
  executables:
18
34
  - pk
35
+ - pkeys
19
36
  extensions: []
20
37
  extra_rdoc_files: []
21
38
  files:
@@ -25,7 +42,13 @@ files:
25
42
  - README.md
26
43
  - Rakefile
27
44
  - bin/pk
45
+ - bin/pkeys
28
46
  - lib/pk.rb
47
+ - lib/pk/helper.rb
48
+ - lib/pk/ignore_file.rb
49
+ - lib/pk/keys.rb
50
+ - lib/pk/main.rb
51
+ - lib/pk/team.rb
29
52
  - lib/pk/version.rb
30
53
  - pk.gemspec
31
54
  homepage: https://github.com/teohm/pk