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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ae08190a203a96afbc856240713e37d197d97381
4
- data.tar.gz: 4afc33d68da0dc9758c87b0d2f10a6a5edb10f17
2
+ SHA256:
3
+ metadata.gz: 3e3eb16169a27b2c4732e2f94b02c613620a4edd6c0b68b1f9a1f77384a3a76b
4
+ data.tar.gz: f8ee2e0f7277d0db5d654358ebbab93320586b66c02eb61b43844a42db67624f
5
5
  SHA512:
6
- metadata.gz: 74efe9a99bf9579337169c780f7891cd88a1b25aa167bff4a45ca1c994d3e20d6046933beeb9cdb7bf1c1bc6d5a6ebf906336031dbd63ceb6342183f270ccf83
7
- data.tar.gz: 065bcc712a06c87d7c488463a145f45c4ea66009c91781f2044aaa2113d94c28f6f84a90fb72e689dcddbffa76486f717e2d89412ac052ea2f38d36a3b793d1a
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 "setup" and "teardown" commands for VPS into the "sunzi-vps" gem as a plugin.
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
- [![Build Status](https://secure.travis-ci.org/kenn/sunzi.png)](http://travis-ci.org/kenn/sunzi)
4
+ [![Tests](https://github.com/kenn/sunzi/actions/workflows/test.yml/badge.svg)](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
@@ -10,7 +10,7 @@ require 'thor'
10
10
 
11
11
  # Sunzi
12
12
  module Sunzi
13
- GemRoot = Pathname.new(Gem.loaded_specs['sunzi'].gem_dir)
13
+ GemRoot = Pathname.new(__dir__).parent
14
14
  end
15
15
 
16
16
  require 'sunzi/core_ext'
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 = '2.1.0' # retrieve this value by: Gem.loaded_specs['sunzi'].version.to_s
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', '~> 0.20'
18
- spec.add_dependency 'rainbow', '~> 2.2'
19
- spec.add_dependency 'net-ssh', '< 5' # 4.x only supports ruby-2.0
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
@@ -3,7 +3,7 @@
3
3
  vars:
4
4
  github_username: kenn
5
5
  environment: production
6
- ruby_version: 2.5
6
+ ruby_version: 3.3
7
7
 
8
8
  # Remote recipes here will be downloaded to compiled/recipes.
9
9
  recipes:
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: 2.1.0
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: 2018-01-15 00:00:00.000000000 Z
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: '0.20'
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: '0.20'
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: '2.2'
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: '2.2'
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: '5'
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: '5'
54
+ version: '7.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: hashugar
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: rake
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: :development
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: minitest
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
- rubyforge_project:
152
- rubygems_version: 2.6.14
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: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - ruby-head