spaarti 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fcf32b157fb8a648a7c88e52032279fcf073ddaa
4
- data.tar.gz: 00c9bc231f5977580cb3e7636052303500cee6ec
3
+ metadata.gz: 42a2c8cb93c926b9c911da42d81fb138864905c1
4
+ data.tar.gz: 919a5542bd9ec0de3f7c1058b8bf9e2b63ccf50b
5
5
  SHA512:
6
- metadata.gz: 0bd587e37edcf36bc0861604c18a551f1cb2142a9bfbd57735f6f9e8a2d2ea258ac39287b2b1d28433f67bf3a4091295d82e6d83bc5c0dfe4f97c4d241c1199d
7
- data.tar.gz: 88f08186b7bc73e4c152cec1391ca3d1ae1ab258addbebc5fd0925b8ee4e97cc8187f3721fad28cb18bf62a26023e97aa849386f0929838aa48aec52f7d0e67f
6
+ metadata.gz: 6ce2e64fb7b01b27d98222d3a41959d3d610e6a44804ee9aff37c7a5434846e5653ad49dfb4f52743d22854eb9a3101ddd74b9c29af4e88a3f597056fb3cef7d
7
+ data.tar.gz: 6e0deddbc39abf6881c08d02bbbb0d15184f14a0cc2d5d2dd8c88c930268bcbfe001abecd62241156e1357253338918a8b21fe18ef070055a4b2231b25cf1efc
data/bin/spaarti CHANGED
@@ -9,6 +9,8 @@ Mercenary.program(:spaarti) do |p|
9
9
  p.syntax 'spaarti [options]'
10
10
 
11
11
  p.option :config, '-c FILE', '--config FILE', 'Config file'
12
+ p.option :purge, '-p', '--purge', 'Remove orphaned repos'
13
+ p.option :quiet, '-q', '--quiet', 'Silence standard output'
12
14
 
13
15
  p.action do |_, options|
14
16
  Spaarti.new(options).sync!
data/lib/spaarti/repo.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'pathname'
2
+
1
3
  module Spaarti
2
4
  ##
3
5
  # Repo object, handles individual repo syncing and state
@@ -10,29 +12,51 @@ module Spaarti
10
12
  end
11
13
 
12
14
  def sync!
13
- return found if Dir.exist?(@path)
15
+ return log("#{@raw[:full_name]} already cloned") if Dir.exist?(@path)
14
16
  clone
15
17
  Dir.chdir(@path) { config && add_upstream }
16
18
  end
17
19
 
20
+ def parent_of(repo)
21
+ repo.relative_path_from(Pathname.new(@path)).each_filename.first != '..'
22
+ end
23
+
18
24
  private
19
25
 
20
- def found
21
- puts "#{@raw[:full_name]} already cloned"
26
+ def log(msg)
27
+ puts msg unless @params[:quiet]
28
+ end
29
+
30
+ def err(msg)
31
+ STDERR.puts msg
32
+ end
33
+
34
+ def run(cmd, error_msg)
35
+ res = system "#{cmd} &>/dev/null"
36
+ err(error_msg) unless res
22
37
  end
23
38
 
24
39
  def clone
25
- system "git clone '#{@raw[:ssh_url]}' '#{@path}'"
40
+ log "Cloning #{@raw[:ssh_url]} to #{@path}"
41
+ run(
42
+ "git clone '#{@raw[:ssh_url]}' '#{@path}' &>/dev/null",
43
+ "Failed to clone #{@raw[:ssh_url]}"
44
+ )
26
45
  end
27
46
 
28
47
  def config
29
- @params[:git_config].each { |k, v| system "git config '#{k}' '#{v}'" }
48
+ @params[:git_config].each do |k, v|
49
+ run("git config '#{k}' '#{v}'", "Failed to set config for #{@path}")
50
+ end
30
51
  end
31
52
 
32
53
  def add_upstream
33
54
  return unless @raw[:fork]
34
55
  upstream = @client.repo(@raw[:id]).source.git_url
35
- system "git remote add upstream '#{upstream}'"
56
+ run(
57
+ "git remote add upstream '#{upstream}'",
58
+ "Failed to add upstrema for #{@path}"
59
+ )
36
60
  end
37
61
  end
38
62
  end
data/lib/spaarti/site.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'cymbal'
2
2
  require 'octoauth'
3
3
  require 'octokit'
4
+ require 'pathname'
4
5
 
5
6
  ##
6
7
  # Main Spaarti code, defines defaults and Site object
@@ -27,7 +28,18 @@ module Spaarti
27
28
  end
28
29
 
29
30
  def sync!
30
- Dir.chdir(config[:base_path]) { repos.each(&:sync!) }
31
+ Dir.chdir(config[:base_path]) do
32
+ repos.each(&:sync!)
33
+ purge! if @options[:purge]
34
+ end
35
+ end
36
+
37
+ def purge!
38
+ Dir.glob('**/.git').each do |git_dir|
39
+ repo = Pathname.new(git_dir).dirname
40
+ next if repos.any? { |x| x.parent_of(repo) }
41
+ Pathname.rmtree repo
42
+ end
31
43
  end
32
44
 
33
45
  private
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # Set the version (needed for Mercenary -v)
3
3
  module Spaarti
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
data/spaarti.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_dependency 'mercenary', '~> 0.3.4'
23
23
  s.add_dependency 'cymbal', '~> 1.0.0'
24
24
 
25
- s.add_development_dependency 'rubocop', '~> 0.28.0'
25
+ s.add_development_dependency 'rubocop', '~> 0.29.0'
26
26
  s.add_development_dependency 'rake', '~> 10.4.0'
27
27
  s.add_development_dependency 'coveralls', '~> 0.7.0'
28
28
  s.add_development_dependency 'rspec', '~> 3.2.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spaarti
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-04 00:00:00.000000000 Z
11
+ date: 2015-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.28.0
75
+ version: 0.29.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.28.0
82
+ version: 0.29.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project:
182
- rubygems_version: 2.4.5
182
+ rubygems_version: 2.2.2
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Helper for cloning GitHub repos