k_manager 0.0.13

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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/main.yml +31 -0
  3. data/.gitignore +50 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +85 -0
  6. data/Assessment1.md +127 -0
  7. data/Assessment2.md +88 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +25 -0
  10. data/Guardfile +30 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +82 -0
  13. data/Rakefile +33 -0
  14. data/STORIES.md +42 -0
  15. data/ToDo.md +8 -0
  16. data/USAGE.md +19 -0
  17. data/bin/console +16 -0
  18. data/bin/k +36 -0
  19. data/bin/kgitsync +76 -0
  20. data/bin/khotfix +244 -0
  21. data/bin/setup +11 -0
  22. data/hooks/pre-commit +87 -0
  23. data/hooks/update-version +33 -0
  24. data/k_manager.gemspec +47 -0
  25. data/lib/k_manager.rb +50 -0
  26. data/lib/k_manager/configuration/project_config.rb +14 -0
  27. data/lib/k_manager/create_document.rb +31 -0
  28. data/lib/k_manager/documents/basic_document.rb +21 -0
  29. data/lib/k_manager/documents/builder_document.rb +18 -0
  30. data/lib/k_manager/documents/document_taggable.rb +94 -0
  31. data/lib/k_manager/documents/model_document.rb +19 -0
  32. data/lib/k_manager/project.rb +50 -0
  33. data/lib/k_manager/resources/base_resource.rb +182 -0
  34. data/lib/k_manager/resources/csv_file_resource.rb +27 -0
  35. data/lib/k_manager/resources/factories/document_factory.rb +52 -0
  36. data/lib/k_manager/resources/factories/ruby_document_factory.rb +57 -0
  37. data/lib/k_manager/resources/file_resource.rb +93 -0
  38. data/lib/k_manager/resources/json_file_resource.rb +22 -0
  39. data/lib/k_manager/resources/ruby_file_resource.rb +32 -0
  40. data/lib/k_manager/resources/unknown_file_resource.rb +22 -0
  41. data/lib/k_manager/resources/x_resource.rb +243 -0
  42. data/lib/k_manager/resources/yaml_file_resource.rb +21 -0
  43. data/lib/k_manager/version.rb +5 -0
  44. data/lib/k_manager/x_project.rb +698 -0
  45. data/lib/k_manager/x_project_manager.rb +133 -0
  46. data/lib/k_manager/x_register.rb +199 -0
  47. data/lib/k_manager/x_resource_documents/resource_document.rb +51 -0
  48. metadata +150 -0
data/Gemfile ADDED
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in handlebars_helpers.gemspec
6
+ gemspec
7
+
8
+ # group :development do
9
+ # # Currently conflicts with GitHub actions and so I remove it on push
10
+ # # pry on steroids
11
+ # gem 'jazz_fingers'
12
+ # gem 'pry-coolline', github: 'owst/pry-coolline', branch: 'support_new_pry_config_api'
13
+ # end
14
+
15
+ group :development, :test do
16
+ gem 'guard-bundler'
17
+ gem 'guard-rspec'
18
+ gem 'guard-rubocop'
19
+ gem 'rake', '~> 12.0'
20
+ gem 'rake-compiler', require: false
21
+ gem 'rspec', '~> 3.0'
22
+ gem 'rubocop'
23
+ gem 'rubocop-rake', require: false
24
+ gem 'rubocop-rspec', require: false
25
+ end
data/Guardfile ADDED
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ guard :bundler, cmd: 'bundle install' do
4
+ watch('Gemfile')
5
+ watch('k_manager.gemspec')
6
+ end
7
+
8
+ group :green_pass_then_cop, halt_on_fail: true do
9
+ guard :rspec, cmd: 'bundle exec rspec -f doc' do
10
+ require 'guard/rspec/dsl'
11
+ dsl = Guard::RSpec::Dsl.new(self)
12
+
13
+ # RSpec files
14
+ rspec = dsl.rspec
15
+ watch(rspec.spec_helper) { rspec.spec_dir }
16
+ watch(rspec.spec_support) { rspec.spec_dir }
17
+ watch(rspec.spec_files)
18
+
19
+ # Ruby files
20
+ ruby = dsl.ruby
21
+ dsl.watch_spec_files_for(ruby.lib_files)
22
+ watch(%r{^lib/k_manager/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
23
+ watch(%r{^lib/k_manager/commands/(.+)\.rb$}) { |m| "spec/unit/commands/#{m[1]}_spec.rb" }
24
+ end
25
+
26
+ guard :rubocop, all_on_start: false, cli: ['--format', 'clang'] do
27
+ watch(/{.+\.rb$/)
28
+ watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
29
+ end
30
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 David Cruwys
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # K Manager
2
+
3
+ > K Manager provides a managed host for documents, resources and code generator execution
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'k_manager'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```bash
16
+ bundle install
17
+ ```
18
+
19
+ Or install it yourself as:
20
+
21
+ ```bash
22
+ gem install k_manager
23
+ ```
24
+
25
+ ## Stories
26
+
27
+ ### Main Story
28
+
29
+
30
+
31
+ See all [stories](./STORIES.md)
32
+
33
+
34
+ ## Usage
35
+
36
+ See all [usage examples](./USAGE.md)
37
+
38
+
39
+
40
+ ## Development
41
+
42
+ Checkout the repo
43
+
44
+ ```bash
45
+ git clone klueless-io/k_manager
46
+ ```
47
+
48
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
49
+
50
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
51
+
52
+ ```bash
53
+ bin/console
54
+
55
+ Aaa::Bbb::Program.execute()
56
+ # => ""
57
+ ```
58
+
59
+ `k_manager` is setup with Guard, run `guard`, this will watch development file changes and run tests automatically, if successful, it will then run rubocop for style quality.
60
+
61
+ To release a new version, update the version number in `version.rb`, build the gem and push the `.gem` file to [rubygems.org](https://rubygems.org).
62
+
63
+ ```bash
64
+ rake publish
65
+ rake clean
66
+ ```
67
+
68
+ ## Contributing
69
+
70
+ Bug reports and pull requests are welcome on GitHub at https://github.com/klueless-io/k_manager. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
71
+
72
+ ## License
73
+
74
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
75
+
76
+ ## Code of Conduct
77
+
78
+ Everyone interacting in the K Manager project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/klueless-io/k_manager/blob/master/CODE_OF_CONDUCT.md).
79
+
80
+ ## Copyright
81
+
82
+ Copyright (c) David Cruwys. See [MIT License](LICENSE.txt) for further details.
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # source: https://stephenagrice.medium.com/making-a-command-line-ruby-gem-write-build-and-push-aec24c6c49eb
4
+
5
+ GEM_NAME = 'k_manager'
6
+
7
+ require 'bundler/gem_tasks'
8
+ require 'rspec/core/rake_task'
9
+ require 'k_manager/version'
10
+
11
+ RSpec::Core::RakeTask.new(:spec)
12
+
13
+ require 'rake/extensiontask'
14
+
15
+ desc 'Compile all the extensions'
16
+ task build: :compile
17
+
18
+ Rake::ExtensionTask.new('k_manager') do |ext|
19
+ ext.lib_dir = 'lib/k_manager'
20
+ end
21
+
22
+ desc 'Publish the gem to RubyGems.org'
23
+ task :publish do
24
+ system 'gem build'
25
+ system "gem push #{GEM_NAME}-#{KManager::VERSION}.gem"
26
+ end
27
+
28
+ desc 'Remove old *.gem files'
29
+ task :clean do
30
+ system 'rm *.gem'
31
+ end
32
+
33
+ task default: %i[clobber compile spec]
data/STORIES.md ADDED
@@ -0,0 +1,42 @@
1
+ # K Manager
2
+
3
+ > K Manager provides a managed host for documents, resources and code generator execution
4
+
5
+ As a Developer, I need to generate code and handle complex data modeling, so I can generate complete applications quickly
6
+
7
+ ## Development radar
8
+
9
+ ### Stories next on list
10
+
11
+ As a Developer, I need to generate code and handle complex data modeling, so I can generate complete applications quickly
12
+
13
+ ## Stories and tasks
14
+
15
+ ### Tasks - completed
16
+
17
+ Setup RubyGems and RubyDoc
18
+
19
+ - Build and deploy gem to [rubygems.org](https://rubygems.org/gems/k_manager)
20
+ - Attach documentation to [rubydoc.info](https://rubydoc.info/github/to-do-/k_manager/master)
21
+
22
+ Setup project management, requirement and SCRUM documents
23
+
24
+ - Setup readme file
25
+ - Setup user stories and tasks
26
+ - Setup a project backlog
27
+ - Setup an examples/usage document
28
+
29
+ Setup GitHub Action (test and lint)
30
+
31
+ - Setup Rspec action
32
+ - Setup RuboCop action
33
+
34
+ Setup new Ruby GEM
35
+
36
+ - Build out a standard GEM structure
37
+ - Add automated semantic versioning
38
+ - Add Rspec unit testing framework
39
+ - Add RuboCop linting
40
+ - Add Guard for automatic watch and test
41
+ - Add GitFlow support
42
+ - Add GitHub Repository
data/ToDo.md ADDED
@@ -0,0 +1,8 @@
1
+ # K_Manager
2
+
3
+ This may be better off named as k_builder-project or k_builder-manager.
4
+
5
+ and / or
6
+
7
+ KBuilder::BaseConfiguration & KBuilder::Configuration may be
8
+ better renamed and moved into k_types
data/USAGE.md ADDED
@@ -0,0 +1,19 @@
1
+ # K Manager
2
+
3
+ > K Manager provides a managed host for documents, resources and code generator execution
4
+
5
+ As a Developer, I need to generate code and handle complex data modeling, so I can generate complete applications quickly
6
+
7
+ ## Usage
8
+
9
+ ### Sample Classes
10
+
11
+ #### Simple example
12
+
13
+ Description for a simple example that shows up in the USAGE.MD
14
+
15
+ ```ruby
16
+ class SomeRuby
17
+ def initialize; end
18
+ end
19
+ ```
data/bin/console ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # frozen_string_literal: true
4
+
5
+ require 'bundler/setup'
6
+ require 'k_manager'
7
+
8
+ # You can add fixtures and/or initialization code here to make experimenting
9
+ # with your gem easier. You can also use a different console, if you like.
10
+
11
+ # (If you use this, don't forget to add pry to your Gemfile!)
12
+ # require 'pry'
13
+ # Pry.start
14
+
15
+ require 'irb'
16
+ IRB.start(__FILE__)
data/bin/k ADDED
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # NOTE: you may need change file permissions
5
+ # chmod +x bin/k
6
+
7
+ help = %(
8
+ ----------------------------------------------------------------------
9
+ Klue Scripts - Help
10
+ ----------------------------------------------------------------------
11
+ k - This Help File
12
+
13
+ khotfix - Create Hot Fix
14
+ Hot fixes are created in GIT and versioned correctly.
15
+ The patch # will increment by 1.
16
+ e.g. v0.1.1 will become v0.1.2
17
+ The version.rb file will also store the current version.
18
+ usage:
19
+ khotfix 'name of my cool hotfix'
20
+
21
+ kgitsync - Synchronize the master and development git repositories
22
+ Pulls latest code, pushes current changes
23
+ usage:
24
+ kgitsync
25
+
26
+ ----------------------------------------------------------------------
27
+ Rake Tasks
28
+ ----------------------------------------------------------------------
29
+
30
+ rails db:seed - load seed data
31
+
32
+ rails db:seed sample=true - load sample data, useful in developer environments
33
+
34
+ rails db:seed reset=true - reset database
35
+ )
36
+ puts help
data/bin/kgitsync ADDED
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env bash
2
+
3
+ #NOTE: you may need change file permissions
4
+ # chmod +x bin/kgitsync
5
+
6
+ # Set up colour support, if we have it
7
+ # Are stdout and stderr both connected to a terminal
8
+ # If not then don't set colours
9
+ if [ -t 1 -a -t 2 ]
10
+ then
11
+ if tput -V >/dev/null 2>&1
12
+ then
13
+ C_RED=`tput setaf 1`
14
+ C_GREEN=`tput setaf 2`
15
+ C_BROWN=`tput setaf 3`
16
+ C_BLUE=`tput setaf 4`
17
+ C_RESET=`tput sgr0`
18
+ fi
19
+ fi
20
+
21
+
22
+ exit_error ()
23
+ {
24
+ # dont display if string is zero length
25
+ [ -z "$1" ] || echo "${C_RED}Error: ${C_BROWN} $1 ${C_RESET}"
26
+ exit 1
27
+ }
28
+
29
+
30
+ # make sure we are in a git tree
31
+ [ "`git rev-parse --is-inside-work-tree`" = "true" ] || exit_error "NOT a git repository"
32
+ echo "Repository check OK"
33
+
34
+ CURRENT_BRANCH=`git branch | awk '/^\*/{print $2}'`
35
+
36
+ # check that we are on develop or master
37
+ #[ "${CURRENT_BRANCH}" = "master" -o "${CURRENT_BRANCH}" = "develop" ] || exit_error "You MUST be on either the master or development branch"
38
+ #echo "Branch check OK"
39
+
40
+ # check that the current branch is clean
41
+ [ -z "`git status --porcelain`" ] || exit_error "Working copy has uncommitted changes"
42
+ echo "Working copy is clean OK"
43
+
44
+ # fetch from origin
45
+ git fetch origin || exit_error "Failed to fetch from origin"
46
+
47
+ ######################
48
+ # Do develop
49
+ ######################
50
+ git checkout develop || exit_error "Failed to checkout develop branch"
51
+ echo "Switched to develop"
52
+ git merge origin/develop || exit_error "Failed to merge develop from origin"
53
+ echo "Develop branch upto date"
54
+ git push || exit_error "Failed to push develop to origin"
55
+ echo "Develop pushed to origin"
56
+
57
+ ######################
58
+ # Do master
59
+ ######################
60
+ git checkout master || exit_error "Failed to checkout master branch"
61
+ echo "Switched to master"
62
+ git merge origin/master || exit_error "Failed to merge master from origin"
63
+ echo "Master branch upto date"
64
+ git push || exit_error "Failed to push master to origin"
65
+ echo "Master pushed to origin"
66
+
67
+ ######################
68
+ # Do tags
69
+ ######################
70
+ git push --tags || exit_error "Failed to push tags to origin"
71
+ echo "Tags pushed to origin"
72
+
73
+ # return to the current branch
74
+ git checkout ${CURRENT_BRANCH} || exit_error "Failed to return to your origional branch ${CURRENT_BRANCH}"
75
+
76
+ echo "${C_GREEN}Done. you are on ${CURRENT_BRANCH}${C_RESET}"
data/bin/khotfix ADDED
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env bash
2
+
3
+ #NOTE: you may need change file permissions
4
+ # chmod +x bin/khotfix
5
+
6
+ # Create a Versioned HotFix in Git and update the VERSION #
7
+ # USAGE
8
+ #
9
+ # ./bin/khotfix.sh 'my brand new hot fix'
10
+
11
+ # HELPERS
12
+ clear
13
+
14
+ l_heading ()
15
+ {
16
+ heading=$1
17
+
18
+ echo "======================================================================"
19
+ echo "${heading}"
20
+ echo "======================================================================"
21
+ }
22
+
23
+ l_line ()
24
+ {
25
+ echo "----------------------------------------------------------------------"
26
+ }
27
+
28
+ l_title ()
29
+ {
30
+ title=$1
31
+
32
+ l_line
33
+ echo "${title}"
34
+ l_line
35
+ }
36
+
37
+ l ()
38
+ {
39
+ title=$1
40
+
41
+ echo "${title}"
42
+ }
43
+
44
+ lkv ()
45
+ {
46
+ title=$1
47
+ value=$2
48
+
49
+ printf "%-25s : %s\n" "$title" "$value"
50
+ }
51
+
52
+
53
+ # expect 1 argument
54
+ MESSAGE=$1
55
+
56
+ l_heading "Make Hotfix - '${MESSAGE}'"
57
+
58
+
59
+ # This environment var will prevent git from asking for merge messages
60
+ export GIT_MERGE_AUTOEDIT=no
61
+
62
+ # Set up colour support, if we have it
63
+ # Are stdout and stderr both connected to a terminal, If not then don't set colours
64
+ if [ -t 1 -a -t 2 ]
65
+ then
66
+ if tput -V >/dev/null 2>&1
67
+ then
68
+ C_RED=`tput setaf 1`
69
+ C_GREEN=`tput setaf 2`
70
+ C_BROWN=`tput setaf 3`
71
+ C_BLUE=`tput setaf 4`
72
+ C_RESET=`tput sgr0`
73
+ fi
74
+ fi
75
+
76
+
77
+ exit_error ()
78
+ {
79
+ # dont display if string is zero length
80
+ [ -z "$1" ] || echo "${C_RED}Error: ${C_BROWN} $1 ${C_RESET}"
81
+ exit 1
82
+ }
83
+
84
+
85
+ # check arguments
86
+ [ ! -z "${MESSAGE}" ] || exit_error "You must pass a message when making a hotfix"
87
+
88
+ # make sure we are in a git tree
89
+ [ "`git rev-parse --is-inside-work-tree`" = "true" ] || exit_error "NOT a git repository"
90
+ l "Repository check OK"
91
+
92
+ CURRENT_BRANCH=`git branch | awk '/^\*/{print $2}'`
93
+
94
+ lkv "CURRENT_BRANCH" "${CURRENT_BRANCH}"
95
+
96
+ # check that we are on develop or master
97
+ [ "${CURRENT_BRANCH}" = "master" -o "${CURRENT_BRANCH}" = "develop" ] || exit_error "You MUST be on either the master or development branch"
98
+ l "OK: Branch"
99
+
100
+ # check that the current branch is NOT clean (we need changes to make a hotfix)
101
+ [ ! -z "`git status --porcelain`" ] || exit_error "Working copy is clean - no hotfix"
102
+ l "OK: Working copy has hotfix ready"
103
+
104
+ # fetch from origin
105
+ git fetch origin || exit_error "Failed to fetch from origin"
106
+ l "OK: Fsetch from origin"
107
+
108
+ # get the current directory that this script is in.
109
+ # we assume that the other scripts are in the same directory
110
+ SYNC_SCRIPT=kgitsync
111
+ SCRIPT_DIR=`dirname $0`
112
+
113
+ # ----------------------------------------------------------------------
114
+ # GET VERSION NUMBER
115
+ # ----------------------------------------------------------------------
116
+
117
+ l_title 'GET VERSION NUMBER'
118
+
119
+ # Get the last tag version
120
+ VERSION=`git tag | sort -V | tail -1`
121
+ lkv "CURENT VERSION" "${VERSION}"
122
+
123
+ # NOTE, if you don't have a TAG then you might need to manually do
124
+ # git flow hotfix start v0.01.001
125
+ # git flow hotfix finish v0.01.001
126
+
127
+ # Verify its format
128
+ [[ "`git tag | sort -V | tail -1`" =~ ^v[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,3}$ ]] || exit_error "Bad version format, version=${VERSION}"
129
+ # extract the version components
130
+ IFS=. read MAJOR_VERSION MINOR_VERSION PATCH_VERSION <<< "${VERSION}"
131
+
132
+ # inc the patch version. note: force base 10 as leading 0 makes bash think this is octal
133
+ PATCH_VERSION=$((10#${PATCH_VERSION} + 1))
134
+ lkv 'Patch #' "${PATCH_VERSION}"
135
+
136
+ # assemble the new version
137
+ NEW_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}"
138
+ lkv "NEW VERSION" "${NEW_VERSION}"
139
+
140
+ ./hooks/update-version "${NEW_VERSION}" || exit_error "could not update version.rb you may need to run [chmod +x hooks/update-version]"
141
+
142
+ l_line
143
+ l 'git add .'
144
+ git add .
145
+
146
+ l 'git status'
147
+ l_line
148
+ git status
149
+
150
+ # ----------------------------------------------------------------------
151
+ # Before doing anything, add the files and then run the commit hook
152
+ # Then stash any changes - working directory will be clean after this
153
+ # The commit hook is where we can check for any debugging code that has
154
+ # gone into the code and abort the commit
155
+ # ----------------------------------------------------------------------
156
+
157
+ l 'check for debugging code'
158
+ ./hooks/pre-commit || exit_error "remove debugging code from the commit - then run again"
159
+
160
+ l "Stash changes to [git_make_hotfix: ${MESSAGE}]"
161
+
162
+ git stash save "git_make_hotfix: ${MESSAGE}"
163
+
164
+ l "OK: Stashed"
165
+
166
+ l_title 'Master/Develop Branches'
167
+ # ----------------------------------------------------------------------
168
+ # update develop
169
+ # ----------------------------------------------------------------------
170
+
171
+ lkv "Develop" "Synchronized"
172
+ git checkout develop || exit_error "Failed to checkout develop branch"
173
+ lkv "Develop" "Switched"
174
+ git merge origin/develop || exit_error "Failed to merge develop from origin"
175
+ lkv "Develop" "Merged and upto date"
176
+
177
+ # ----------------------------------------------------------------------
178
+ # update master
179
+ # ----------------------------------------------------------------------
180
+
181
+ lkv "Master" "Synchronized"
182
+ git checkout master || exit_error "Failed to checkout master branch"
183
+ lkv "Master" "Switched"
184
+ git merge origin/master || exit_error "Failed to merge master from origin"
185
+ lkv "Master" "Merged and upto date"
186
+
187
+ # ----------------------------------------------------------------------
188
+ # start the hotfix
189
+ # ----------------------------------------------------------------------
190
+
191
+ l_title 'Hotfix'
192
+
193
+ lkv "Version" "${NEW_VERSION}"
194
+
195
+
196
+
197
+ lkv "git flow hotfix start" "${NEW_VERSION}"
198
+
199
+ git flow hotfix start "${NEW_VERSION}" || exit_error "Failed to start hotfix ${NEW_VERSION}"
200
+
201
+ HOTFIX_BRANCH="hotfix/${NEW_VERSION}"
202
+
203
+ lkv "started" "${HOTFIX_BRANCH}"
204
+
205
+ # ----------------------------------------------------------------------
206
+ # commit the stashed changes
207
+ # ----------------------------------------------------------------------
208
+
209
+ lkv "git stash" "pop"
210
+
211
+ git stash pop || exit_error "Failed to pop the stash into the hotfix"
212
+
213
+ lkv "git commit" "${MESSAGE}"
214
+
215
+ git commit -a -m"${MESSAGE}" || exit_error "Failed to commit the stash to ${HOTFIX_BRANCH}"
216
+
217
+ lkv "git commit succesful" "${HOTFIX_BRANCH}"
218
+
219
+ # ----------------------------------------------------------------------
220
+ # close the hotfix
221
+ # ----------------------------------------------------------------------
222
+
223
+ lkv "git flow hotfix finish" "${NEW_VERSION}"
224
+
225
+ git flow hotfix finish "${NEW_VERSION}" -m"${MESSAGE}" || exit_error "Failed to close ${HOTFIX_BRANCH}"
226
+
227
+ lkv "finished" "${HOTFIX_BRANCH}"
228
+
229
+ # closing the hotfix leaves you on the development branch
230
+ # return to the master ???? or should we stay on development
231
+
232
+ lkv "git checkout" "master"
233
+
234
+ git checkout master || exit_error "Failed to return to master branch"
235
+
236
+ # ----------------------------------------------------------------------
237
+ # now push the changes
238
+ # ----------------------------------------------------------------------
239
+
240
+ l_title 'Push Changes and Synchronize Master/Develop'
241
+
242
+ ${SCRIPT_DIR}/${SYNC_SCRIPT}
243
+
244
+ l_heading 'Success'