playbook_ui 2.8.3 → 2.8.4
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/app/pb_kits/playbook/packs/examples.js +15 -0
- data/app/pb_kits/playbook/packs/kits.js +5 -0
- data/app/pb_kits/playbook/packs/pb_label_pill.js +4 -0
- data/app/pb_kits/playbook/packs/pb_owner.js +4 -0
- data/app/pb_kits/playbook/packs/pb_owner_phone.js +4 -0
- data/app/pb_kits/playbook/packs/pb_phone.js +4 -0
- data/app/pb_kits/playbook/packs/pb_toggle.js +4 -0
- data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +5 -0
- data/app/pb_kits/playbook/pb_label_pill/_label_pill.html.erb +7 -0
- data/app/pb_kits/playbook/pb_label_pill/_label_pill.jsx +21 -0
- data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +11 -0
- data/app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.html.erb +34 -0
- data/app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_label_pill/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_label_pill/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_label_pill/label_pill.rb +58 -0
- data/app/pb_kits/playbook/pb_list/_list.html.erb +1 -1
- data/app/pb_kits/playbook/pb_list/_list.jsx +3 -3
- data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
- data/app/pb_kits/playbook/pb_list/docs/_list_dark_lg.html.erb +1 -1
- data/app/pb_kits/playbook/pb_list/docs/_list_lg.html.erb +1 -1
- data/app/pb_kits/playbook/pb_list/list.rb +8 -7
- data/app/pb_kits/playbook/pb_owner/_owner.html.erb +7 -0
- data/app/pb_kits/playbook/pb_owner/_owner.jsx +21 -0
- data/app/pb_kits/playbook/pb_owner/_owner.scss +11 -0
- data/app/pb_kits/playbook/pb_owner/docs/_owner_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_owner/docs/_owner_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_owner/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_owner/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_owner/owner.rb +52 -0
- data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.html.erb +7 -0
- data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.jsx +21 -0
- data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.scss +9 -0
- data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.html.erb +6 -0
- data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_owner_phone/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_owner_phone/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_owner_phone/owner_phone.rb +64 -0
- data/app/pb_kits/playbook/pb_phone/_phone.html.erb +6 -0
- data/app/pb_kits/playbook/pb_phone/_phone.jsx +21 -0
- data/app/pb_kits/playbook/pb_phone/_phone.scss +2 -0
- data/app/pb_kits/playbook/pb_phone/docs/_phone_default.html.erb +4 -0
- data/app/pb_kits/playbook/pb_phone/docs/_phone_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_phone/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_phone/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_phone/phone.rb +69 -0
- data/app/pb_kits/playbook/pb_toggle/_toggle.html.erb +12 -0
- data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +21 -0
- data/app/pb_kits/playbook/pb_toggle/_toggle.scss +57 -0
- data/app/pb_kits/playbook/pb_toggle/docs/_toggle_checked.html.erb +11 -0
- data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default.html.erb +11 -0
- data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default.jsx +13 -0
- data/app/pb_kits/playbook/pb_toggle/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_toggle/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_toggle/toggle.rb +59 -0
- data/lib/generators/kit/kit_generator.rb +13 -9
- data/lib/generators/kit/templates/kit_ruby.erb.tt +3 -1
- data/lib/playbook/engine.rb +1 -0
- data/lib/playbook/version.rb +1 -1
- data/lib/tasks/pb_release.rake +69 -0
- metadata +92 -44
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default as PhoneDefault} from './_phone_default.jsx';
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require "action_view"
|
|
2
|
+
include ActionView::Helpers::NumberHelper
|
|
3
|
+
|
|
4
|
+
module Playbook
|
|
5
|
+
module PbPhone
|
|
6
|
+
class Phone < Playbook::PbKit::Base
|
|
7
|
+
PROPS = [:configured_classname,
|
|
8
|
+
:configured_data,
|
|
9
|
+
:configured_id,
|
|
10
|
+
:configured_icon,
|
|
11
|
+
:configured_number].freeze
|
|
12
|
+
|
|
13
|
+
def initialize(classname: default_configuration,
|
|
14
|
+
data: default_configuration,
|
|
15
|
+
id: default_configuration,
|
|
16
|
+
icon: default_configuration,
|
|
17
|
+
number: default_configuration)
|
|
18
|
+
self.configured_classname = classname
|
|
19
|
+
self.configured_data = data
|
|
20
|
+
self.configured_id = id
|
|
21
|
+
self.configured_icon = icon
|
|
22
|
+
self.configured_number = number
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def icon
|
|
26
|
+
# TODO: Strict options and automaticlly pass the correct icon name
|
|
27
|
+
if is_set? configured_icon
|
|
28
|
+
icon_props = { icon: configured_icon, fixed_width: true}
|
|
29
|
+
pb_icon = Playbook::PbIcon::Icon.new(icon_props)
|
|
30
|
+
ApplicationController.renderer.render(partial: pb_icon, as: :object)
|
|
31
|
+
else
|
|
32
|
+
""
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def number
|
|
37
|
+
if is_set? configured_number
|
|
38
|
+
if formatted_number
|
|
39
|
+
return number_to_phone(formatted_number, area_code: true)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def formatted_number
|
|
45
|
+
configured_number.to_s.gsub(/\D/, "")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def value
|
|
49
|
+
pb_body = Playbook::PbBody::Body.new(color: "light") do
|
|
50
|
+
icon + number
|
|
51
|
+
end
|
|
52
|
+
ApplicationController.renderer.render(partial: pb_body, as: :object)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def to_partial_path
|
|
56
|
+
"pb_phone/phone"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
DEFAULT = Object.new
|
|
62
|
+
private_constant :DEFAULT
|
|
63
|
+
def default_configuration
|
|
64
|
+
DEFAULT
|
|
65
|
+
end
|
|
66
|
+
attr_accessor(*PROPS)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%= content_tag(:div,
|
|
2
|
+
id: object.id,
|
|
3
|
+
data: object.data,
|
|
4
|
+
class: object.classname(object.kit_class),
|
|
5
|
+
) do %>
|
|
6
|
+
|
|
7
|
+
<label class="pb_toggle_wrapper">
|
|
8
|
+
<input type="checkbox" <%= object.checked %> />
|
|
9
|
+
<div class="pb_toggle_control"></div>
|
|
10
|
+
</label>
|
|
11
|
+
|
|
12
|
+
<% end %>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
|
|
4
|
+
const propTypes = {
|
|
5
|
+
className: PropTypes.string,
|
|
6
|
+
id: PropTypes.string
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
class Toggle extends React.Component {
|
|
10
|
+
render() {
|
|
11
|
+
return (
|
|
12
|
+
<div className="pb_toggle">
|
|
13
|
+
<span>TOGGLE CONTENT</span>
|
|
14
|
+
</div>
|
|
15
|
+
)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
Toggle.propTypes = propTypes;
|
|
20
|
+
|
|
21
|
+
export default Toggle;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
@import "../tokens/colors";
|
|
2
|
+
|
|
3
|
+
$color_checkbox_success: $data_1;
|
|
4
|
+
$color_checkbox_default: $border_light;
|
|
5
|
+
$transition: .2s cubic-bezier(0.95, 0.05, 0.795, 0.035);
|
|
6
|
+
$toggle_sizes: (
|
|
7
|
+
"sm": 50px,
|
|
8
|
+
"md": 60px,
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
[class^=pb_toggle] {
|
|
12
|
+
position: relative;
|
|
13
|
+
|
|
14
|
+
@each $name, $size in $toggle_sizes {
|
|
15
|
+
&[class*=_#{$name}] {
|
|
16
|
+
|
|
17
|
+
$width: $size;
|
|
18
|
+
$height: $width/2;
|
|
19
|
+
|
|
20
|
+
.pb_toggle_wrapper {
|
|
21
|
+
.pb_toggle_control {
|
|
22
|
+
transition: $transition;
|
|
23
|
+
width: $width;
|
|
24
|
+
height: $height;
|
|
25
|
+
display: block;
|
|
26
|
+
border-radius: $height;
|
|
27
|
+
border: 3px solid $color_checkbox_default;
|
|
28
|
+
background-color: $color_checkbox_default;
|
|
29
|
+
position: relative;
|
|
30
|
+
box-sizing: content-box;
|
|
31
|
+
&:after {
|
|
32
|
+
transition: $transition;
|
|
33
|
+
content: "";
|
|
34
|
+
width: $width/2;
|
|
35
|
+
height: $height;
|
|
36
|
+
display: block;
|
|
37
|
+
background-color: $white;
|
|
38
|
+
border-radius: 50%;
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: 0;
|
|
41
|
+
left: 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
input {
|
|
45
|
+
display: none;
|
|
46
|
+
&:checked + .pb_toggle_control {
|
|
47
|
+
border-color: $color_checkbox_success;
|
|
48
|
+
background-color: $color_checkbox_success;
|
|
49
|
+
&:after{
|
|
50
|
+
left: $width/2;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default as ToggleDefault} from './_toggle_default.jsx';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Playbook
|
|
2
|
+
module PbToggle
|
|
3
|
+
class Toggle < Playbook::PbKit::Base
|
|
4
|
+
PROPS = [:configured_classname,
|
|
5
|
+
:configured_data,
|
|
6
|
+
:configured_id,
|
|
7
|
+
:configured_size,
|
|
8
|
+
:configured_checked
|
|
9
|
+
].freeze
|
|
10
|
+
|
|
11
|
+
def initialize(classname: default_configuration,
|
|
12
|
+
data: default_configuration,
|
|
13
|
+
id: default_configuration,
|
|
14
|
+
size: default_configuration,
|
|
15
|
+
checked: default_configuration)
|
|
16
|
+
self.configured_classname = classname
|
|
17
|
+
self.configured_data = data
|
|
18
|
+
self.configured_id = id
|
|
19
|
+
self.configured_size = size
|
|
20
|
+
self.configured_checked = checked
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def size
|
|
24
|
+
size_options = %w[sm md]
|
|
25
|
+
one_of_value(configured_size, size_options, "md")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def checked
|
|
29
|
+
true_value(configured_checked, "checked='true'", "")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def checked_class
|
|
33
|
+
checked ? "on" : "off"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def kit_class
|
|
37
|
+
toggle_options = [
|
|
38
|
+
"pb_toggle",
|
|
39
|
+
size,
|
|
40
|
+
checked_class
|
|
41
|
+
]
|
|
42
|
+
toggle_options.join("_")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def to_partial_path
|
|
46
|
+
"pb_toggle/toggle"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
DEFAULT = Object.new
|
|
52
|
+
private_constant :DEFAULT
|
|
53
|
+
def default_configuration
|
|
54
|
+
DEFAULT
|
|
55
|
+
end
|
|
56
|
+
attr_accessor(*PROPS)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -28,8 +28,10 @@ class KitGenerator < Rails::Generators::NamedBase
|
|
|
28
28
|
@kit_class_val.push("self.configured_#{key.parameterize.underscore} = #{key.parameterize.underscore}")
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
full_kit_directory = "app/pb_kits/playbook/pb_#{@kit_name_underscore}"
|
|
32
|
+
|
|
31
33
|
# Check if kit already exists =======================
|
|
32
|
-
if File.directory?(
|
|
34
|
+
if File.directory?(full_kit_directory)
|
|
33
35
|
say_status "#{@kit_name_capitalize} kit already exists.",
|
|
34
36
|
"Please choose another name or manually make changes to the existing kit.",
|
|
35
37
|
:red
|
|
@@ -44,7 +46,7 @@ class KitGenerator < Rails::Generators::NamedBase
|
|
|
44
46
|
:green
|
|
45
47
|
|
|
46
48
|
# Generate SCSS files ==============================
|
|
47
|
-
template "kit_scss.erb", "
|
|
49
|
+
template "kit_scss.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.scss"
|
|
48
50
|
open("app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss", "a") do |f|
|
|
49
51
|
f.puts "@" + "import " + "\'" + "../../pb_#{@kit_name_underscore}/#{@kit_name_underscore}" + "\';"
|
|
50
52
|
end
|
|
@@ -55,9 +57,9 @@ class KitGenerator < Rails::Generators::NamedBase
|
|
|
55
57
|
# Ask user if Rails version should be generated ======
|
|
56
58
|
if yes?("Create RAILS #{@kit_name_underscore} kit? (y/N)")
|
|
57
59
|
@rails_kit = true
|
|
58
|
-
template "kit_ruby.erb", "
|
|
59
|
-
template "kit_html.erb", "
|
|
60
|
-
template "kit_example_rails.erb", "
|
|
60
|
+
template "kit_ruby.erb", "#{full_kit_directory}/#{@kit_name_underscore}.rb"
|
|
61
|
+
template "kit_html.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.html.erb"
|
|
62
|
+
template "kit_example_rails.erb", "#{full_kit_directory}/docs/_#{@kit_name_underscore}_default.html.erb"
|
|
61
63
|
say_status "complete",
|
|
62
64
|
"#{@kit_name_capitalize} rails kit successfully created.",
|
|
63
65
|
:green
|
|
@@ -66,9 +68,9 @@ class KitGenerator < Rails::Generators::NamedBase
|
|
|
66
68
|
# Ask user if React version should be generated ======
|
|
67
69
|
if yes?("Create REACT #{@kit_name_pascal} kit? (y/N)")
|
|
68
70
|
@react_kit = true
|
|
69
|
-
template "kit_jsx.erb", "
|
|
70
|
-
template "kit_example_react.erb", "
|
|
71
|
-
template "kit_js.erb", "
|
|
71
|
+
template "kit_jsx.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.jsx"
|
|
72
|
+
template "kit_example_react.erb", "#{full_kit_directory}/docs/_#{@kit_name_underscore}_default.jsx"
|
|
73
|
+
template "kit_js.erb", "#{full_kit_directory}/docs/index.js"
|
|
72
74
|
template "kit_pack.erb", "app/pb_kits/playbook/packs/pb_#{@kit_name_underscore}.js"
|
|
73
75
|
|
|
74
76
|
# Import in all kits.js =========================
|
|
@@ -87,7 +89,9 @@ class KitGenerator < Rails::Generators::NamedBase
|
|
|
87
89
|
end
|
|
88
90
|
|
|
89
91
|
# Create kit example.yml
|
|
90
|
-
template "kit_example_yml.erb", "
|
|
92
|
+
template "kit_example_yml.erb", "#{full_kit_directory}/docs/example.yml"
|
|
93
|
+
|
|
94
|
+
`rubocop --safe-auto-correct #{full_kit_directory}`
|
|
91
95
|
end
|
|
92
96
|
end
|
|
93
97
|
end
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Playbook
|
|
2
4
|
module Pb<%= @kit_name_pascal %>
|
|
3
5
|
class <%= @kit_name_pascal %> < Playbook::PbKit::Base
|
|
4
|
-
PROPS = [<%= @kit_props.map{|key,val| "
|
|
6
|
+
PROPS = %i[<%= @kit_props.map{|key,val| "configured_#{key.parameterize.underscore}".to_sym }.join("\n\t\t\t\t\t") %>].freeze
|
|
5
7
|
|
|
6
8
|
def initialize(<%= @kit_class_init.join(",\n\t\t\t\t\t\t\t") %>)
|
|
7
9
|
<%= @kit_class_val.join("\n\t\t\t\t") %>
|
data/lib/playbook/engine.rb
CHANGED
|
@@ -14,6 +14,7 @@ module Playbook
|
|
|
14
14
|
|
|
15
15
|
config.assets.paths ||= []
|
|
16
16
|
config.assets.paths << "#{Gem.loaded_specs['playbook_ui'].full_gem_path}/fonts"
|
|
17
|
+
config.assets.paths << "#{Gem.loaded_specs['playbook_ui'].full_gem_path}/app/pb_kits/playbook/pb_*"
|
|
17
18
|
|
|
18
19
|
config.sass.load_paths ||= []
|
|
19
20
|
config.sass.load_paths << "#{Gem.loaded_specs['playbook_ui'].full_gem_path}/app/pb_kits/playbook"
|
data/lib/playbook/version.rb
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
namespace :pb_release do
|
|
2
|
+
|
|
3
|
+
desc "Update the version number in preparation to release"
|
|
4
|
+
task version: :environment do
|
|
5
|
+
old_version = Playbook::VERSION
|
|
6
|
+
new_version = ''
|
|
7
|
+
STDOUT.puts "What would you like the next release number to be? Currently #{old_version}"
|
|
8
|
+
new_version = STDIN.gets.chomp
|
|
9
|
+
|
|
10
|
+
puts "Ok great, let's make version #{new_version}"
|
|
11
|
+
puts "\n\n"
|
|
12
|
+
|
|
13
|
+
# Update package.json
|
|
14
|
+
package = File.read("package.json")
|
|
15
|
+
new_package = package.gsub(/"version": "#{old_version}",/, "\"version\": \"#{new_version}\",")
|
|
16
|
+
File.open("package.json", "w") {|file| file.puts new_package }
|
|
17
|
+
puts "Updated package.json"
|
|
18
|
+
|
|
19
|
+
# Update version.rb
|
|
20
|
+
version_rb = File.read("lib/playbook/version.rb")
|
|
21
|
+
new_version_rb = version_rb.gsub(/VERSION = "#{old_version}".freeze/, "VERSION = \"#{new_version}\".freeze")
|
|
22
|
+
File.open("lib/playbook/version.rb", "w") {|file| file.puts new_version_rb }
|
|
23
|
+
puts "Updated lib/playbook/version.rb"
|
|
24
|
+
|
|
25
|
+
# Update gemfile.lock
|
|
26
|
+
gemfile = File.read("gemfile.lock")
|
|
27
|
+
new_gemfile = gemfile.gsub(/playbook_ui \(#{Regexp.escape(old_version)}\)/, "playbook_ui (#{new_version})")
|
|
28
|
+
File.open("gemfile.lock", "w") {|file| file.puts new_gemfile }
|
|
29
|
+
puts "Updated gemfile.lock"
|
|
30
|
+
puts "\n\n"
|
|
31
|
+
|
|
32
|
+
puts "Commit your changes and create a PR to merge to master"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
desc "Publish to RubyGems, NPM, and Create a Tag"
|
|
36
|
+
task push: :environment do
|
|
37
|
+
version = Playbook::VERSION
|
|
38
|
+
puts "You about to release version #{version}. Is that correct? (y/N)"
|
|
39
|
+
input = STDIN.gets.chomp
|
|
40
|
+
raise Nope unless input.downcase == "y"
|
|
41
|
+
|
|
42
|
+
# RubyGems
|
|
43
|
+
puts "\nCreating Gem..."
|
|
44
|
+
`gem build playbook_ui.gemspec`
|
|
45
|
+
puts "\nPushing to RubyGems..."
|
|
46
|
+
`gem push playbook_ui-#{version}.gem`
|
|
47
|
+
puts "\nPushed to RubyGems. Now lets clean up..."
|
|
48
|
+
`rm -rf playbook_ui-#{version}.gem`
|
|
49
|
+
|
|
50
|
+
# NPM
|
|
51
|
+
puts "\nPushing to NPM..."
|
|
52
|
+
`npm publish`
|
|
53
|
+
|
|
54
|
+
# Tags
|
|
55
|
+
puts "\nPushed to NPM. Now lets create a tag..."
|
|
56
|
+
description = ''
|
|
57
|
+
puts "\nWrite a brief tag release description. You can edit this later on GitHub."
|
|
58
|
+
description = STDIN.gets.chomp
|
|
59
|
+
puts "\nCreating Tag..."
|
|
60
|
+
`git tag -a #{version} -m "#{description}"`
|
|
61
|
+
puts "\nPushing Tag to GitHub..."
|
|
62
|
+
`git push origin #{version}`
|
|
63
|
+
|
|
64
|
+
puts "\n\n"
|
|
65
|
+
puts "Complete! Don't forget to add your release notes https://github.com/powerhome/playbook/releases/tag/#{version}"
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|