planter-cli 0.0.4 → 3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5318772de94f6948e72fcf61709d9b0cf42c3518a775e47eaa816e8d432cf0f0
4
- data.tar.gz: fcc04239c8d4c74af78f7da138d862f3a01ee053740cda5ad28e8e1019c11a29
3
+ metadata.gz: 0b4906c83392316be6ac61380bd0d2401a847f4c08f6afc91bdfbd4858980568
4
+ data.tar.gz: 7253e2ec572be45e7543d82ad2b1dde685fc5b8ba7b256ec914b0575e44ad507
5
5
  SHA512:
6
- metadata.gz: 55fd5cdd6bbede37bd171df3c6686fc4ca14c869895cf122f7a38997b46121516e32342ab7f8625b26762fba668cd73611c0edeac101fdf3d2d6ec325460dbfa
7
- data.tar.gz: 865480b6ed5efda83cba2b0314bf1afd685eed88c2c930e6b705e4fb104da3fadc0afd85211ea2a4930370d0c786df342a6dbf7c4f0ab371b9122f6df895150b
6
+ metadata.gz: 98fd1c334e3d2efdcdc10171d7a5b5f81898e9a03890bc08cd65e2f3c8a10941cfe46e5e5b23584f28c87aad3b85471ab544c3665049c5abfd911006b40bfbe8
7
+ data.tar.gz: a7a86edaf7bf49cb65cde877ab4aec8bd92a6f27a90c09f526e50f9f1ddc84c27655e67bfea75b9463c8033601ae1961e4854bce76f4e268bfe87aa3171c7677
data/.gitignore CHANGED
@@ -43,3 +43,5 @@ Gemfile.lock
43
43
  .rvmrc
44
44
  /test
45
45
  .history
46
+ spec/test/
47
+ spec/noop
data/.rubocop.yml CHANGED
@@ -41,7 +41,7 @@ Metrics/BlockLength:
41
41
  Max: 45
42
42
  Exclude:
43
43
  - Rakefile
44
- - bin/howzit
44
+ - bin/untitled
45
45
  - lib/*.rb
46
46
 
47
47
  Metrics/ClassLength:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ### 3.0.1
2
+
3
+ 2024-08-31 14:19
4
+
5
+ ### 3.0.0-alpha
6
+
7
+ 2024-08-31 14:18
8
+
9
+ #### NEW
10
+
11
+ - Initial release
12
+ - Preserve Finder tags when planting (config option `preserve_tags: true`)
13
+
14
+ #### IMPROVED
15
+
16
+ - More tests
17
+
18
+ #### FIXED
19
+
20
+ - Code refactoring
21
+
1
22
  ### 0.0.3
2
23
 
3
24
  2024-08-28 09:46
data/README.md CHANGED
@@ -14,7 +14,18 @@ If [Gum](https://github.com/charmbracelet/gum) is available it will be used for
14
14
 
15
15
  ## Configuration
16
16
 
17
- Planter's base configuration is in `~/.config/planter/config.yml`. This file can contain any of the keys used in templates (see below) and will serve as a base configuration for all templates. Any key defined in this file will be overridden if it exists in a template.
17
+ Planter's base configuration is in `~/.config/planter/planter.yml`. This file can contain any of the keys used in templates (see below) and will serve as a base configuration for all templates. Any key defined in this file will be overridden if it exists in a template.
18
+
19
+ Example config (written on first run):
20
+
21
+ ```yaml
22
+ files:
23
+ .DS_Store: ignore
24
+ "*.tmp": ignore
25
+ "*.bak": ignore
26
+ git_init: false
27
+ preserve_tags: true
28
+ ```
18
29
 
19
30
  ### Scripts.
20
31
 
@@ -49,6 +60,10 @@ replacements: # Dictionary of pattern/replacments for regex substitution, see [R
49
60
  repo: # If a repository URL is provided, it will be pulled and duplicated instead of copying a file structure
50
61
  ```
51
62
 
63
+ #### Default values in template strings
64
+
65
+ In a template you can add a default value for a placholder by adding `%default value` to it. For example, `%%project%Default Project%%` will set the placeholder to `Default Project` if the variable value matches the default value in the configuration. This allows you to accept the default on the command line but have a different value inserted in the template. To use another variable in its place, use `$KEY` in the placeholder, e.g. `%%project%$title%%` will replace the `project` key with the value of `title` if the default is selected. Modifiers can be used on either side of the `%`, e.g. `%%project%$title:snake%%`.
66
+
52
67
  ### File-specific handling
53
68
 
54
69
  A `files` dictionary can specify how to handle specific files. Options are `copy`, `overwrite`, `merge`, or `ask`. The key for each entry is a filename or glob that matches the source filename (accounting for template variables if applicable):
@@ -67,6 +82,14 @@ Merged content
67
82
  // /merge
68
83
  ```
69
84
 
85
+ Or
86
+
87
+ ```
88
+ # merge
89
+ Merged content
90
+ # /merge
91
+ ```
92
+
70
93
  By default files that already exist in the destination directory are not overwritten, and merging allows you to add missing parts to a Rakefile or Makefile, for example.
71
94
 
72
95
  If `ask` is specified, a memu will be provided on the command line asking how to handle a file. If the file doesn't already exist, you will be asked only whether to copy the file or not. If it does exist, `overwrite` and `merge` options will be added.
@@ -83,6 +106,10 @@ replacements:
83
106
 
84
107
  Replacements are performed on both file/directory names and file contents.
85
108
 
109
+ ### Finder Tags
110
+
111
+ If `preserve_tags` is set to `true` in the config (either base or template), then existing Finder tags on the file or folder will be copied to the new file when a template is planted.
112
+
86
113
  ## Usage
87
114
 
88
115
  The executable for Planter is `plant`. You can run `plant TEMPLATE` in any directory and TEMPLATE will be planted in the current directory. You can also use `--in PATH` to plant in another directory.
data/Rakefile CHANGED
@@ -38,17 +38,6 @@ end
38
38
  desc 'Clobber files'
39
39
  task clobber: :clobber_packages
40
40
 
41
- desc 'Development version check'
42
- task :ver do
43
- gver = `git ver`
44
- cver = IO.read(File.join(File.dirname(__FILE__), 'CHANGELOG.md')).match(/^#+ (\d+\.\d+\.\d+(\w+)?)/)[1]
45
- res = `grep VERSION lib/planter/version.rb`
46
- version = res.match(/VERSION *= *['"](\d+\.\d+\.\d+(\w+)?)/)[1]
47
- puts "git tag: #{gver}"
48
- puts "version.rb: #{version}"
49
- puts "changelog: #{cver}"
50
- end
51
-
52
41
  desc 'Get Script Version'
53
42
  task :sver do
54
43
  res = `grep VERSION lib/planter/version.rb`
@@ -56,11 +45,6 @@ task :sver do
56
45
  print version
57
46
  end
58
47
 
59
- desc 'Changelog version check'
60
- task :cver do
61
- puts IO.read(File.join(File.dirname(__FILE__), 'CHANGELOG.md')).match(/^#+ (\d+\.\d+\.\d+(\w+)?)/)[1]
62
- end
63
-
64
48
  desc 'Run tests in Docker'
65
49
  task :dockertest, :version, :login, :attempt do |_, args|
66
50
  args.with_defaults(version: 'all', login: false, attempt: 1)
@@ -78,6 +62,9 @@ task :dockertest, :version, :login, :attempt do |_, args|
78
62
  Rake::Task['dockertest'].invoke(v, false)
79
63
  end
80
64
  Process.exit 0
65
+ when /^3\.?3/
66
+ img = 'plantertest33'
67
+ file = 'docker/Dockerfile-3.3'
81
68
  when /^3/
82
69
  version = '3.0'
83
70
  img = 'plantertest3'
@@ -130,3 +117,52 @@ end
130
117
 
131
118
  desc 'alias for build'
132
119
  task package: :build
120
+
121
+ desc 'Development version check'
122
+ task :ver do
123
+ gver = `git ver`
124
+ cver = IO.read(File.join(File.dirname(__FILE__), 'CHANGELOG.md')).match(/^#+ (\d+\.\d+\.\d+(\w+)?)/)[1]
125
+ res = `grep VERSION lib/untitled/version.rb`
126
+ version = res.match(/VERSION *= *['"](\d+\.\d+\.\d+(\w+)?)/)[1]
127
+ puts "git tag: #{gver}"
128
+ puts "version.rb: #{version}"
129
+ puts "changelog: #{cver}"
130
+ end
131
+
132
+ desc 'Changelog version check'
133
+ task :cver do
134
+ puts IO.read(File.join(File.dirname(__FILE__), 'CHANGELOG.md')).match(/^#+ (\d+\.\d+\.\d+(\w+)?)/)[1]
135
+ end
136
+
137
+ desc 'Alias for build'
138
+ task package: :build
139
+
140
+ desc 'Bump incremental version number'
141
+ task :bump, :type do |_, args|
142
+ args.with_defaults(type: 'inc')
143
+ version_file = 'lib/untitled/version.rb'
144
+ content = IO.read(version_file)
145
+ content.sub!(/VERSION = '(?<major>\d+)\.(?<minor>\d+)\.(?<inc>\d+)(?<pre>\S+)?'/) do
146
+ m = Regexp.last_match
147
+ major = m['major'].to_i
148
+ minor = m['minor'].to_i
149
+ inc = m['inc'].to_i
150
+ pre = m['pre']
151
+
152
+ case args[:type]
153
+ when /^maj/
154
+ major += 1
155
+ minor = 0
156
+ inc = 0
157
+ when /^min/
158
+ minor += 1
159
+ inc = 0
160
+ else
161
+ inc += 1
162
+ end
163
+
164
+ $stdout.puts "At version #{major}.#{minor}.#{inc}#{pre}"
165
+ "VERSION = '#{major}.#{minor}.#{inc}#{pre}'"
166
+ end
167
+ File.open(version_file, 'w+') { |f| f.puts content }
168
+ end
data/bin/plant CHANGED
@@ -54,7 +54,7 @@ opts.on('-o', '--overwrite', 'Overwrite existing files') do
54
54
  Planter.overwrite = true
55
55
  end
56
56
 
57
- opts.on_tail('--base-dir', 'Use an alternate base directory for config and templates') do |opt|
57
+ opts.on_tail('--base-dir DIRECTORY', 'Use an alternate base directory for config and templates') do |opt|
58
58
  Planter.base_dir = opt
59
59
  end
60
60
 
@@ -1,11 +1,11 @@
1
1
  FROM ruby:2.6
2
2
  # RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
3
- RUN mkdir /howzit
4
- WORKDIR /howzit
5
- # COPY ./ /howzit/
3
+ RUN mkdir /planter
4
+ WORKDIR /planter
5
+ # COPY ./ /planter/
6
6
  RUN gem install bundler:2.2.29
7
- RUN apt-get update -y
8
- RUN apt-get install -y less vim
7
+ # RUN apt-get update -y
8
+ # RUN apt-get install -y less vim
9
9
  COPY ./docker/inputrc /root/.inputrc
10
10
  COPY ./docker/bash_profile /root/.bash_profile
11
11
  RUN mkdir -p /root/.config/planter/templates/test
@@ -1,8 +1,8 @@
1
1
  FROM ruby:2.7
2
2
  # RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
3
- RUN mkdir /howzit
4
- WORKDIR /howzit
5
- # COPY ./ /howzit/
3
+ RUN mkdir /planter
4
+ WORKDIR /planter
5
+ # COPY ./ /planter/
6
6
  RUN gem install bundler:2.2.29
7
7
  RUN apt-get update -y
8
8
  RUN apt-get install -y less vim
@@ -1,8 +1,8 @@
1
1
  FROM ruby:3.0.0
2
2
  # RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
3
- RUN mkdir /howzit
4
- WORKDIR /howzit
5
- # COPY ./ /howzit/
3
+ RUN mkdir /planter
4
+ WORKDIR /planter
5
+ # COPY ./ /planter/
6
6
  RUN gem install bundler:2.2.29
7
7
  RUN apt-get update -y
8
8
  RUN apt-get install -y less vim
data/lib/planter/array.rb CHANGED
@@ -58,5 +58,22 @@ module Planter
58
58
  end
59
59
  end
60
60
  end
61
+
62
+ #
63
+ # Destructive version of #symbolize_keys
64
+ #
65
+ # @return [Array] Array with symbolized keys
66
+ #
67
+ def symbolize_keys!
68
+ replace deep_dup.symbolize_keys
69
+ end
70
+
71
+ ## Deep duplicate an array of hashes or arrays
72
+ ##
73
+ ## @return [Array] Deep duplicated array
74
+ ##
75
+ def deep_dup
76
+ map { |v| v.is_a?(Hash) || v.is_a?(Array) ? v.deep_dup : v.dup }
77
+ end
61
78
  end
62
79
  end
@@ -7,7 +7,7 @@ module Planter
7
7
  attr_accessor :operation
8
8
 
9
9
  # File path and target path
10
- attr_reader :file, :target
10
+ attr_reader :file, :target, :tags
11
11
 
12
12
  ##
13
13
  ## Initialize a FileEntry object
@@ -19,10 +19,14 @@ module Planter
19
19
  ## @return [FileEntry] a Hash of parameters
20
20
  ##
21
21
  def initialize(file, target, operation)
22
+ return nil unless File.exist?(file)
23
+
22
24
  @file = file
23
25
  @target = target
24
26
  @operation = operation
25
27
 
28
+ @tags = Tag.get(file)
29
+
26
30
  super()
27
31
  end
28
32
 
@@ -61,6 +61,14 @@ module Planter
61
61
  else
62
62
  copy_file(entry)
63
63
  end
64
+
65
+ apply_tags(entry)
66
+ end
67
+
68
+ def apply_tags(entry)
69
+ return unless Planter.config[:preserve_tags]
70
+
71
+ Tag.copy(entry.file, entry.target) if File.exist?(entry.target)
64
72
  end
65
73
 
66
74
  ##
data/lib/planter/hash.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Hash helpers
4
3
  module Planter
5
4
  ## Hash helpers
6
5
  class ::Hash
@@ -18,6 +17,14 @@ module Planter
18
17
  end
19
18
  end
20
19
 
20
+ ## Destructive version of #stringify_keys
21
+ ##
22
+ ## @return [Hash] Hash with stringified keys
23
+ ##
24
+ def stringify_keys!
25
+ replace stringify_keys
26
+ end
27
+
21
28
  ##
22
29
  ## Turn all keys into symbols
23
30
  ##
@@ -33,6 +40,15 @@ module Planter
33
40
  end
34
41
  end
35
42
 
43
+ ##
44
+ ## Destructive version of #symbolize_keys
45
+ ##
46
+ ## @return [Hash] Hash with symbolized keys
47
+ ##
48
+ def symbolize_keys!
49
+ replace symbolize_keys
50
+ end
51
+
36
52
  ##
37
53
  ## Deep merge a hash
38
54
  ##
data/lib/planter/plant.rb CHANGED
@@ -68,6 +68,8 @@ module Planter
68
68
  ## @example Pass a GitHub-style repo path and get full url
69
69
  ## expand_repo("ttscoff/planter-cli") #=> https://github.com/ttscoff/planter-cli.git
70
70
  ##
71
+ ## @param repo [String] The repo
72
+ ##
71
73
  ## @return { description_of_the_return_value }
72
74
  ##
73
75
  def expand_repo(repo)
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Planter
4
+ module Tag
5
+ class << self
6
+ def set(target, tags)
7
+ tags = [tags] unless tags.is_a?(Array)
8
+
9
+ set_tags(target, tags)
10
+ $? == 0
11
+ end
12
+
13
+ # Add tags to a directory.
14
+ #
15
+ # @param dir [String] The directory to tag.
16
+ # @param tags [Array<String>] The tags to add.
17
+ def add(target, tags)
18
+ tags = [tags] unless tags.is_a?(Array)
19
+ existing_tags = get(target)
20
+ tags.concat(existing_tags).uniq!
21
+
22
+ set_tags(target, tags)
23
+ $? == 0
24
+ end
25
+
26
+ def get(target)
27
+ res = `xattr -p com.apple.metadata:_kMDItemUserTags "#{target}" 2>/dev/null`.clean_encode
28
+ return [] if res =~ /no such xattr/ || res.empty?
29
+
30
+ tags = Plist.parse_xml(res)
31
+
32
+ return false if tags.nil?
33
+
34
+ tags
35
+ end
36
+
37
+ def copy(source, target)
38
+ tags = `xattr -px com.apple.metadata:_kMDItemUserTags "#{source}" 2>/dev/null`
39
+ `xattr -wx com.apple.metadata:_kMDItemUserTags "#{tags}" "#{target}"`
40
+ $? == 0
41
+ end
42
+
43
+ private
44
+
45
+ def set_tags(target, tags)
46
+ tags.map! { |tag| "<string>#{tag}</string>" }
47
+ `xattr -w com.apple.metadata:_kMDItemUserTags '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
48
+ <plist version="1.0">
49
+ <array>#{tags.join}</array>
50
+ </plist>' "#{target}"`
51
+ end
52
+ end
53
+ end
54
+ end
@@ -3,5 +3,5 @@
3
3
  # Primary module for this gem.
4
4
  module Planter
5
5
  # Current Planter version.
6
- VERSION = '0.0.4'
6
+ VERSION = '3.0.1'
7
7
  end
data/lib/planter.rb CHANGED
@@ -6,6 +6,7 @@ require 'json'
6
6
  require 'yaml'
7
7
  require 'fileutils'
8
8
  require 'open3'
9
+ require 'plist'
9
10
 
10
11
  require 'chronic'
11
12
  require 'tty-reader'
@@ -18,6 +19,7 @@ require_relative 'planter/hash'
18
19
  require_relative 'planter/array'
19
20
  require_relative 'planter/symbol'
20
21
  require_relative 'planter/file'
22
+ require_relative 'planter/tag'
21
23
  require_relative 'planter/color'
22
24
  require_relative 'planter/errors'
23
25
  require_relative 'planter/prompt'
@@ -127,7 +129,8 @@ module Planter
127
129
  defaults: false,
128
130
  git_init: false,
129
131
  files: { '_planter.yml' => 'ignore' },
130
- color: true
132
+ color: true,
133
+ preserve_tags: true
131
134
  }
132
135
  begin
133
136
  File.open(base_config, 'w') { |f| f.puts(YAML.dump(default_base_config.stringify_keys)) }
data/planter-cli.gemspec CHANGED
@@ -41,6 +41,7 @@ Gem::Specification.new do |spec|
41
41
  spec.add_development_dependency 'yard', '~> 0.9.5'
42
42
 
43
43
  spec.add_runtime_dependency 'chronic', '~> 0.10'
44
+ spec.add_runtime_dependency 'plist', '~> 3.7.1'
44
45
  spec.add_runtime_dependency 'tty-reader', '~> 0.9'
45
46
  spec.add_runtime_dependency 'tty-screen', '~> 0.8'
46
47
  spec.add_runtime_dependency 'tty-spinner', '~> 0.9'
@@ -80,4 +80,31 @@ describe ::Hash do
80
80
  expect(hash[:b]).not_to be_frozen
81
81
  end
82
82
  end
83
+
84
+ describe '#stringify_keys!' do
85
+ let(:hash) { { key1: 'value1', key2: 'value2', key3: { key4: 'value4' } } }
86
+
87
+ it 'converts symbol keys to strings destructively' do
88
+ hash.stringify_keys!
89
+ expect(hash).to eq({ 'key1' => 'value1', 'key2' => 'value2', 'key3' => { 'key4' => 'value4' } })
90
+ end
91
+
92
+ it 'does not modify the original hash if already string keys' do
93
+ string_hash = { 'key1' => 'value1', 'key2' => 'value2', 'key3' => { 'key4' => 'value4' } }
94
+ string_hash.stringify_keys!
95
+ expect(string_hash).to eq({ 'key1' => 'value1', 'key2' => 'value2', 'key3' => { 'key4' => 'value4' } })
96
+ end
97
+
98
+ it 'handles nested hashes' do
99
+ nested_hash = { key1: { key2: { key3: 'value3' } } }
100
+ nested_hash.stringify_keys!
101
+ expect(nested_hash).to eq({ 'key1' => { 'key2' => { 'key3' => 'value3' } } })
102
+ end
103
+
104
+ it 'handles empty hashes' do
105
+ empty_hash = {}
106
+ empty_hash.stringify_keys!
107
+ expect(empty_hash).to eq({})
108
+ end
109
+ end
83
110
  end
data/spec/planter_spec.rb CHANGED
@@ -29,6 +29,21 @@ RSpec.describe "Planter" do
29
29
  end
30
30
  end
31
31
 
32
+ describe '.spinner' do
33
+ it 'initializes a new TTY::Spinner object if not already initialized' do
34
+ Planter.instance_variable_set(:@spinner, nil) # Ensure spinner is not initialized
35
+ spinner = Planter.spinner
36
+ expect(spinner).to be_a(TTY::Spinner)
37
+ end
38
+
39
+ it 'returns the existing TTY::Spinner object if already initialized' do
40
+ existing_spinner = TTY::Spinner.new
41
+ Planter.instance_variable_set(:@spinner, existing_spinner)
42
+ spinner = Planter.spinner
43
+ expect(spinner).to eq(existing_spinner)
44
+ end
45
+ end
46
+
32
47
  describe '.config=' do
33
48
  # it 'sets the config' do
34
49
  # path = File.expand_path('spec/noop')
@@ -0,0 +1,10 @@
1
+ {\rtf1\ansi\ansicpg1252\cocoartf2761
2
+ \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
3
+ {\colortbl;\red255\green255\blue255;}
4
+ {\*\expandedcolortbl;;}
5
+ \margl1440\margr1440\vieww11520\viewh8400\viewkind0
6
+ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
7
+
8
+ \f0\fs24 \cf0 Planter\
9
+ \
10
+ %%project:title%%}
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ def test
4
+ puts "test"
5
+ end
data/src/_README.md CHANGED
@@ -21,6 +21,17 @@ If [Gum](https://github.com/charmbracelet/gum) is available it will be used for
21
21
 
22
22
  Planter's base configuration is in `~/.config/planter/planter.yml`. This file can contain any of the keys used in templates (see below) and will serve as a base configuration for all templates. Any key defined in this file will be overridden if it exists in a template.
23
23
 
24
+ Example config (written on first run):
25
+
26
+ ```yaml
27
+ files:
28
+ .DS_Store: ignore
29
+ "*.tmp": ignore
30
+ "*.bak": ignore
31
+ git_init: false
32
+ preserve_tags: true
33
+ ```
34
+
24
35
  ### Scripts.
25
36
 
26
37
  Scripts for execution after planting can be stored in `~/.config/planter/scripts` and referenced by filename only. Alternatively, scripts may be stored within a template in a `_scritps` subfolder.
@@ -100,6 +111,10 @@ replacements:
100
111
 
101
112
  Replacements are performed on both file/directory names and file contents.
102
113
 
114
+ ### Finder Tags
115
+
116
+ If `preserve_tags` is set to `true` in the config (either base or template), then existing Finder tags on the file or folder will be copied to the new file when a template is planted.
117
+
103
118
  ## Usage
104
119
 
105
120
  The executable for Planter is `plant`. You can run `plant TEMPLATE` in any directory and TEMPLATE will be planted in the current directory. You can also use `--in PATH` to plant in another directory.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: planter-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-30 00:00:00.000000000 Z
11
+ date: 2024-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bump
@@ -262,6 +262,20 @@ dependencies:
262
262
  - - "~>"
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0.10'
265
+ - !ruby/object:Gem::Dependency
266
+ name: plist
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - "~>"
270
+ - !ruby/object:Gem::Version
271
+ version: 3.7.1
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: 3.7.1
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: tty-reader
267
281
  requirement: !ruby/object:Gem::Requirement
@@ -361,6 +375,7 @@ files:
361
375
  - lib/planter/script.rb
362
376
  - lib/planter/string.rb
363
377
  - lib/planter/symbol.rb
378
+ - lib/planter/tag.rb
364
379
  - lib/planter/version.rb
365
380
  - planter-cli.gemspec
366
381
  - scripts/deploy.rb
@@ -381,9 +396,12 @@ files:
381
396
  - spec/scripts/test.sh
382
397
  - spec/scripts/test_fail.sh
383
398
  - spec/spec_helper.rb
399
+ - spec/templates/test/%%project:snake%%.rtf
400
+ - spec/templates/test/Rakefile
384
401
  - spec/templates/test/_planter.yml
385
402
  - spec/templates/test/_scripts/test.sh
386
403
  - spec/templates/test/_scripts/test_fail.sh
404
+ - spec/templates/test/test.rb
387
405
  - spec/test_out/image.png
388
406
  - spec/test_out/test2.rb
389
407
  - src/_README.md
@@ -406,7 +424,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
406
424
  - !ruby/object:Gem::Version
407
425
  version: '0'
408
426
  requirements: []
409
- rubygems_version: 3.2.15
427
+ rubygems_version: 3.2.16
410
428
  signing_key:
411
429
  specification_version: 4
412
430
  summary: Plant files and directories using templates
@@ -427,8 +445,11 @@ test_files:
427
445
  - spec/scripts/test.sh
428
446
  - spec/scripts/test_fail.sh
429
447
  - spec/spec_helper.rb
448
+ - spec/templates/test/%%project:snake%%.rtf
449
+ - spec/templates/test/Rakefile
430
450
  - spec/templates/test/_planter.yml
431
451
  - spec/templates/test/_scripts/test.sh
432
452
  - spec/templates/test/_scripts/test_fail.sh
453
+ - spec/templates/test/test.rb
433
454
  - spec/test_out/image.png
434
455
  - spec/test_out/test2.rb