santa 0.1

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.
data/CHANGELOG ADDED
@@ -0,0 +1,2 @@
1
+ v0.1. proof of concept
2
+
data/Manifest ADDED
@@ -0,0 +1,7 @@
1
+ CHANGELOG
2
+ README.md
3
+ Rakefile
4
+ bin/santa
5
+ lib/santa.rb
6
+ test/test_all.rb
7
+ Manifest
data/README.md ADDED
@@ -0,0 +1,14 @@
1
+
2
+ ### Santa: brings you your packages
3
+
4
+ Ever wished you could specify which Debian/Ubuntu packages your app needs in a format similar to bundler's Gemfile?
5
+
6
+ You can with santa.
7
+
8
+
9
+ $ gem install santa
10
+
11
+ $ echo deb "ruby1.9.1-dev" > Debfile
12
+
13
+ $ santa
14
+
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'echoe'
2
+
3
+ Echoe.new("santa") do |p|
4
+ p.author = "Andrew Snow"
5
+ p.email = 'andrew@modulus.org'
6
+ p.summary = "Bundler for .debs"
7
+ p.url = "https://github.com/andys/santa"
8
+ end
data/bin/santa ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ raise "Where is the Debfile?" unless if File.readable? 'Debfile'
4
+
5
+ Santa.new(File.read('Debfile'))
data/lib/santa.rb ADDED
@@ -0,0 +1,47 @@
1
+
2
+ class Santa
3
+ attr_reader :commands_to_run
4
+
5
+ def initialize(*str, &bl)
6
+ @repos = []
7
+ @commands_to_run = [['apt-get', 'update']]
8
+
9
+ @lsb = {}
10
+ File.read('/etc/lsb-release').lines.each {|line| @lsb.merge!(Hash[*line.chomp.split(/=/)]) }
11
+
12
+ instance_eval(*str, &bl) if str.length > 0 || bl
13
+ end
14
+
15
+ def deb(debname, opts={})
16
+ append_cmd 'apt-get', 'install', debname.to_s
17
+ end
18
+
19
+ def cmd(*cmds)
20
+ cmds.unshift 'sudo' unless ENV['USER'] == 'root'
21
+ puts "--> #{cmds.join(' ')}"
22
+ raise "command failed: exit status #{$?}" unless system(*cmds)
23
+ end
24
+
25
+ def executable?(cmd)
26
+ ENV['PATH'].split(':').any? {|f| File.executable?("#{f}/#{cmd}")}
27
+ end
28
+
29
+ def go!
30
+ @commands_to_run.each {|c| cmd(*c) }
31
+ end
32
+
33
+ def prepend_cmd(*cmds)
34
+ @commands_to_run.unshift cmds unless @commands_to_run.include? cmds
35
+ end
36
+
37
+ def append_cmd(*cmds)
38
+ @commands_to_run.push cmds unless @commands_to_run.include? cmds
39
+ end
40
+
41
+ def repo(*repos, &bl)
42
+ repos.each {|r| prepend_cmd 'add-apt-repository', '-y', r.to_s }
43
+ prepend_cmd 'apt-get', 'install', 'python-software-properties' unless executable? 'add-apt-repository'
44
+
45
+ instance_eval &bl if bl
46
+ end
47
+ end
data/santa.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "santa"
5
+ s.version = "0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Andrew Snow"]
9
+ s.date = "2012-12-28"
10
+ s.description = "Bundler for .debs"
11
+ s.email = "andrew@modulus.org"
12
+ s.executables = ["santa"]
13
+ s.extra_rdoc_files = ["CHANGELOG", "README.md", "bin/santa", "lib/santa.rb"]
14
+ s.files = ["CHANGELOG", "README.md", "Rakefile", "bin/santa", "lib/santa.rb", "test/test_all.rb", "Manifest", "santa.gemspec"]
15
+ s.homepage = "https://github.com/andys/santa"
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Santa", "--main", "README.md"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = "santa"
19
+ s.rubygems_version = "1.8.24"
20
+ s.summary = "Bundler for .debs"
21
+ s.test_files = ["test/test_all.rb"]
22
+
23
+ if s.respond_to? :specification_version then
24
+ s.specification_version = 3
25
+
26
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
+ else
28
+ end
29
+ else
30
+ end
31
+ end
data/test/test_all.rb ADDED
@@ -0,0 +1,26 @@
1
+ require "#{File.dirname(__FILE__)}/../lib/santa"
2
+ require 'test/unit'
3
+
4
+ class TestSanta < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @santa = Santa.new
8
+ end
9
+
10
+ def test_command
11
+ @santa.deb 'xyz'
12
+ assert_equal [["apt-get", "update"], ["apt-get", "install", "xyz"]], @santa.commands_to_run
13
+ end
14
+
15
+ def test_add_repo
16
+ @santa.instance_eval do
17
+ repo 'rrr' do
18
+ deb 'xyz'
19
+ end
20
+ end
21
+ assert_equal [["add-apt-repository", "-y", "rrr"],["apt-get", "update"], ["apt-get", "install", "xyz"]], @santa.commands_to_run
22
+ end
23
+
24
+
25
+ end
26
+
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: santa
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: '0.1'
6
+ platform: ruby
7
+ authors:
8
+ - Andrew Snow
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-28 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Bundler for .debs
15
+ email: andrew@modulus.org
16
+ executables:
17
+ - santa
18
+ extensions: []
19
+ extra_rdoc_files:
20
+ - CHANGELOG
21
+ - README.md
22
+ - bin/santa
23
+ - lib/santa.rb
24
+ files:
25
+ - CHANGELOG
26
+ - README.md
27
+ - Rakefile
28
+ - bin/santa
29
+ - lib/santa.rb
30
+ - test/test_all.rb
31
+ - Manifest
32
+ - santa.gemspec
33
+ homepage: https://github.com/andys/santa
34
+ licenses: []
35
+ post_install_message:
36
+ rdoc_options:
37
+ - --line-numbers
38
+ - --inline-source
39
+ - --title
40
+ - Santa
41
+ - --main
42
+ - README.md
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ none: false
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '1.2'
56
+ none: false
57
+ requirements: []
58
+ rubyforge_project: santa
59
+ rubygems_version: 1.8.24
60
+ signing_key:
61
+ specification_version: 3
62
+ summary: Bundler for .debs
63
+ test_files:
64
+ - test/test_all.rb