panda-core 0.1.6 → 0.1.8

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: aab61bd29b4847fa8371514a200ef4fd650ca66ac7b54e47a197d56e8bba571b
4
- data.tar.gz: 054c913b2c4217451e86ec4ec61b6bf01a4cfc6c79b6fac297578dc1134dfcdf
3
+ metadata.gz: b2c133d2c1c626ea1cd368eec9c4caf40b16fdad6ea8799f1f89e827e4ed6764
4
+ data.tar.gz: 0ae407158645445c60944bf02708ca5bed0a5eb4742f055b9b43b7a51642c764
5
5
  SHA512:
6
- metadata.gz: 4e374aff66347fba800ef045144a274c5eaac1ad4f55cf538e949457f96b6c690c7c31c0000a906777e924c3f11c6f5d7f31f2ea340f4d458ce261fb8ccffe03
7
- data.tar.gz: 164670cbfdb6d45e976b4a815b14b6609a8d4e42f81aba799bd5091114066daa708a44400566fa8dc4c07726e19aa61f846c369b418b1457b8dd5ceca9c7c9a8
6
+ metadata.gz: 676f640b0b3a4a62c11029d80176759bfa8f7ad0d2220cde18b420b1b41fe94a4382e88ee8a4e6c9ee1ffbc2460c1f5c69fc048dce60b8c79705808dbfcfdef4
7
+ data.tar.gz: 5d320a56bef9aca7cb61f73f390173eab787793c5381e8c487c584def79fd29bb734c3f3ceb469e852a7fdafeb81aa23de9aa2ae9ca2422a33c1bc9755620b58
data/README.md CHANGED
@@ -113,7 +113,25 @@ bundle exec rspec spec/system
113
113
  4. Push to the branch (`git push origin feature/my-new-feature`)
114
114
  5. Create new Pull Request
115
115
 
116
- Bug reports and pull requests are welcome on GitHub at https://github.com/tastybamboo/panda_core.
116
+ Bug reports and pull requests are welcome on GitHub at https://github.com/tastybamboo/panda-core.
117
+
118
+ ## Releasing
119
+
120
+ For e.g. v0.1.7, first update the version in `lib/panda/core/version.rb`. Then run:
121
+
122
+ ```
123
+ bundle update
124
+ git add .
125
+ git commit -m "v0.1.7"
126
+ git tag -a v0.1.7 -m "v0.1.7"
127
+ git push origin v0.1.7
128
+ ```
129
+
130
+ Then, run the following command to create a new release:
131
+
132
+ ```
133
+ bundle exec rake release
134
+ ```
117
135
 
118
136
  ## License
119
137
 
@@ -0,0 +1,10 @@
1
+ Panda::Core.configure do |config|
2
+ # Configure the user class for the application
3
+ # config.user_class = "User"
4
+
5
+ # Configure the storage provider (default: :active_storage)
6
+ # config.storage_provider = :active_storage
7
+
8
+ # Configure the cache store (default: :memory_store)
9
+ # config.cache_store = :memory_store
10
+ end
@@ -0,0 +1,43 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "Reek" do
4
+ RUBY_FILE_PATTERN = File.expand_path("../../**/*.rb", __dir__)
5
+ EXCLUDED_PATHS = [
6
+ "db/schema.rb",
7
+ "bin/",
8
+ "script/",
9
+ "log/",
10
+ "public/",
11
+ "tmp/",
12
+ "doc/",
13
+ "vendor/",
14
+ "storage/",
15
+ "node_modules/",
16
+ ".git/",
17
+ "spec/dummy/"
18
+ ].freeze
19
+
20
+ it "contains no code smells" do
21
+ failures = []
22
+
23
+ Dir.glob(RUBY_FILE_PATTERN).each do |file|
24
+ next if EXCLUDED_PATHS.any? { |path| file.include?(path) }
25
+
26
+ IO.popen(["bundle", "exec", "reek", file], err: [:child, :out]) do |io|
27
+ output = io.read
28
+ next if output.empty?
29
+
30
+ failures << {file: file, output: output}
31
+ end
32
+ end
33
+
34
+ failures.each do |failure|
35
+ puts "\nCode smells found in #{failure[:file]}:"
36
+ puts failure[:output]
37
+ end
38
+
39
+ failures.each do |failure|
40
+ expect(failure).to be_nil, "Found code smells in #{failure[:file]}"
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,44 @@
1
+ module Panda
2
+ module Core
3
+ class InstallGenerator < Rails::Generators::Base
4
+ include Rails::Generators::Migration
5
+
6
+ source_root File.expand_path("templates", __dir__)
7
+
8
+ namespace "panda:core:install"
9
+
10
+ # Allow incompatible default types for Thor options
11
+ def self.allow_incompatible_default_type!
12
+ true
13
+ end
14
+
15
+ class_option :skip_migrations, type: :boolean, default: false,
16
+ desc: "Skip migrations installation"
17
+ class_option :orm, type: :string, default: "active_record",
18
+ desc: "ORM to be used for migrations"
19
+
20
+ def self.next_migration_number(dirname)
21
+ next_migration_number = current_migration_number(dirname) + 1
22
+ ActiveRecord::Migration.next_migration_number(next_migration_number)
23
+ end
24
+
25
+ def create_initializer
26
+ template "initializer.rb", "config/initializers/panda_core.rb"
27
+ end
28
+
29
+ def mount_engine
30
+ route 'mount Panda::Core::Engine => "/"'
31
+ end
32
+
33
+ def copy_migrations
34
+ return if options[:skip_migrations]
35
+ return unless options[:orm] == "active_record"
36
+
37
+ migrations_path = File.expand_path("../../../../db/migrate", __dir__)
38
+ Dir.glob("#{migrations_path}/*.rb").each do |migration|
39
+ migration_template migration, "db/migrate/#{File.basename(migration)}"
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,10 @@
1
+ Panda::Core.configure do |config|
2
+ # Configure the user class for the application
3
+ # config.user_class = "User"
4
+
5
+ # Configure the storage provider (default: :active_storage)
6
+ # config.storage_provider = :active_storage
7
+
8
+ # Configure the cache store (default: :memory_store)
9
+ # config.cache_store = :memory_store
10
+ end
@@ -0,0 +1,40 @@
1
+ module Panda
2
+ module Core
3
+ class Configuration
4
+ attr_accessor :user_class,
5
+ :storage_provider,
6
+ :cache_store,
7
+ :parent_controller,
8
+ :parent_mailer,
9
+ :mailer_sender,
10
+ :mailer_default_url_options,
11
+ :session_token_cookie
12
+
13
+ def initialize
14
+ @storage_provider = :active_storage
15
+ @cache_store = :memory_store
16
+ @parent_controller = "ActionController::API"
17
+ @parent_mailer = "ActionMailer::Base"
18
+ @mailer_sender = "support@example.com"
19
+ @mailer_default_url_options = {host: "localhost:3000"}
20
+ @session_token_cookie = :session_token
21
+ end
22
+ end
23
+
24
+ class << self
25
+ attr_writer :configuration
26
+
27
+ def configuration
28
+ @configuration ||= Configuration.new
29
+ end
30
+
31
+ def configure
32
+ yield(configuration)
33
+ end
34
+
35
+ def reset_configuration!
36
+ @configuration = Configuration.new
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ require "rails/engine"
2
+
3
+ module Panda
4
+ module Core
5
+ class Engine < ::Rails::Engine
6
+ isolate_namespace Panda::Core
7
+
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ g.fixture_replacement :factory_bot
11
+ g.factory_bot dir: "spec/factories"
12
+ end
13
+
14
+ initializer "panda_core.configuration" do |app|
15
+ config.after_initialize do
16
+ Panda::Core.configure do |config|
17
+ config.parent_controller ||= "ActionController::API"
18
+ config.parent_mailer ||= "ActionMailer::Base"
19
+ config.mailer_sender ||= "support@example.com"
20
+ config.mailer_default_url_options ||= {host: "localhost:3000"}
21
+ config.session_token_cookie ||= :session_token
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ module Panda
2
+ module Core
3
+ module OAuthProviders
4
+ def self.setup
5
+ providers = []
6
+
7
+ begin
8
+ require "omniauth-github"
9
+ providers << :github
10
+ rescue LoadError
11
+ # GitHub OAuth functionality not available
12
+ end
13
+
14
+ begin
15
+ require "omniauth-google-oauth2"
16
+ providers << :google_oauth2
17
+ rescue LoadError
18
+ # Google OAuth functionality not available
19
+ end
20
+
21
+ begin
22
+ require "omniauth-microsoft_graph"
23
+ providers << :microsoft_graph
24
+ rescue LoadError
25
+ # Microsoft OAuth functionality not available
26
+ end
27
+
28
+ providers
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Panda
4
4
  module Core
5
- VERSION = "0.1.6"
5
+ VERSION = "0.1.8"
6
6
  end
7
7
  end
data/lib/panda/core.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "rails"
3
4
  require "dry-configurable"
4
- require_relative "core/version"
5
- require "panda/core/railtie"
6
5
 
7
6
  module Panda
8
7
  module Core
@@ -14,7 +13,10 @@ module Panda
14
13
  setting :cache_store, default: :memory_store
15
14
 
16
15
  def self.root
17
- File.expand_path("..", __dir__)
16
+ File.expand_path("../..", __FILE__)
18
17
  end
19
18
  end
20
19
  end
20
+
21
+ require_relative "core/configuration"
22
+ require_relative "core/engine" if defined?(Rails)