yorobot 0.1.1 → 0.2.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/Manifest.txt +2 -1
- data/lib/yorobot.rb +2 -1
- data/lib/yorobot/base.rb +14 -11
- data/lib/yorobot/github/git.rb +98 -0
- data/lib/yorobot/github/github.rb +30 -0
- data/lib/yorobot/version.rb +2 -2
- metadata +4 -3
- data/lib/yorobot/github.rb +0 -40
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 503913587cfe3eb47d27dfbea06bbc851f672e3d
|
|
4
|
+
data.tar.gz: 2ea249106e91274f5d93cc5ea86bf70846f96fca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3e3754ff5eff7bce1d987423fe28ec8641c9a8d7cf6624338b548457750d01e89892cde5ab20883ad5e783dfacda6172e970c319c9a48913f31682cbdad272b9
|
|
7
|
+
data.tar.gz: 7fc891e0e027c9b14b1af691728558a22a5fd88ddbcd88d4c1891a67616863beab897a31c9c2d6ebc24877bd01378fcce2892c69651146005eca59302cb7b602
|
data/Manifest.txt
CHANGED
data/lib/yorobot.rb
CHANGED
data/lib/yorobot/base.rb
CHANGED
|
@@ -3,19 +3,22 @@ module Yorobot
|
|
|
3
3
|
|
|
4
4
|
class Step
|
|
5
5
|
|
|
6
|
+
def self.option_defs
|
|
7
|
+
@option_defs ||= {}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.option( key, *args )
|
|
11
|
+
option_defs[ key ] = args
|
|
12
|
+
end
|
|
13
|
+
|
|
6
14
|
|
|
7
15
|
|
|
8
16
|
def options
|
|
9
17
|
@options ||= {}
|
|
10
18
|
end
|
|
11
19
|
|
|
12
|
-
def on_parse_options( parser ) ## todo/check: find a better name?
|
|
13
|
-
## do nothing; overwrite
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
|
|
17
20
|
def parse!( args )
|
|
18
|
-
### cache option parser - why? why not?
|
|
21
|
+
### todo/check - cache option parser!!!! - why? why not?
|
|
19
22
|
OptionParser.new do |parser|
|
|
20
23
|
## add default banner - overwrite if needed/to customize
|
|
21
24
|
parser.banner = <<TXT
|
|
@@ -24,13 +27,16 @@ Usage: #{name} [OPTIONS] ARGUMENTS
|
|
|
24
27
|
|
|
25
28
|
TXT
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
self.class.option_defs.each do | key, on_args|
|
|
31
|
+
parser.on( *on_args ) do |value|
|
|
32
|
+
options[ key ] = value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
28
35
|
end.parse!( args )
|
|
29
36
|
end
|
|
30
37
|
|
|
31
38
|
|
|
32
39
|
|
|
33
|
-
|
|
34
40
|
def self.run( args=[] )
|
|
35
41
|
step = new
|
|
36
42
|
|
|
@@ -45,9 +51,6 @@ def self.run( args=[] )
|
|
|
45
51
|
puts " #{[i]} >#{arg}<"
|
|
46
52
|
end
|
|
47
53
|
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
|
|
51
54
|
|
|
52
55
|
if args.size > 0
|
|
53
56
|
## todo/check: check/verify arity of run - why? why not?
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
module Yorobot
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Setup < Step
|
|
5
|
+
|
|
6
|
+
=begin
|
|
7
|
+
# check ssh
|
|
8
|
+
if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi
|
|
9
|
+
echo "$SSH_KEY" > ~/.ssh/id_rsa
|
|
10
|
+
chmod 600 ~/.ssh/id_rsa
|
|
11
|
+
echo "ssh directory - ~/.ssh:"
|
|
12
|
+
ls -la ~/.ssh
|
|
13
|
+
|
|
14
|
+
# check git
|
|
15
|
+
git --version
|
|
16
|
+
git config --global user.name "Yo Robot"
|
|
17
|
+
git config --global user.email "gerald.bauer+yorobot@gmail.com"
|
|
18
|
+
git config -l --show-origin
|
|
19
|
+
=end
|
|
20
|
+
|
|
21
|
+
def call
|
|
22
|
+
##############
|
|
23
|
+
## setup ssh
|
|
24
|
+
Dir.mkdir( '~/.ssh' ) unless Dir.exist?( '~/.ssh' )
|
|
25
|
+
ssh_key = ENV['SSH_KEY']
|
|
26
|
+
if ssh_key.nil?
|
|
27
|
+
STDERR.puts "!! ERROR - required SSH_KEY env(ironment) variable missing"
|
|
28
|
+
exit 1
|
|
29
|
+
end
|
|
30
|
+
if File.exist?( '~/.ssh/id_rsa' )
|
|
31
|
+
STDERR.puts "!! ERROR - ssh key >~/.ssh/id_rsa< already exists"
|
|
32
|
+
exit 1
|
|
33
|
+
end
|
|
34
|
+
File.open( '~/.ssh/id_rsa', 'w:utf-8' ) do |f|
|
|
35
|
+
f.write( ssh_key )
|
|
36
|
+
end
|
|
37
|
+
## note: ssh key must be "private" only access by owner (otherwise) WILL NOT work
|
|
38
|
+
res = File.chmod( 0600, '~/.ssh/id_rsa' )
|
|
39
|
+
puts res ## returns number of files processed; should be 1 - assert - why? why not?
|
|
40
|
+
|
|
41
|
+
Computer::Shell.run( %Q{ls -la ~/.ssh} )
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
#####
|
|
45
|
+
## setup git
|
|
46
|
+
## git --version
|
|
47
|
+
Git.version
|
|
48
|
+
|
|
49
|
+
user_name = ENV['YOROBOT_NAME'] || ENV['YO_NAME']
|
|
50
|
+
user_email = ENV['YOROBOT_EMAIL'] || ENV['YO_EMAIL']
|
|
51
|
+
|
|
52
|
+
Computer::Shell.run( %Q{git config --global user.name "#{user_name}"} )
|
|
53
|
+
Computer::Shell.run( %Q{git config --global user.email "#{user_email}"} )
|
|
54
|
+
|
|
55
|
+
Computer::Shell.run( %Q{git config -l --show-origin} )
|
|
56
|
+
end
|
|
57
|
+
end # class Setup
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class Clone < Step ## change to SshClone(r) or such - why? why not?
|
|
62
|
+
option :depth, "--depth DEPTH", Integer, "shallow clone depth"
|
|
63
|
+
|
|
64
|
+
def call( *repos )
|
|
65
|
+
repos.each do |repo|
|
|
66
|
+
if options[:depth]
|
|
67
|
+
### shallow "fast clone" - support libraries
|
|
68
|
+
### use https:// instead of ssh - why? why not?
|
|
69
|
+
Git.clone( "git@github.com:#{repo}.git", depth: options[:depth] )
|
|
70
|
+
else
|
|
71
|
+
### "deep" standard/ regular clone
|
|
72
|
+
Git.clone( "git@github.com:#{repo}.git" )
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end # class Clone
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class Push < Step ## change to SshPush(r) or such - why? why not?
|
|
81
|
+
|
|
82
|
+
def call( *paths ) ## e.g. "./cache.github" etc.
|
|
83
|
+
msg = "auto-update week #{Date.today.cweek}"
|
|
84
|
+
|
|
85
|
+
paths.each do |path|
|
|
86
|
+
GitProject.open( path ) do |proj|
|
|
87
|
+
if proj.changes?
|
|
88
|
+
proj.add( "." )
|
|
89
|
+
proj.commit( msg )
|
|
90
|
+
proj.push
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end # class Push
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
end # module Yorobot
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Yorobot
|
|
2
|
+
|
|
3
|
+
class Github < Step ## change to GithubStats or such - why? why not?
|
|
4
|
+
|
|
5
|
+
## todo/check: use --data-dir/--datadir - why? why not?
|
|
6
|
+
option :data_dir, "-d DIR", "--dir DIR",
|
|
7
|
+
"data dir (defaults to #{Hubba.config.data_dir})"
|
|
8
|
+
|
|
9
|
+
## todo/check: add switch --[no]-traffic - why? why not?
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def call( username )
|
|
13
|
+
## username e.g. geraldb
|
|
14
|
+
|
|
15
|
+
if options[:data_dir] ## e.g. "./cache.github"
|
|
16
|
+
puts " setting data_dir to >#{options[:data_dir]}<"
|
|
17
|
+
Hubba.config.data_dir = options[:data_dir]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
h = Hubba.reposet( username ) ## note: do NOT include yorobot for now
|
|
21
|
+
pp h
|
|
22
|
+
|
|
23
|
+
Hubba.update_stats( h )
|
|
24
|
+
Hubba.update_traffic( h )
|
|
25
|
+
puts "Done."
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end # class Github
|
|
29
|
+
end # module Yorobot
|
|
30
|
+
|
data/lib/yorobot/version.rb
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
module YorobotCore ## todo/check: rename GittiBase or GittiMeta or such - why? why not?
|
|
7
7
|
MAJOR = 0 ## todo: namespace inside version or something - why? why not??
|
|
8
|
-
MINOR =
|
|
9
|
-
PATCH =
|
|
8
|
+
MINOR = 2
|
|
9
|
+
PATCH = 0
|
|
10
10
|
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
|
11
11
|
|
|
12
12
|
def self.version
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yorobot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gerald Bauer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-10-
|
|
11
|
+
date: 2020-10-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gitti
|
|
@@ -93,7 +93,8 @@ files:
|
|
|
93
93
|
- lib/yorobot.rb
|
|
94
94
|
- lib/yorobot/base.rb
|
|
95
95
|
- lib/yorobot/echo.rb
|
|
96
|
-
- lib/yorobot/github.rb
|
|
96
|
+
- lib/yorobot/github/git.rb
|
|
97
|
+
- lib/yorobot/github/github.rb
|
|
97
98
|
- lib/yorobot/list.rb
|
|
98
99
|
- lib/yorobot/version.rb
|
|
99
100
|
homepage: https://github.com/rubycoco/git
|
data/lib/yorobot/github.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
module Yorobot
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class Github < Step ## change to GithubStats or such - why? why not?
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def on_parse_options( parser )
|
|
9
|
-
## todo/check: use --data-dir/--datadir - why? why not?
|
|
10
|
-
parser.on( "-d DIR",
|
|
11
|
-
"--dir DIR",
|
|
12
|
-
"data dir (defaults to #{Hubba.config.data_dir}",
|
|
13
|
-
) do |data_dir|
|
|
14
|
-
options[:data_dir] = data_dir
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
## add switch --[no]-traffic - why? why not?
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def call( username )
|
|
22
|
-
## username e.g. geraldb
|
|
23
|
-
|
|
24
|
-
if @options[:data_dir] ## e.g. "./cache.github"
|
|
25
|
-
puts " setting data_dir to >#{@options[:data_dir]}<"
|
|
26
|
-
Hubba.config.data_dir = @options[:data_dir]
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
h = Hubba.reposet( username ) ## note: do NOT include yorobot for now
|
|
30
|
-
pp h
|
|
31
|
-
|
|
32
|
-
Hubba.update_stats( h )
|
|
33
|
-
Hubba.update_traffic( h )
|
|
34
|
-
puts "Done."
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end # class Github
|
|
38
|
-
|
|
39
|
-
end # module Yorobot
|
|
40
|
-
|