pleaserun 0.0.20 → 0.0.21
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/CHANGELOG.asciidoc +6 -0
- data/Gemfile.lock +1 -1
- data/lib/pleaserun/detector.rb +71 -89
- data/pleaserun.gemspec +1 -1
- data/templates/systemd/default/program.service +5 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1607c72a99aa0a0bb5f3513e132c32c4ed64b340
|
4
|
+
data.tar.gz: 5aa785212a00ed91a9dfe31a09a63da531c4d1a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d3279e7c1bf924033659d3a11ab28fca8688208df956199a641f5e234fbf11d36d818375a091eeafadc353d397e2a0b1ad0b65f58ee592e9908b8cec630c086
|
7
|
+
data.tar.gz: 105778d5a15040001808f335a4737b98e9ff70860e06b323b113a19119f6ff98eb3b4912cf0ff387e4817480c969708f4fdb05dc786015ca292cbc60dbf17447
|
data/CHANGELOG.asciidoc
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= Pleaserun Changes and Releases
|
2
2
|
|
3
|
+
== 0.0.21 (May 16, 2016)
|
4
|
+
* Platform detection mechanism now looks for evidence that a given platform
|
5
|
+
is available (files, executables, etc). The previous mechanism used facter
|
6
|
+
or ohai to figure out the operating system version and had a mapping of OS to
|
7
|
+
platform.
|
8
|
+
|
3
9
|
== 0.0.20 (May 13, 2016)
|
4
10
|
* The --install-prefix flag now sets the write path for both --install and --no-install (default) modes
|
5
11
|
|
data/Gemfile.lock
CHANGED
data/lib/pleaserun/detector.rb
CHANGED
@@ -1,102 +1,84 @@
|
|
1
1
|
require "cabin"
|
2
|
+
require "open3"
|
2
3
|
|
3
|
-
# Detect the
|
4
|
-
#
|
5
|
-
#
|
6
|
-
|
4
|
+
# Detect the service platform that's most likely to be successful on the
|
5
|
+
# running machine.
|
6
|
+
#
|
7
|
+
# See the `detect` method.
|
8
|
+
module PleaseRun::Detector
|
7
9
|
class UnknownSystem < StandardError; end
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
["arch", "rolling"] => ["systemd", "default"],
|
13
|
-
["centos", "5"] => ["sysv", "lsb-3.1"],
|
14
|
-
["centos", "6"] => ["upstart", "0.6.5"],
|
15
|
-
["centos", "7"] => ["systemd", "default"],
|
16
|
-
["debian", "6"] => ["sysv", "lsb-3.1"],
|
17
|
-
["debian", "7"] => ["sysv", "lsb-3.1"],
|
18
|
-
["debian", "8"] => ["systemd", "default"],
|
19
|
-
["fedora", "18"] => ["systemd", "default"],
|
20
|
-
["fedora", "19"] => ["systemd", "default"],
|
21
|
-
["fedora", "20"] => ["systemd", "default"],
|
22
|
-
["fedora", "21"] => ["systemd", "default"],
|
23
|
-
["fedora", "22"] => ["systemd", "default"],
|
24
|
-
["fedora", "23"] => ["systemd", "default"],
|
25
|
-
["mac_os_x", "10.11"] => ["launchd", "10.9"],
|
26
|
-
["mac_os_x", "10.10"] => ["launchd", "10.9"],
|
27
|
-
["mac_os_x", "10.8"] => ["launchd", "10.9"],
|
28
|
-
["mac_os_x", "10.9"] => ["launchd", "10.9"],
|
29
|
-
["opensuse", "12"] => ["sysv", "lsb-3.1"],
|
30
|
-
["opensuse", "13"] => ["systemd", "default"],
|
31
|
-
["ubuntu", "12.04"] => ["upstart", "1.5"],
|
32
|
-
["ubuntu", "12.10"] => ["upstart", "1.5"],
|
33
|
-
["ubuntu", "13.04"] => ["upstart", "1.5"],
|
34
|
-
["ubuntu", "13.10"] => ["upstart", "1.5"],
|
35
|
-
["ubuntu", "14.04"] => ["upstart", "1.5"],
|
36
|
-
["ubuntu", "14.10"] => ["upstart", "1.5"],
|
37
|
-
["ubuntu", "15.04"] => ["systemd", "default"],
|
38
|
-
["ubuntu", "15.10"] => ["systemd", "default"],
|
39
|
-
["ubuntu", "16.04"] => ["systemd", "default"]
|
40
|
-
}
|
41
|
-
|
42
|
-
def self.detect
|
11
|
+
module_function
|
12
|
+
|
13
|
+
def detect
|
43
14
|
return @system unless @system.nil?
|
44
15
|
|
45
16
|
@logger ||= Cabin::Channel.get
|
46
|
-
|
47
|
-
|
48
|
-
rescue LoadError => e
|
49
|
-
@logger.debug("Failed to load ohai", :exception => e)
|
50
|
-
begin
|
51
|
-
platform, version = detect_facter
|
52
|
-
rescue LoadError
|
53
|
-
raise UnknownSystem, "Could not detect because neither ohai nor facter libraries are found"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
@system = lookup([platform, version])
|
58
|
-
raise UnknownSystem, "#{platform} #{version}" if @system.nil?
|
17
|
+
@system = detect_platform
|
18
|
+
raise UnknownSystem, "Unable to detect which service platform to use" if @system.nil?
|
59
19
|
return @system
|
60
20
|
end # def self.detect
|
61
21
|
|
62
|
-
def
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
#
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
version
|
75
|
-
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
def
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
version
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
# Take '6.0.8' and make it just '6' since debian never makes major
|
90
|
-
# changes in a minor release
|
91
|
-
when "debian", "centos"
|
92
|
-
return version[/^[0-9]+/] # First digit is the 'major' version
|
93
|
-
when "mac_os_x"
|
94
|
-
return version[/^[0-9]+\.[0-9]+/] # 10.x
|
95
|
-
when "arch"
|
96
|
-
return "rolling"
|
97
|
-
# TODO(sissel): Any other edge cases?
|
98
|
-
end
|
99
|
-
return version
|
22
|
+
def detect_platform
|
23
|
+
detect_systemd || detect_upstart || detect_launchd || detect_runit || detect_sysv
|
24
|
+
end
|
25
|
+
|
26
|
+
def detect_systemd
|
27
|
+
# Expect a certain directory
|
28
|
+
return false unless File.directory?("/lib/systemd/system")
|
29
|
+
|
30
|
+
# Check the version. If `systemctl` fails, systemd isn't available.
|
31
|
+
out, status = execute([ "systemctl", "--version" ])
|
32
|
+
return false unless status.success?
|
33
|
+
|
34
|
+
# version is the last word on the first line of the --version output
|
35
|
+
version = out.split("\n").first.split(/\s+/).last
|
36
|
+
["systemd", version]
|
37
|
+
end
|
38
|
+
|
39
|
+
def detect_upstart
|
40
|
+
# Expect a certain directory
|
41
|
+
return false unless File.directory?("/etc/init")
|
42
|
+
|
43
|
+
# Check the version. If `initctl` fails, upstart isn't available.
|
44
|
+
out, status = execute(["initctl", "--version"])
|
45
|
+
return false unless status.success?
|
46
|
+
|
47
|
+
version = out.split("\n").first.tr("()", "").split(/\s+/).last
|
48
|
+
["upstart", version]
|
100
49
|
end
|
101
50
|
|
51
|
+
def detect_sysv
|
52
|
+
return false unless File.directory?("/etc/init.d")
|
53
|
+
|
54
|
+
# TODO(sissel): Do more specific testing.
|
55
|
+
["sysv", "lsb-3.1"]
|
56
|
+
end
|
57
|
+
|
58
|
+
def detect_launchd
|
59
|
+
return false unless File.directory?("/Library/LaunchDaemons")
|
60
|
+
|
61
|
+
out, status = execute(["launchctl", "version"])
|
62
|
+
return false unless status.success?
|
63
|
+
|
64
|
+
# TODO(sissel): Version?
|
65
|
+
version = out.split("\n").first.split(":").first.split(/\s+/).last
|
66
|
+
["launchd", version]
|
67
|
+
end
|
68
|
+
|
69
|
+
def detect_runit
|
70
|
+
return false unless File.directory?("/service")
|
71
|
+
|
72
|
+
# TODO(sissel): Do more tests for runit
|
73
|
+
end
|
74
|
+
|
75
|
+
def execute(command)
|
76
|
+
Open3.popen3(*command) do |stdin, stdout, stderr, wait_thr|
|
77
|
+
stdin.close
|
78
|
+
out = stdout.read
|
79
|
+
stderr.close
|
80
|
+
exit_status = wait_thr.value
|
81
|
+
return out, exit_status
|
82
|
+
end
|
83
|
+
end
|
102
84
|
end
|
data/pleaserun.gemspec
CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |spec|
|
|
2
2
|
files = File.read(__FILE__)[/^__END__$.*/m].split("\n")[1..-1]
|
3
3
|
|
4
4
|
spec.name = "pleaserun"
|
5
|
-
spec.version = "0.0.
|
5
|
+
spec.version = "0.0.21"
|
6
6
|
spec.summary = "pleaserun"
|
7
7
|
spec.description = "pleaserun"
|
8
8
|
spec.license = "Apache 2.0"
|
@@ -7,8 +7,11 @@ Description={{{ description }}}
|
|
7
7
|
Type=simple
|
8
8
|
User={{{ user }}}
|
9
9
|
Group={{{ group }}}
|
10
|
-
|
11
|
-
|
10
|
+
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
|
11
|
+
# Prefixing the path with '-' makes it try to load, but if the file doesn't
|
12
|
+
# exist, it continues onward.
|
13
|
+
EnvironmentFile=-/etc/default/{{{name}}}
|
14
|
+
EnvironmentFile=-/etc/sysconfig/{{{name}}}
|
12
15
|
ExecStart={{{program}}} {{{shell_args}}}
|
13
16
|
{{#prestart}}
|
14
17
|
ExecStartPre=/lib/systemd/system/{{{name}}}-prestart.sh
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pleaserun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan Sissel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cabin
|