spaarti 0.0.1 → 0.0.2

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 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