sunzi 2.1.0 → 3.0.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 +5 -5
- data/.github/workflows/test.yml +15 -0
- data/CHANGELOG.md +9 -1
- data/README.md +4 -2
- data/lib/sunzi.rb +1 -1
- data/plan.md +94 -0
- data/sunzi.gemspec +6 -5
- data/templates/create/sunzi.yml +1 -1
- metadata +34 -20
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 3e3eb16169a27b2c4732e2f94b02c613620a4edd6c0b68b1f9a1f77384a3a76b
|
|
4
|
+
data.tar.gz: f8ee2e0f7277d0db5d654358ebbab93320586b66c02eb61b43844a42db67624f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 80c422355f103e3ceb6152c3a43889a15d76fef27c2088de5d0cede253311317712294b8ed19bf380c77dafba53017fb009cc0b0aa3317067c6938da53c0dd0f
|
|
7
|
+
data.tar.gz: b449eba750487ffdf7a2864a5b96b89aba2266b729fe7d0f76ab85f17438577091d3c17d7befa039c0669443c0baa7ef37bb436406313383e40ff3599eef96b1
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
on: [push, pull_request]
|
|
3
|
+
jobs:
|
|
4
|
+
test:
|
|
5
|
+
runs-on: ubuntu-latest
|
|
6
|
+
strategy:
|
|
7
|
+
matrix:
|
|
8
|
+
ruby: ['3.1', '3.2', '3.3', '3.4', '4.0']
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v4
|
|
11
|
+
- uses: ruby/setup-ruby@v1
|
|
12
|
+
with:
|
|
13
|
+
ruby-version: ${{ matrix.ruby }}
|
|
14
|
+
bundler-cache: true
|
|
15
|
+
- run: bundle exec rake test
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
## 3.0.0, release 2026-01-14
|
|
2
|
+
* Update dependencies (thor, net-ssh, minitest).
|
|
3
|
+
* Replace Travis CI with GitHub Actions.
|
|
4
|
+
|
|
5
|
+
## 2.1, release 2018-01-15
|
|
6
|
+
* Dotfiles (files that start with '.') in recipes, roles and files are now included.
|
|
7
|
+
* `sunzi.yml` is now evaluated as ERB to access environment variables. (e.g. `<%= ENV['MY_PASSWORD'] %>`)
|
|
8
|
+
|
|
1
9
|
## 2.0, release 2018-01-14
|
|
2
10
|
* Plug-in support for commands.
|
|
3
|
-
* Separate
|
|
11
|
+
* Separate `setup` and `teardown` commands for VPS into the `sunzi-vps` gem as a plugin.
|
|
4
12
|
* "attributes" are now "vars" in sunzi.yml and shell scripts.
|
|
5
13
|
* ERB templating (e.g. <%= @vars.environment %>) is always enabled.
|
|
6
14
|
* Individual attribute files compiled/attributes/* are no longer supported. Use ERB template methods instead.
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Sunzi
|
|
2
2
|
=====
|
|
3
3
|
|
|
4
|
-
[](https://github.com/kenn/sunzi/actions/workflows/test.yml)
|
|
5
5
|
|
|
6
6
|
```
|
|
7
7
|
"The supreme art of war is to subdue the enemy without fighting." - Sunzi
|
|
@@ -95,6 +95,9 @@ sunzi/
|
|
|
95
95
|
# remote server (do not edit directly)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
+
Security note: `sunzi.yml` is evaluated with ERB and loaded via `YAML.load`.
|
|
99
|
+
Only use configs you fully trust.
|
|
100
|
+
|
|
98
101
|
How do you pass dynamic values?
|
|
99
102
|
-------------------------------
|
|
100
103
|
|
|
@@ -164,7 +167,6 @@ An easy way is to edit `Vagrantfile`:
|
|
|
164
167
|
Vagrant.configure("2") do |config|
|
|
165
168
|
config.vm.provision "shell",
|
|
166
169
|
inline: "sudo echo 'root:vagrant' | /usr/sbin/chpasswd"
|
|
167
|
-
end
|
|
168
170
|
end
|
|
169
171
|
```
|
|
170
172
|
|
data/lib/sunzi.rb
CHANGED
data/plan.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Sunzi Modernization Plan
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Update Sunzi (server provisioning tool) from 2018-era dependencies to modern Ruby ecosystem.
|
|
5
|
+
|
|
6
|
+
## Changes
|
|
7
|
+
|
|
8
|
+
### 1. Confirm minimum Ruby versions
|
|
9
|
+
Verified minimum Ruby version for `net-ssh ~> 7` and `thor ~> 1.3` is 2.6.
|
|
10
|
+
Set `spec.required_ruby_version` accordingly.
|
|
11
|
+
|
|
12
|
+
### 2. Update gemspec dependencies
|
|
13
|
+
**File:** [sunzi.gemspec](sunzi.gemspec)
|
|
14
|
+
|
|
15
|
+
| Dependency | Current | New |
|
|
16
|
+
|------------|---------|-----|
|
|
17
|
+
| `thor` | unrestricted | `~> 1.3` |
|
|
18
|
+
| `net-ssh` | `< 5` | `~> 7.0` |
|
|
19
|
+
| `rainbow` | `~> 3.0` | (keep) |
|
|
20
|
+
| `hashugar` | unrestricted | (keep) |
|
|
21
|
+
| `minitest` | unrestricted | `~> 6.0` |
|
|
22
|
+
|
|
23
|
+
Also add:
|
|
24
|
+
- `spec.required_ruby_version = '>= 2.6'`
|
|
25
|
+
|
|
26
|
+
### 3. Keep YAML.load for compatibility (document trust boundary)
|
|
27
|
+
**File:** [README.md](README.md)
|
|
28
|
+
|
|
29
|
+
Leave `YAML.load(ERB.new(File.read('sunzi.yml')).result)` as-is for maximum compatibility.
|
|
30
|
+
Add a short README note that `sunzi.yml` must be fully trusted because ERB executes Ruby
|
|
31
|
+
and YAML.load can instantiate arbitrary objects.
|
|
32
|
+
|
|
33
|
+
### 4. Replace Travis CI with GitHub Actions
|
|
34
|
+
**Delete:** `.travis.yml`
|
|
35
|
+
**Create:** `.github/workflows/test.yml`
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
name: Tests
|
|
39
|
+
on: [push, pull_request]
|
|
40
|
+
jobs:
|
|
41
|
+
test:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
strategy:
|
|
44
|
+
matrix:
|
|
45
|
+
ruby: ['3.1', '3.2', '3.3']
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
- uses: ruby/setup-ruby@v1
|
|
49
|
+
with:
|
|
50
|
+
ruby-version: ${{ matrix.ruby }}
|
|
51
|
+
bundler-cache: true
|
|
52
|
+
- run: bundle exec rake test
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 5. Update README badge + requirements
|
|
56
|
+
**File:** [README.md](README.md)
|
|
57
|
+
|
|
58
|
+
- Replace Travis badge with GitHub Actions badge (ensure workflow name/branch match the badge URL).
|
|
59
|
+
- Add a short Requirements note for the minimum supported Ruby (from step 1).
|
|
60
|
+
|
|
61
|
+
### 6. Add .ruby-version
|
|
62
|
+
**Create:** `.ruby-version` with content `3.2`
|
|
63
|
+
|
|
64
|
+
### 7. Update template default Ruby version
|
|
65
|
+
**File:** [templates/create/sunzi.yml](templates/create/sunzi.yml)
|
|
66
|
+
|
|
67
|
+
Update `ruby_version: 2.5` to match the modern baseline (e.g., `3.2`).
|
|
68
|
+
|
|
69
|
+
### 8. Update CHANGELOG
|
|
70
|
+
**File:** [CHANGELOG.md](CHANGELOG.md)
|
|
71
|
+
|
|
72
|
+
Add a `3.0.0` entry with the breaking changes (Ruby requirement, dependency bumps, CI migration).
|
|
73
|
+
|
|
74
|
+
### 9. Bump version
|
|
75
|
+
**File:** [sunzi.gemspec:5](sunzi.gemspec#L5)
|
|
76
|
+
|
|
77
|
+
Update version from `2.1.0` to `3.0.0` (major bump due to Ruby version requirement change).
|
|
78
|
+
If a version constant exists (e.g., `lib/sunzi/version.rb`), update it too.
|
|
79
|
+
|
|
80
|
+
## File Summary
|
|
81
|
+
| Action | File |
|
|
82
|
+
|--------|------|
|
|
83
|
+
| Edit | `sunzi.gemspec` |
|
|
84
|
+
| Edit | `README.md` |
|
|
85
|
+
| Edit | `templates/create/sunzi.yml` |
|
|
86
|
+
| Edit | `CHANGELOG.md` |
|
|
87
|
+
| Delete | `.travis.yml` |
|
|
88
|
+
| Create | `.github/workflows/test.yml` |
|
|
89
|
+
| Create | `.ruby-version` |
|
|
90
|
+
|
|
91
|
+
## Verification
|
|
92
|
+
1. Run `bundle install` to update Gemfile.lock
|
|
93
|
+
2. Run `bundle exec rake test` to verify tests pass
|
|
94
|
+
3. Run `bundle exec sunzi version` and `bundle exec sunzi create test_project` to verify CLI works
|
data/sunzi.gemspec
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |spec|
|
|
4
4
|
spec.name = 'sunzi'
|
|
5
|
-
spec.version = '
|
|
5
|
+
spec.version = '3.0.0' # retrieve this value by: Gem.loaded_specs['sunzi'].version.to_s
|
|
6
6
|
spec.authors = ['Kenn Ejima']
|
|
7
7
|
spec.email = ['kenn.ejima@gmail.com']
|
|
8
8
|
spec.summary = %q{Server provisioning utility for minimalists}
|
|
@@ -14,10 +14,11 @@ Gem::Specification.new do |spec|
|
|
|
14
14
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
15
15
|
spec.require_paths = ['lib']
|
|
16
16
|
|
|
17
|
-
spec.add_dependency 'thor', '~>
|
|
18
|
-
spec.add_dependency 'rainbow', '~>
|
|
19
|
-
spec.add_dependency 'net-ssh', '
|
|
17
|
+
spec.add_dependency 'thor', '~> 1.3'
|
|
18
|
+
spec.add_dependency 'rainbow', '~> 3.0'
|
|
19
|
+
spec.add_dependency 'net-ssh', '~> 7.0'
|
|
20
|
+
spec.add_dependency 'logger'
|
|
20
21
|
spec.add_dependency 'hashugar'
|
|
21
22
|
spec.add_development_dependency 'rake'
|
|
22
|
-
spec.add_development_dependency 'minitest'
|
|
23
|
+
spec.add_development_dependency 'minitest', '~> 6.0'
|
|
23
24
|
end
|
data/templates/create/sunzi.yml
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sunzi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kenn Ejima
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -16,44 +16,44 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '1.3'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '1.3'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rainbow
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '3.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '3.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: net-ssh
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '7.0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '7.0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: logger
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
@@ -67,13 +67,13 @@ dependencies:
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: hashugar
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '0'
|
|
76
|
-
type: :
|
|
76
|
+
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
@@ -81,7 +81,7 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: rake
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
@@ -94,6 +94,20 @@ dependencies:
|
|
|
94
94
|
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: minitest
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '6.0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '6.0'
|
|
97
111
|
description: Server provisioning utility for minimalists
|
|
98
112
|
email:
|
|
99
113
|
- kenn.ejima@gmail.com
|
|
@@ -102,8 +116,8 @@ executables:
|
|
|
102
116
|
extensions: []
|
|
103
117
|
extra_rdoc_files: []
|
|
104
118
|
files:
|
|
119
|
+
- ".github/workflows/test.yml"
|
|
105
120
|
- ".gitignore"
|
|
106
|
-
- ".travis.yml"
|
|
107
121
|
- CHANGELOG.md
|
|
108
122
|
- Gemfile
|
|
109
123
|
- README.md
|
|
@@ -119,6 +133,7 @@ files:
|
|
|
119
133
|
- lib/sunzi/dependency.rb
|
|
120
134
|
- lib/sunzi/endpoint.rb
|
|
121
135
|
- lib/sunzi/plugin.rb
|
|
136
|
+
- plan.md
|
|
122
137
|
- sunzi.gemspec
|
|
123
138
|
- templates/create/.gitignore
|
|
124
139
|
- templates/create/files/.gitkeep
|
|
@@ -133,7 +148,7 @@ homepage: https://github.com/kenn/sunzi
|
|
|
133
148
|
licenses:
|
|
134
149
|
- MIT
|
|
135
150
|
metadata: {}
|
|
136
|
-
post_install_message:
|
|
151
|
+
post_install_message:
|
|
137
152
|
rdoc_options: []
|
|
138
153
|
require_paths:
|
|
139
154
|
- lib
|
|
@@ -148,9 +163,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
148
163
|
- !ruby/object:Gem::Version
|
|
149
164
|
version: '0'
|
|
150
165
|
requirements: []
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
signing_key:
|
|
166
|
+
rubygems_version: 3.5.16
|
|
167
|
+
signing_key:
|
|
154
168
|
specification_version: 4
|
|
155
169
|
summary: Server provisioning utility for minimalists
|
|
156
170
|
test_files: []
|