k_director 0.7.1 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5939eff40d316d1567818484e3d6bed5ebea38b6252e6f8413773fb3b6237483
4
- data.tar.gz: f1ac410aab5054420f5d1ed8231167b9a7c3f5fbb7f3c6e921f1e3a585e3bcc7
3
+ metadata.gz: 5784bc2f8f9ea89bac4e9d195ed607c1785d1f92281ff7ed553f9edf47d5c29f
4
+ data.tar.gz: cf9f19744ba09d4ef876a4114e4a4d52161d7355255c8393c726f78295ad44a5
5
5
  SHA512:
6
- metadata.gz: d22685499a5845dfe933e4d8f9bc2c6d8c4905c18f8e66cdae2c20a5c4fa9d57138c234dde2fe5a41d3ece4a874e1f0d18fe47159e17a623dcab8a7b435c18fe
7
- data.tar.gz: 7eb329e8211d8fe6ea1eafdc4c52ee4da1b0fdfde538744625c2327379dd04c28bb346ec5fa3cb234f9efd314e1f53f209f64d522596e65de16e048f84a352b5
6
+ metadata.gz: b5ae842246267f476569e932922db59431a4e5af70c164968a51e12447ab34ef0300aca3f9b2cf0fbb1574ca98c14a8ad857978e7ca672a9bfe38c3d1a55c91c
7
+ data.tar.gz: 9b10d1b7ab087e22656a486439cf2c71cf7d9b8d93c3de87e6d3df49b71ad1156a90eb605f8dbe93246a83e3faea722572f64cb4e7bb6ceb30867736529485ab
@@ -1,5 +1,6 @@
1
1
  name: Build Application
2
2
 
3
+ # echo ${{secrets.SOME_SECRET }} | sed 's/./& /g' &&
3
4
  on:
4
5
  push:
5
6
  branches: [ main ]
@@ -64,8 +65,6 @@ jobs:
64
65
  with:
65
66
  node-version: '16'
66
67
 
67
- # - uses: hmarr/debug-action@v2 # TURN on ENV DEBUG
68
-
69
68
  - name: Cache node modules
70
69
  uses: actions/cache@v2
71
70
  id: cache-node-modules
data/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ # [0.8.0](https://github.com/klueless-io/k_director/compare/v0.7.3...v0.8.0) (2022-02-04)
2
+
3
+
4
+ ### Features
5
+
6
+ * add rubygem DSL support ([f93a863](https://github.com/klueless-io/k_director/commit/f93a86338d703771ba43a8e9ed5e7c8e9d1a7778))
7
+
8
+ ## [0.7.3](https://github.com/klueless-io/k_director/compare/v0.7.2...v0.7.3) (2022-02-03)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * alter internal github info ([ed77548](https://github.com/klueless-io/k_director/commit/ed77548eee2f1cdd0c9799f0842b0e44e79ed2f4))
14
+
15
+ ## [0.7.2](https://github.com/klueless-io/k_director/compare/v0.7.1...v0.7.2) (2022-02-03)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * improve debug support ([6edb583](https://github.com/klueless-io/k_director/commit/6edb583e3aa467fbd77f4b30f2250dca9a170c7a))
21
+
22
+ ## [0.7.1](https://github.com/klueless-io/k_director/compare/v0.7.0...v0.7.1) (2022-02-03)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * add support for github and blueprint to nuxt3 ([335befb](https://github.com/klueless-io/k_director/commit/335befbc427e156f9fe52407641fe720e22b2bb3))
28
+
1
29
  # [0.7.0](https://github.com/klueless-io/k_director/compare/v0.6.2...v0.7.0) (2022-02-03)
2
30
 
3
31
 
data/k_director.gemspec CHANGED
@@ -41,6 +41,7 @@ Gem::Specification.new do |spec|
41
41
  'rubygems_mfa_required' => 'true'
42
42
  }
43
43
 
44
+ spec.add_dependency 'k_config', '~> 0.0.0'
44
45
  spec.add_dependency 'k_log', '~> 0.0.0'
45
46
  # spec.add_dependency 'k_type', '~> 0.0.0'
46
47
  spec.add_dependency 'k_builder', '~> 0.0.0'
@@ -82,7 +82,7 @@ module KDirector
82
82
 
83
83
  def debug
84
84
  puts JSON.pretty_generate(actions)
85
- # puts JSON.pretty_generate(dom)
85
+ puts JSON.pretty_generate(dom)
86
86
  # log.structure(dom)
87
87
 
88
88
  self
@@ -124,6 +124,11 @@ module KDirector
124
124
  end
125
125
 
126
126
  def debug
127
+ debug_options
128
+ debug_dom
129
+ end
130
+
131
+ def debug_options
127
132
  log.section_heading director_name
128
133
 
129
134
  h = options.to_h.sort.to_h
@@ -131,6 +136,15 @@ module KDirector
131
136
  # requires k_funky
132
137
  log.kv(titleize.parse(key.to_s), h[key])
133
138
  end
139
+
140
+ nil
141
+ end
142
+
143
+ def debug_dom
144
+ log.section_heading 'DOM'
145
+
146
+ builder.debug
147
+
134
148
  nil
135
149
  end
136
150
 
@@ -13,6 +13,12 @@ module KDirector
13
13
 
14
14
  super(parent.k_builder, parent.builder, **@parent.inherited_opts(**opts))
15
15
  end
16
+
17
+ def debug
18
+ parent.debug_options
19
+ debug_options
20
+ debug_dom
21
+ end
16
22
  end
17
23
  end
18
24
  end
@@ -14,23 +14,23 @@ module KDirector
14
14
 
15
15
  defaults = {
16
16
  repo_name: opts[:repo_name], # || parent.builder.dom&[:github]&[:repo_name]
17
- user: opts[:user] || default_github_user, # || parent.builder.dom&[:github]&[:user]
17
+ username: opts[:username] || default_github_username, # || parent.builder.dom&[:github]&[:username]
18
18
  organization: opts[:organization] # || parent.builder.dom&[:github]&[:organization]
19
19
  }
20
20
 
21
- parent.builder.group_set(:github, **defaults)
21
+ parent.builder.group_set(:github, **repo_info_hash(**defaults))
22
22
  end
23
23
 
24
24
  def repo_name
25
- parent.builder.dom[:github][:repo_name]
25
+ parent.builder.dom.dig(:github, :repo_name)
26
26
  end
27
27
 
28
- def user
29
- parent.builder.dom[:github][:user]
28
+ def username
29
+ parent.builder.dom.dig(:github, :username)
30
30
  end
31
31
 
32
32
  def organization
33
- parent.builder.dom[:github][:organization]
33
+ parent.builder.dom.dig(:github, :organization)
34
34
  end
35
35
 
36
36
  def list_repositories
@@ -110,29 +110,32 @@ module KDirector
110
110
  end
111
111
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
112
112
 
113
- def repo_info(**opts)
114
- repo_name = opts[:name] || self.repo_name
115
- repo_name = repo_name.to_s
116
- username = opts[:username] || user
113
+ def repo_info_hash(**opts)
114
+ repo_name = (opts[:repo_name] || self.repo_name).to_s
115
+ username = opts[:username] || self.username
117
116
  organization = opts[:organization] || self.organization
118
117
  account = organization || username
119
118
  full_name = [account, repo_name].compact.join('/')
120
119
  link = "https://github.com/#{full_name}"
121
120
  ssh_link = "git@github.com:#{full_name}.git"
122
121
 
123
- OpenStruct.new(
122
+ {
124
123
  repo_name: repo_name,
125
124
  full_name: full_name,
126
125
  link: link,
127
126
  ssh_link: ssh_link,
128
127
  username: username,
129
128
  organization: organization
130
- )
129
+ }
130
+ end
131
+
132
+ def repo_info(**opts)
133
+ OpenStruct.new(**repo_info_hash(**opts))
131
134
  end
132
135
 
133
136
  private
134
137
 
135
- def default_github_user
138
+ def default_github_username
136
139
  KExt::Github.configuration.user
137
140
  end
138
141
 
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDirector
4
+ module Dsls
5
+ module Children
6
+ # PackageJson DSL provides package.json manipulation actions such as.
7
+ class PackageJson < KDirector::Directors::ChildDirector
8
+ # In memory representation of the package.json file that is being created
9
+
10
+ attr_writer :package
11
+
12
+ attr_reader :package_file
13
+ attr_accessor :dependency_type
14
+
15
+ def initialize(parent, **opts)
16
+ super(parent, **opts)
17
+
18
+ set_package_file('package.json')
19
+ set_dependency_type(:development)
20
+
21
+ # defaults = {
22
+ # repo_name: opts[:repo_name], # || parent.builder.dom&[:PackageJson]&[:repo_name]
23
+ # username: opts[:username] || default_PackageJson_username, # || parent.builder.dom&[:PackageJson]&[:username]
24
+ # organization: opts[:organization] # || parent.builder.dom&[:PackageJson]&[:organization]
25
+ # }
26
+
27
+ # parent.builder.group_set(:PackageJson, **repo_info_hash(**defaults))
28
+ end
29
+
30
+ # ----------------------------------------------------------------------
31
+ # Fluent interface
32
+ # ----------------------------------------------------------------------
33
+
34
+ # Change context to production, new dependencies will be for production
35
+ def production
36
+ set_dependency_type(:production)
37
+
38
+ self
39
+ end
40
+
41
+ # Change context to development, new dependencies will be for development
42
+ def development
43
+ set_dependency_type(:development)
44
+
45
+ self
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Attach configuration to the KBuilder module
4
+ module KDirector
5
+ module Dsls
6
+ module Children
7
+ # PackageJson configuration extension for attachment to KConfig::Configuration
8
+ module PackageJsonConfigurationExtension
9
+ def package_json
10
+ return @package_json if defined? @package_json
11
+
12
+ @package_json = PackageJsonConfiguration.new
13
+ @package_json.set_default_package_groups
14
+ @package_json
15
+ end
16
+
17
+ def package_json_debug
18
+ package_json.debug
19
+ end
20
+ end
21
+
22
+ # PackageJson Configuration
23
+ class PackageJsonConfiguration
24
+ include KLog::Logging
25
+
26
+ PackageGroup = Struct.new(:key, :description, :package_names)
27
+
28
+ attr_accessor :package_groups
29
+
30
+ def initialize
31
+ @package_groups = {}
32
+ end
33
+
34
+ def set_package_group(key, description, package_names)
35
+ package_groups[key] = PackageGroup.new(key, description, package_names)
36
+ end
37
+
38
+ # Setup the default package groups
39
+ def set_default_package_groups
40
+ set_package_group('webpack' , 'Webpack V5', %w[webpack webpack-cli webpack-dev-server])
41
+ set_package_group('swc' , 'SWC Transpiler', %w[@swc/cli @swc/core swc-loader])
42
+ set_package_group('babel' , 'Babel Transpiler', %w[@babel/core @babel/cli @babel/preset-env babel-loader])
43
+ set_package_group('typescript' , 'Typescript', %w[typescript ts-loader])
44
+ set_package_group('semantic-release', 'Semantic Release', %w[semantic-release github:klueless-js/semantic-release-rubygem @semantic-release/changelog @semantic-release/git])
45
+ end
46
+
47
+ def debug
48
+ log.structure(package_groups, convert_data_to: :open_struct)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ KConfig::Configuration.register(:package_json, KDirector::Dsls::Children::PackageJsonConfigurationExtension)
@@ -9,26 +9,19 @@ module KDirector
9
9
  end
10
10
 
11
11
  def github(**opts, &block)
12
- github = Dsl::Github.new(self, **opts)
12
+ github = KDirector::Dsls::Children::Github.new(self, **opts)
13
13
  github.instance_eval(&block)
14
14
 
15
15
  self
16
16
  end
17
17
 
18
18
  def blueprint(**opts, &block)
19
- blueprint = Dsl::RubyGemBlueprint.new(self, **opts)
19
+ blueprint = KDirector::Dsls::Children::Blueprint.new(self, **opts)
20
20
  blueprint.instance_eval(&block)
21
21
 
22
22
  self
23
23
  end
24
24
 
25
- # def blueprint(**opts, &block)
26
- # blueprint = Dsl::Blueprint.new(self, **opts)
27
- # blueprint.instance_eval(&block)
28
-
29
- # self
30
- # end
31
-
32
25
  # def app(**opts, &block)
33
26
  # app = Dsl::Nuxt3App.new(self, **opts)
34
27
  # app.instance_eval(&block)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KDirector
4
+ module Dsls
5
+ # RubyGemDsl is a DSL for generating RubyGem projects.
6
+ class RubyGemDsl < KDirector::Directors::BaseDirector
7
+ def default_template_base_folder
8
+ 'ruby/gem'
9
+ end
10
+
11
+ def github(**opts, &block)
12
+ github = KDirector::Dsls::Children::Github.new(self, **opts)
13
+ github.instance_eval(&block) if block_given?
14
+
15
+ self
16
+ end
17
+
18
+ def blueprint(**opts, &block)
19
+ blueprint = KDirector::Dsls::Children::Blueprint.new(self, **opts)
20
+ blueprint.instance_eval(&block) if block_given?
21
+
22
+ self
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDirector
4
- VERSION = '0.7.1'
4
+ VERSION = '0.8.1'
5
5
  end
data/lib/k_director.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'k_config'
3
4
  require 'k_log'
4
5
  require 'k_util'
5
6
  require 'k_builder'
@@ -12,7 +13,10 @@ require_relative 'k_director/directors/child_director'
12
13
  require_relative 'k_director/directors/data'
13
14
  require_relative 'k_director/dsls/children/blueprint'
14
15
  require_relative 'k_director/dsls/children/github'
16
+ require_relative 'k_director/dsls/children/package_json_configuration'
17
+ require_relative 'k_director/dsls/children/package_json'
15
18
  require_relative 'k_director/dsls/nuxt3_dsl'
19
+ require_relative 'k_director/dsls/ruby_gem_dsl'
16
20
 
17
21
  module KDirector
18
22
  # raise KDirector::Error, 'Sample message'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "k_director",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_director",
9
- "version": "0.7.1",
9
+ "version": "0.8.1",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k_director",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "description": "Command line and CI/CD tools for k_director",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_director
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-03 00:00:00.000000000 Z
11
+ date: 2022-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: k_config
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: k_log
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +117,10 @@ files:
103
117
  - lib/k_director/directors/data.rb
104
118
  - lib/k_director/dsls/children/blueprint.rb
105
119
  - lib/k_director/dsls/children/github.rb
120
+ - lib/k_director/dsls/children/package_json.rb
121
+ - lib/k_director/dsls/children/package_json_configuration.rb
106
122
  - lib/k_director/dsls/nuxt3_dsl.rb
123
+ - lib/k_director/dsls/ruby_gem_dsl.rb
107
124
  - lib/k_director/version.rb
108
125
  - package-lock.json
109
126
  - package.json