k_director 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.builders/_.rb +6 -0
- data/.builders/boot.rb +71 -0
- data/.builders/dsl/builders/actions_builder.rb +27 -0
- data/.builders/dsl/builders/dom_builder.rb +40 -0
- data/.builders/dsl/directors/base_director.rb +131 -0
- data/.builders/dsl/directors/child_director.rb +27 -0
- data/.builders/dsl/github_dsl.rb +129 -0
- data/.builders/dsl/ruby_gem_dsl.rb +77 -0
- data/.builders/generators/01-bootstrap.rb +127 -0
- data/.builders/run.rb +15 -0
- data/.githooks/commit-msg +14 -0
- data/.githooks/pre-commit +89 -0
- data/.github/workflows/main.yml +53 -0
- data/.github/workflows/semver.yml +54 -0
- data/.gitignore +46 -0
- data/.releaserc-old +46 -0
- data/.releaserc.json +40 -0
- data/.rspec +3 -0
- data/.rubocop.yml +86 -0
- data/.ver +1 -0
- data/Gemfile +17 -0
- data/Guardfile +30 -0
- data/README.md +83 -0
- data/Rakefile +34 -0
- data/bin/console +16 -0
- data/bin/setup +11 -0
- data/docs/CHANGE.md +6 -0
- data/docs/CODE_OF_CONDUCT.md +74 -0
- data/docs/LICENSE.txt +21 -0
- data/k_director.gemspec +47 -0
- data/lib/k_director/version.rb +5 -0
- data/lib/k_director.rb +17 -0
- data/package-lock.json +10648 -0
- data/package.json +14 -0
- data/sig/k_director.rbs +4 -0
- metadata +94 -0
@@ -0,0 +1,89 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# template_variant: :ruby
|
5
|
+
|
6
|
+
require 'English'
|
7
|
+
|
8
|
+
# NOTE: you may need change file permissions
|
9
|
+
# chmod +x hooks/pre-commit
|
10
|
+
|
11
|
+
exit 0 if ARGV.include?('--no-verify')
|
12
|
+
|
13
|
+
warning_keywords = %w[console.log]
|
14
|
+
keywords = %w[binding.pry console.dir byebug debugger]
|
15
|
+
files_changed = `git diff-index --name-only HEAD --`.split
|
16
|
+
|
17
|
+
# puts '----------------------------------------------------------------------'
|
18
|
+
# puts remove files changed from the pre-commit checking if they are one of the following files
|
19
|
+
# puts '----------------------------------------------------------------------'
|
20
|
+
# files_changed = files_changed - ['hooks/pre-commit']
|
21
|
+
# files_changed = files_changed - ['hooks/update-version']
|
22
|
+
|
23
|
+
# byebug may need to be in these files
|
24
|
+
files_changed -= ['Gemfile']
|
25
|
+
files_changed -= ['Gemfile.lock']
|
26
|
+
files_changed -= ['.gitignore']
|
27
|
+
files_changed -= ['README.md']
|
28
|
+
|
29
|
+
files_changed = files_changed.reject { |f| f.downcase.end_with?('.json') }
|
30
|
+
files_changed = files_changed.reject { |f| f.downcase.end_with?('.yml') }
|
31
|
+
|
32
|
+
# ignore files from specific folders
|
33
|
+
|
34
|
+
file_groups = files_changed.select do |item|
|
35
|
+
item.start_with?('.githooks') # ||
|
36
|
+
# item.start_with?('lib/generators')
|
37
|
+
end
|
38
|
+
|
39
|
+
files_changed -= file_groups
|
40
|
+
|
41
|
+
# remove files that are changed because they are deleted
|
42
|
+
files_changed = files_changed.select { |filename| File.file?(filename) }
|
43
|
+
|
44
|
+
# puts '----------------------------------------------------------------------'
|
45
|
+
# puts 'Files Changed'
|
46
|
+
# puts '----------------------------------------------------------------------'
|
47
|
+
# puts files_changed
|
48
|
+
# puts '----------------------------------------------------------------------'
|
49
|
+
|
50
|
+
unless files_changed.length.zero?
|
51
|
+
# puts "#{keywords.join('|')}"
|
52
|
+
# puts "#{files_changed.join(' ')}"
|
53
|
+
|
54
|
+
`git grep -q -E "#{warning_keywords.join('|')}" #{files_changed.join(' ')}`
|
55
|
+
|
56
|
+
if $CHILD_STATUS.exitstatus.zero?
|
57
|
+
puts '' # Check following lines:''
|
58
|
+
puts $CHILD_STATUS.exitstatus
|
59
|
+
files_changed.each do |file|
|
60
|
+
warning_keywords.each do |keyword|
|
61
|
+
# puts "#{keyword} ::: #{file}"
|
62
|
+
`git grep -q -E #{keyword} #{file}`
|
63
|
+
if $CHILD_STATUS.exitstatus.zero?
|
64
|
+
line = `git grep -n #{keyword} #{file} | awk -F ":" '{print $2}'`.split.join(', ')
|
65
|
+
puts "WARNING:\t\033[31m#{file}\033[0m contains #{keyword} at line \033[33m#{line}\033[0m."
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
`git grep -q -E "#{keywords.join('|')}" #{files_changed.join(' ')}`
|
72
|
+
|
73
|
+
if $CHILD_STATUS.exitstatus.zero?
|
74
|
+
puts '' # Check following lines:''
|
75
|
+
puts $CHILD_STATUS.exitstatus
|
76
|
+
files_changed.each do |file|
|
77
|
+
keywords.each do |keyword|
|
78
|
+
# puts "#{keyword} ::: #{file}"
|
79
|
+
`git grep -q -E #{keyword} #{file}`
|
80
|
+
if $CHILD_STATUS.exitstatus.zero?
|
81
|
+
line = `git grep -n #{keyword} #{file} | awk -F ":" '{print $2}'`.split.join(', ')
|
82
|
+
puts "ERROR :\t\033[31m#{file}\033[0m contains #{keyword} at line \033[33m#{line}\033[0m."
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
puts '# Force commit with --no-verify'
|
87
|
+
exit 1
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
name: Build Application
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ main ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ main ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
name: Ruby ${{ matrix.ruby }}
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
ruby: ['2.7.1'] #, '3.1.0']
|
16
|
+
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v2
|
19
|
+
- name: Set up Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby }}
|
23
|
+
bundler-cache: true
|
24
|
+
|
25
|
+
- name: Run tests
|
26
|
+
run: bundle exec rspec
|
27
|
+
|
28
|
+
- name: Slack notify on rspec error
|
29
|
+
if: failure()
|
30
|
+
uses: rtCamp/action-slack-notify@v2
|
31
|
+
env:
|
32
|
+
SLACK_CHANNEL: klueless-repos
|
33
|
+
SLACK_COLOR: '#ff0000'
|
34
|
+
SLACK_ICON: https://avatars.githubusercontent.com/u/2956762?s=64&v=4
|
35
|
+
SLACK_TITLE: 'RSpec failure on ${{github.repository}} - try:'
|
36
|
+
SLACK_MESSAGE: 'rspec'
|
37
|
+
SLACK_USERNAME: klueless-io
|
38
|
+
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
39
|
+
|
40
|
+
- name: Run rubocop
|
41
|
+
run: bundle exec rubocop
|
42
|
+
|
43
|
+
- name: Slack notification on rubocop error
|
44
|
+
if: failure()
|
45
|
+
uses: rtCamp/action-slack-notify@v2
|
46
|
+
env:
|
47
|
+
SLACK_CHANNEL: klueless-repos
|
48
|
+
SLACK_COLOR: '#ff0000'
|
49
|
+
SLACK_ICON: https://avatars.githubusercontent.com/u/2956762?s=64&v=4
|
50
|
+
SLACK_TITLE: 'Rubocop failure on $ - try:'
|
51
|
+
SLACK_MESSAGE: 'cop -a'
|
52
|
+
SLACK_USERNAME: klueless-io
|
53
|
+
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
name: SemVer
|
2
|
+
on:
|
3
|
+
workflow_run:
|
4
|
+
workflows: ["Build Application"]
|
5
|
+
branches: [main]
|
6
|
+
types:
|
7
|
+
- completed
|
8
|
+
jobs:
|
9
|
+
release:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- uses: actions/setup-node@v2
|
15
|
+
with:
|
16
|
+
node-version: '16'
|
17
|
+
|
18
|
+
# - uses: hmarr/debug-action@v2 # TURN on ENV DEBUG
|
19
|
+
|
20
|
+
- name: Cache node modules
|
21
|
+
uses: actions/cache@v2
|
22
|
+
id: cache-node-modules
|
23
|
+
env:
|
24
|
+
cache-name: cache-node-modules
|
25
|
+
with:
|
26
|
+
path: ~/.npm
|
27
|
+
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
28
|
+
restore-keys: |
|
29
|
+
${{ runner.os }}-build-${{ env.cache-name }}-
|
30
|
+
${{ runner.os }}-build-
|
31
|
+
${{ runner.os }}-
|
32
|
+
|
33
|
+
- name: Install semantic-release dependencies
|
34
|
+
if: steps.cache.outputs.cache-hit != 'true'
|
35
|
+
run: npm ci
|
36
|
+
|
37
|
+
# SEE MORE: https://github.com/semantic-release/semantic-release/issues/753
|
38
|
+
- name: Run SemVer
|
39
|
+
run: npm run release
|
40
|
+
env:
|
41
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
42
|
+
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
|
43
|
+
|
44
|
+
# - name: Slack notify new version created
|
45
|
+
# if: success()
|
46
|
+
# uses: rtCamp/action-slack-notify@v2
|
47
|
+
# env:
|
48
|
+
# SLACK_CHANNEL: klueless-repos
|
49
|
+
# SLACK_COLOR: '#00ff00'
|
50
|
+
# SLACK_ICON: https://avatars.githubusercontent.com/u/2956762?s=64&v=4
|
51
|
+
# SLACK_TITLE: 'New version released on ${{github.repository}}'
|
52
|
+
# SLACK_MESSAGE: 'git pull'
|
53
|
+
# SLACK_USERNAME: klueless-io
|
54
|
+
# SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
data/.gitignore
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Move this into a KLUE SATELITE DOCUMENT
|
2
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
3
|
+
#
|
4
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
5
|
+
# or operating system, you probably want to add a global ignore instead:
|
6
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
7
|
+
#
|
8
|
+
# The Octocat has a Gist containing some good rules to add to this file.
|
9
|
+
# https://gist.github.com/octocat/9257657
|
10
|
+
|
11
|
+
/_/
|
12
|
+
/.bundle/
|
13
|
+
/.history/
|
14
|
+
/.yardoc
|
15
|
+
/_yardoc/
|
16
|
+
/coverage/
|
17
|
+
/log/
|
18
|
+
!/log/.keep
|
19
|
+
/doc/
|
20
|
+
/pkg/
|
21
|
+
/spec/reports/
|
22
|
+
/tmp/
|
23
|
+
!/tmp/.keep
|
24
|
+
*.bundle
|
25
|
+
*.so
|
26
|
+
*.o
|
27
|
+
*.a
|
28
|
+
mkmf.log
|
29
|
+
|
30
|
+
# Ruby Version
|
31
|
+
.ruby-version
|
32
|
+
|
33
|
+
# Environment File
|
34
|
+
.env
|
35
|
+
|
36
|
+
# Gems should not use a Gemfile.lock
|
37
|
+
Gemfile.lock
|
38
|
+
|
39
|
+
# RubyGem definitions
|
40
|
+
*.gem
|
41
|
+
|
42
|
+
# rspec failure tracking
|
43
|
+
.rspec_status
|
44
|
+
|
45
|
+
# ByeBug history
|
46
|
+
.byebug_history
|
data/.releaserc-old
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
{
|
2
|
+
"branches": [
|
3
|
+
"main"
|
4
|
+
],
|
5
|
+
"verifyRelease": [{
|
6
|
+
"path": "@semantic-release/exec",
|
7
|
+
"cmd": "git config --global user.name 'David Cruwys';echo '${nextRelease.version}' > .ver;git add .;git commit -am '${nextRelease.version} [skip ci]';git push"
|
8
|
+
}],
|
9
|
+
"plugins": [
|
10
|
+
"@semantic-release/commit-analyzer",
|
11
|
+
"@semantic-release/release-notes-generator",
|
12
|
+
[
|
13
|
+
"@semantic-release/npm",
|
14
|
+
{
|
15
|
+
"npmPublish": false
|
16
|
+
}
|
17
|
+
],
|
18
|
+
[
|
19
|
+
"@klueless-js/semantic-release-rubygem",
|
20
|
+
{
|
21
|
+
"gemPublish": false
|
22
|
+
}
|
23
|
+
],
|
24
|
+
"semantic-release-rubygem",
|
25
|
+
[
|
26
|
+
"@semantic-release/changelog",
|
27
|
+
{
|
28
|
+
"changelogFile": "docs/CHANGELOG.md",
|
29
|
+
"changelogFileTitle": "k_director Changelog"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
[
|
33
|
+
"@semantic-release/git",
|
34
|
+
{
|
35
|
+
"assets": [
|
36
|
+
"lib/k_director/version.rb",
|
37
|
+
"docs/CHANGELOG.md"
|
38
|
+
],
|
39
|
+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
40
|
+
}
|
41
|
+
],
|
42
|
+
"@semantic-release/github"
|
43
|
+
],
|
44
|
+
"repositoryUrl": "git@github.com:klueless-io/k_director.git"
|
45
|
+
}
|
46
|
+
|
data/.releaserc.json
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
{
|
2
|
+
"branches": [
|
3
|
+
"main"
|
4
|
+
],
|
5
|
+
"plugins": [
|
6
|
+
"@semantic-release/commit-analyzer",
|
7
|
+
"@semantic-release/release-notes-generator",
|
8
|
+
[
|
9
|
+
"@semantic-release/npm",
|
10
|
+
{
|
11
|
+
"npmPublish": false
|
12
|
+
}
|
13
|
+
],
|
14
|
+
[
|
15
|
+
"@klueless-js/semantic-release-rubygem",
|
16
|
+
{
|
17
|
+
"gemPublish": true
|
18
|
+
}
|
19
|
+
],
|
20
|
+
[
|
21
|
+
"@semantic-release/changelog",
|
22
|
+
{
|
23
|
+
"changelogFile": "docs/CHANGE.md",
|
24
|
+
"changelogFileTitle": "k_director Changelog"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
[
|
28
|
+
"@semantic-release/git",
|
29
|
+
{
|
30
|
+
"assets": [
|
31
|
+
"lib/k_director/version.rb",
|
32
|
+
"docs/CHANGELOG.md"
|
33
|
+
],
|
34
|
+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
35
|
+
}
|
36
|
+
],
|
37
|
+
"@semantic-release/github"
|
38
|
+
],
|
39
|
+
"repositoryUrl": "git@github.com:klueless-io/k_director.git"
|
40
|
+
}
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
inherit_mode:
|
2
|
+
merge:
|
3
|
+
- Exclude # see: https://stackoverflow.com/a/70818366/473923
|
4
|
+
|
5
|
+
AllCops:
|
6
|
+
TargetRubyVersion: 2.7
|
7
|
+
DisplayCopNames: true
|
8
|
+
ExtraDetails: true
|
9
|
+
NewCops: enable
|
10
|
+
Exclude:
|
11
|
+
- ".builders/**/*"
|
12
|
+
- "spec/samples/**/*"
|
13
|
+
|
14
|
+
Metrics/BlockLength:
|
15
|
+
Exclude:
|
16
|
+
- "**/spec/**/*"
|
17
|
+
- "*.gemspec"
|
18
|
+
IgnoredMethods:
|
19
|
+
- configure
|
20
|
+
- context
|
21
|
+
- define
|
22
|
+
- describe
|
23
|
+
- draw
|
24
|
+
- factory
|
25
|
+
- feature
|
26
|
+
- guard
|
27
|
+
- included
|
28
|
+
- it
|
29
|
+
- let
|
30
|
+
- let!
|
31
|
+
- scenario
|
32
|
+
- setup
|
33
|
+
- shared_context
|
34
|
+
- shared_examples
|
35
|
+
- shared_examples_for
|
36
|
+
- transaction
|
37
|
+
|
38
|
+
Metrics/MethodLength:
|
39
|
+
Max: 25
|
40
|
+
|
41
|
+
Layout/LineLength:
|
42
|
+
Max: 200
|
43
|
+
# Ignores annotate output
|
44
|
+
IgnoredPatterns: ['\A# \*\*']
|
45
|
+
IgnoreCopDirectives: true
|
46
|
+
|
47
|
+
Lint/UnusedMethodArgument:
|
48
|
+
AllowUnusedKeywordArguments: true
|
49
|
+
|
50
|
+
Style/BlockComments:
|
51
|
+
Enabled: false
|
52
|
+
Include:
|
53
|
+
- "**/spec/*"
|
54
|
+
|
55
|
+
# My Preferences - Start
|
56
|
+
Metrics/ClassLength:
|
57
|
+
Enabled: false
|
58
|
+
Metrics/ModuleLength:
|
59
|
+
Exclude:
|
60
|
+
- "**/spec/**/*"
|
61
|
+
Naming/MemoizedInstanceVariableName:
|
62
|
+
Enabled: false
|
63
|
+
Naming/VariableNumber:
|
64
|
+
Exclude:
|
65
|
+
- "**/spec/**/*"
|
66
|
+
Style/EmptyMethod:
|
67
|
+
Exclude:
|
68
|
+
- "**/spec/**/*"
|
69
|
+
Metrics/ParameterLists:
|
70
|
+
Exclude:
|
71
|
+
- "**/spec/**/*"
|
72
|
+
Layout/EmptyLineBetweenDefs:
|
73
|
+
Exclude:
|
74
|
+
- "**/spec/**/*"
|
75
|
+
|
76
|
+
Lint/AmbiguousBlockAssociation:
|
77
|
+
Exclude:
|
78
|
+
- "**/spec/**/*"
|
79
|
+
|
80
|
+
Style/AccessorGrouping:
|
81
|
+
Enabled: false
|
82
|
+
|
83
|
+
Layout/SpaceBeforeComma:
|
84
|
+
Enabled: false
|
85
|
+
# My Preferences - End
|
86
|
+
|
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
gemspec
|
6
|
+
|
7
|
+
group :development, :test do
|
8
|
+
gem 'guard-bundler'
|
9
|
+
gem 'guard-rspec'
|
10
|
+
gem 'guard-rubocop'
|
11
|
+
gem 'rake', '~> 12.0'
|
12
|
+
gem 'rake-compiler', require: false
|
13
|
+
gem 'rspec', '~> 3.0'
|
14
|
+
gem 'rubocop'
|
15
|
+
gem 'rubocop-rake', require: false
|
16
|
+
gem 'rubocop-rspec', require: false
|
17
|
+
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('.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//(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
23
|
+
watch(%r{^lib//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/README.md
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# K Director
|
2
|
+
|
3
|
+
> KDirector provides domain specific language implementations for code generation
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'k_director'
|
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_director
|
23
|
+
```
|
24
|
+
|
25
|
+
|
26
|
+
## Stories
|
27
|
+
|
28
|
+
### Main Story
|
29
|
+
|
30
|
+
As a Developer, I want to generate code using a DSL, so that I can speed up application development
|
31
|
+
|
32
|
+
See all [stories](./STORIES.md)
|
33
|
+
|
34
|
+
|
35
|
+
## Usage
|
36
|
+
|
37
|
+
See all [usage examples](./USAGE.md)
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
## Development
|
42
|
+
|
43
|
+
Checkout the repo
|
44
|
+
|
45
|
+
```bash
|
46
|
+
git clone https://github.com/klueless-io/k_director
|
47
|
+
```
|
48
|
+
|
49
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
|
50
|
+
|
51
|
+
You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
52
|
+
|
53
|
+
```bash
|
54
|
+
bin/console
|
55
|
+
|
56
|
+
Aaa::Bbb::Program.execute()
|
57
|
+
# => ""
|
58
|
+
```
|
59
|
+
|
60
|
+
`k_director` 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.
|
61
|
+
|
62
|
+
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).
|
63
|
+
|
64
|
+
```bash
|
65
|
+
rake publish
|
66
|
+
rake clean
|
67
|
+
```
|
68
|
+
|
69
|
+
## Contributing
|
70
|
+
|
71
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/klueless-io/k_director. 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.
|
72
|
+
|
73
|
+
## License
|
74
|
+
|
75
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
76
|
+
|
77
|
+
## Code of Conduct
|
78
|
+
|
79
|
+
Everyone interacting in the K Director project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/klueless-io/k_director/blob/master/CODE_OF_CONDUCT.md).
|
80
|
+
|
81
|
+
## Copyright
|
82
|
+
|
83
|
+
Copyright (c) David Cruwys. See [MIT License](LICENSE.txt) for further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
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_director'
|
6
|
+
|
7
|
+
require 'bundler/gem_tasks'
|
8
|
+
require 'rspec/core/rake_task'
|
9
|
+
require 'k_director/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_director') do |ext|
|
19
|
+
ext.lib_dir = 'lib/k_director'
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Publish the gem to RubyGems.org'
|
23
|
+
task :publish do
|
24
|
+
version = KDirector::VERSION
|
25
|
+
system 'gem build'
|
26
|
+
system "gem push #{GEM_NAME}-#{version}.gem"
|
27
|
+
end
|
28
|
+
|
29
|
+
desc 'Remove old *.gem files'
|
30
|
+
task :clean do
|
31
|
+
system 'rm *.gem'
|
32
|
+
end
|
33
|
+
|
34
|
+
task default: %i[clobber compile spec]
|
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_director'
|
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/setup
ADDED
data/docs/CHANGE.md
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
## [0.0.4](https://github.com/klueless-io/k_director/compare/v0.0.3...v0.0.4) (2022-01-25)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* test publish [#1](https://github.com/klueless-io/k_director/issues/1) ([1d001af](https://github.com/klueless-io/k_director/commit/1d001afb6087a50003ff3c18d53b10d35df31a1c))
|