mobile_workflow 0.6.8 → 0.6.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.
- checksums.yaml +4 -4
- data/app/models/concerns/mobile_workflow/displayable.rb +14 -3
- data/lib/generators/mobile_workflow/controller_generator.rb +3 -2
- data/lib/generators/mobile_workflow/install/install_generator.rb +19 -1
- data/lib/generators/mobile_workflow/install/templates/Gemfile.erb +1 -0
- data/{db/migrate/20200823174210_create_users.rb → lib/generators/mobile_workflow/install/templates/create_users.rb} +0 -0
- data/lib/generators/mobile_workflow/install/templates/lib/tasks/mobile_workflow_doorkeeper.rake +5 -0
- data/lib/generators/mobile_workflow/install/templates/spec/factories/users.rb +6 -0
- data/lib/generators/mobile_workflow/templates/controller.rb.erb +2 -2
- data/lib/generators/mobile_workflow/templates/controller_spec.rb.erb +1 -1
- data/lib/mobile_workflow/cli/app_builder.rb +28 -6
- data/lib/mobile_workflow/cli/app_server_generator.rb +4 -30
- data/lib/mobile_workflow/cli/aws_backend.rb +1 -1
- data/lib/mobile_workflow/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9e697a2d4bc53ea4b9a231248f9d32c21199d030a75826e0c006055e9828ed
|
4
|
+
data.tar.gz: 7658139e3a461174483e4adde83327da338b73a84ef4e9e6f9423903b8e3b2d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c5ca58a42c0634029ce8d7b43e04b1383c930d673ca6c2418911767227bc4ae2bebaab3afed5bc3981085ede273ab242253c7be2560eef92df71533fb88bd8c
|
7
|
+
data.tar.gz: '018017ea7b7d4baeb4372c0159267bb632fc33a14eeb9c67d0de117f27372cebb8df8e09f9f90604fdea5842093a93966a1e3f24a4102c40e0aa65638e7f4ecd'
|
@@ -4,12 +4,16 @@ module MobileWorkflow
|
|
4
4
|
include Rails.application.routes.url_helpers
|
5
5
|
|
6
6
|
ON_SUCCESS_OPTIONS = [:none, :reload, :backward, :forward]
|
7
|
-
BUTTON_STYLES = [:primary, :outline, :danger]
|
8
|
-
|
7
|
+
BUTTON_STYLES = [:primary, :outline, :danger]
|
8
|
+
|
9
9
|
def mw_list_item(id: self.id, text:, detail_text: nil, sf_symbol_name: nil, image_attachment: nil)
|
10
10
|
mw_list_item = {id: id, text: text, detailText: detail_text, sfSymbolName: sf_symbol_name}
|
11
11
|
mw_list_item[:imageURL] = preview_url(image_attachment, options: { resize_to_fill: [100, 100] }) if image_attachment
|
12
|
-
mw_list_item.compact
|
12
|
+
mw_list_item.compact
|
13
|
+
end
|
14
|
+
|
15
|
+
def mw_map_item(id: self.id, text:, detail_text: nil, latitude:, longitude:)
|
16
|
+
{id: id, text: text, detailText: detail_text, latitude: latitude, longitude: longitude}.compact
|
13
17
|
end
|
14
18
|
|
15
19
|
def mw_display_text(text:, label: nil)
|
@@ -54,6 +58,13 @@ module MobileWorkflow
|
|
54
58
|
{type: :button, label: label, url: url, method: method, style: style, onSuccess: on_success}
|
55
59
|
end
|
56
60
|
|
61
|
+
def mw_display_button_for_system_url(label:, apple_system_url:, android_system_url:, method: :put, style: :primary, on_success: :none)
|
62
|
+
validate_on_success!(on_success)
|
63
|
+
validate_button_style!(style)
|
64
|
+
|
65
|
+
{type: :button, label: label, appleSystemURL: apple_system_url, androidSystemURL: android_system_url, method: method, style: style, onSuccess: on_success}
|
66
|
+
end
|
67
|
+
|
57
68
|
def mw_display_button_for_modal_workflow(label:, modal_workflow_name:, style: :primary, on_success: :none)
|
58
69
|
validate_on_success!(on_success)
|
59
70
|
validate_button_style!(style)
|
@@ -30,8 +30,9 @@ module MobileWorkflow
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def permitted_params
|
33
|
-
|
34
|
-
|
33
|
+
permitted_attributes = attributes_names.dup
|
34
|
+
permitted_attributes.delete('user')
|
35
|
+
permitted_attributes.map{ |name| ":#{name}" }.join(", ")
|
35
36
|
end
|
36
37
|
|
37
38
|
def index_action?
|
@@ -1,9 +1,13 @@
|
|
1
1
|
require "rails/generators/base"
|
2
|
+
require "rails/generators/active_model"
|
3
|
+
require "rails/generators/active_record/migration"
|
4
|
+
require "active_record"
|
2
5
|
require "mobile_workflow/open_api_spec/parser"
|
3
6
|
|
4
7
|
module MobileWorkflow
|
5
8
|
module Generators
|
6
9
|
class InstallGenerator < Rails::Generators::Base
|
10
|
+
include ActiveRecord::Generators::Migration
|
7
11
|
|
8
12
|
source_root File.expand_path("../templates", __FILE__)
|
9
13
|
|
@@ -20,10 +24,16 @@ module MobileWorkflow
|
|
20
24
|
route "mount MobileWorkflow::Engine => '/'"
|
21
25
|
end
|
22
26
|
|
27
|
+
def copy_rake_tasks
|
28
|
+
copy_file("lib/tasks/mobile_workflow_doorkeeper.rake") if options[:doorkeeper_oauth]
|
29
|
+
end
|
30
|
+
|
23
31
|
def generate_doorkeeper
|
24
32
|
return unless options[:doorkeeper_oauth]
|
25
33
|
say "Generating Doorkeeper OAuth"
|
26
34
|
|
35
|
+
migration_template "create_users.rb", "db/migrate/create_users.rb"
|
36
|
+
|
27
37
|
generate 'doorkeeper:install'
|
28
38
|
gsub_file 'config/initializers/doorkeeper.rb', 'raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"', 'User.find_by_id(session[:user_id]) || redirect_to(new_session_url(return_to: request.fullpath))'
|
29
39
|
generate 'doorkeeper:migration'
|
@@ -36,6 +46,7 @@ module MobileWorkflow
|
|
36
46
|
copy_file("app/views/layouts/application.html.erb")
|
37
47
|
copy_file("app/views/sessions/new.html.erb")
|
38
48
|
copy_file("app/helpers/application_helper.rb")
|
49
|
+
copy_file("spec/factories/users.rb")
|
39
50
|
end
|
40
51
|
|
41
52
|
def generate_models
|
@@ -73,7 +84,7 @@ module MobileWorkflow
|
|
73
84
|
generate_model(controller_name, model_properties)
|
74
85
|
end
|
75
86
|
|
76
|
-
generate "mobile_workflow:controller #{controller_name} --actions #{actions.join(" ")} --attributes #{model_properties} #{
|
87
|
+
generate "mobile_workflow:controller #{controller_name} --actions #{actions.join(" ")} --attributes #{model_properties} #{generate_controller_args}".strip
|
77
88
|
route "resources :#{plural_controller_name}, only: [#{actions.map{|a| ":#{a}"}.join(", ")}]"
|
78
89
|
end
|
79
90
|
end
|
@@ -88,6 +99,13 @@ module MobileWorkflow
|
|
88
99
|
generate("mobile_workflow:model #{model_name} #{model_properties}")
|
89
100
|
end
|
90
101
|
|
102
|
+
def generate_controller_args
|
103
|
+
args = ''
|
104
|
+
args += ' --s3-storage' if s3_storage?
|
105
|
+
args += ' --doorkeeper-oauth' if doorkeeper_oauth?
|
106
|
+
args.strip
|
107
|
+
end
|
108
|
+
|
91
109
|
def model_name_to_properties
|
92
110
|
@model_name_to_properties ||= open_api_spec.model_name_to_properties
|
93
111
|
end
|
File without changes
|
@@ -20,7 +20,7 @@ class <%= controller_class_name %>Controller < ApiController
|
|
20
20
|
<% if create_action? -%>
|
21
21
|
def create
|
22
22
|
<% if doorkeeper_oauth? -%>
|
23
|
-
@<%= singular_table_name
|
23
|
+
@<%= singular_table_name %>.user = current_user
|
24
24
|
<% end -%>
|
25
25
|
if @<%= singular_table_name %>.save
|
26
26
|
<% if s3_storage? -%>
|
@@ -29,7 +29,7 @@ class <%= controller_class_name %>Controller < ApiController
|
|
29
29
|
render json: { response: @<%= singular_table_name %> }, status: :created
|
30
30
|
<% end -%>
|
31
31
|
else
|
32
|
-
|
32
|
+
render json: { message: @<%= singular_table_name %>.errors.full_messages.to_sentence }, status: :unprocessable_entity
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -8,7 +8,7 @@ RSpec.describe <%= controller_class_name %>Controller do
|
|
8
8
|
let(:json_response) { JSON.parse(response.body, symbolize_names: true) }
|
9
9
|
<% if doorkeeper_oauth? -%>
|
10
10
|
let(:user) { create(:user) }
|
11
|
-
let(:token) { instance_double(
|
11
|
+
let(:token) { instance_double(Doorkeeper::AccessToken, accessible?: true, acceptable?: true, resource_owner_id: user.id) }
|
12
12
|
<% end -%>
|
13
13
|
|
14
14
|
<% if index_action? -%>
|
@@ -18,13 +18,19 @@ module MobileWorkflow::Cli
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def factory_bot
|
21
|
-
inject_into_file 'spec/rails_helper.rb',
|
22
|
-
"
|
21
|
+
inject_into_file 'spec/rails_helper.rb', after: "RSpec.configure do |config|\n" do
|
22
|
+
"\tconfig.include FactoryBot::Syntax::Methods\n"
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
def migrate_db
|
27
|
+
rails_command("db:drop")
|
28
|
+
rails_command("db:create")
|
29
|
+
rails_command("db:migrate")
|
30
|
+
end
|
25
31
|
|
26
32
|
def administrate_generator
|
27
|
-
|
33
|
+
generate 'administrate:install'
|
28
34
|
|
29
35
|
file 'app/assets/config/manifest.js', <<-CODE
|
30
36
|
//= link administrate/application.css
|
@@ -39,7 +45,7 @@ module Admin
|
|
39
45
|
end
|
40
46
|
CODE
|
41
47
|
|
42
|
-
|
48
|
+
generate 'administrate:routes'
|
43
49
|
end
|
44
50
|
|
45
51
|
def ability_generator
|
@@ -57,9 +63,25 @@ CODE
|
|
57
63
|
gen_opts = ""
|
58
64
|
gen_opts += "--doorkeeper_oauth" if options[:doorkeeper_oauth]
|
59
65
|
generate "mobile_workflow:install #{gen_opts}"
|
66
|
+
end
|
67
|
+
|
68
|
+
def format_source
|
69
|
+
`rufo .`
|
70
|
+
end
|
71
|
+
|
72
|
+
def generate_dot_env
|
73
|
+
admin_user = 'admin'
|
74
|
+
admin_password = SecureRandom.base64(12)
|
60
75
|
|
61
|
-
|
62
|
-
|
76
|
+
file '.env', <<-CODE
|
77
|
+
ADMIN_USER=#{admin_user}
|
78
|
+
ADMIN_PASSWORD=#{admin_password}
|
79
|
+
CODE
|
80
|
+
end
|
81
|
+
|
82
|
+
def git_commit(message = 'Initial commit')
|
83
|
+
git add: "."
|
84
|
+
git commit: %Q{ -m '#{message}'}
|
63
85
|
end
|
64
86
|
|
65
87
|
def s3_backend(region)
|
@@ -37,12 +37,11 @@ module MobileWorkflow::Cli
|
|
37
37
|
build :ability_generator
|
38
38
|
build :active_storage if options[:s3_storage]
|
39
39
|
build :mobile_workflow_generator, ARGV[1]
|
40
|
-
|
40
|
+
build :migrate_db
|
41
41
|
build :administrate_generator
|
42
|
-
|
43
|
-
generate_dot_env
|
44
|
-
|
45
|
-
|
42
|
+
build :format_source
|
43
|
+
build :generate_dot_env
|
44
|
+
build :git_commit
|
46
45
|
build :heroku if options[:heroku]
|
47
46
|
build :dokku, options[:dokku_host] if options[:dokku]
|
48
47
|
build :s3_backend, options[:aws_region] if options[:s3_storage]
|
@@ -55,30 +54,5 @@ module MobileWorkflow::Cli
|
|
55
54
|
::MobileWorkflow::Cli::AppBuilder
|
56
55
|
end
|
57
56
|
|
58
|
-
# Todo: MBS - move these methods to the builder class
|
59
|
-
# Ideally override RailsBuilder methods
|
60
|
-
private
|
61
|
-
def setup_db
|
62
|
-
Bundler.with_unbundled_env do
|
63
|
-
rails_command("db:drop")
|
64
|
-
rails_command("db:create")
|
65
|
-
rails_command("db:migrate")
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def initial_git_commit
|
70
|
-
git add: "."
|
71
|
-
git commit: %Q{ -m 'Initial commit' }
|
72
|
-
end
|
73
|
-
|
74
|
-
def generate_dot_env
|
75
|
-
admin_user = 'admin'
|
76
|
-
admin_password = SecureRandom.base64(12)
|
77
|
-
|
78
|
-
file '.env', <<-CODE
|
79
|
-
ADMIN_USER=#{admin_user}
|
80
|
-
ADMIN_PASSWORD=#{admin_password}
|
81
|
-
CODE
|
82
|
-
end
|
83
57
|
end
|
84
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobile_workflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Brooke-Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02
|
11
|
+
date: 2021-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -103,7 +103,6 @@ files:
|
|
103
103
|
- app/views/layouts/mobile_workflow/application.html.erb
|
104
104
|
- bin/mwf
|
105
105
|
- config/routes.rb
|
106
|
-
- db/migrate/20200823174210_create_users.rb
|
107
106
|
- lib/generators/mobile_workflow/controller_generator.rb
|
108
107
|
- lib/generators/mobile_workflow/install/install_generator.rb
|
109
108
|
- lib/generators/mobile_workflow/install/templates/Gemfile.erb
|
@@ -115,8 +114,11 @@ files:
|
|
115
114
|
- lib/generators/mobile_workflow/install/templates/app/helpers/application_helper.rb
|
116
115
|
- lib/generators/mobile_workflow/install/templates/app/views/layouts/application.html.erb
|
117
116
|
- lib/generators/mobile_workflow/install/templates/app/views/sessions/new.html.erb
|
117
|
+
- lib/generators/mobile_workflow/install/templates/create_users.rb
|
118
|
+
- lib/generators/mobile_workflow/install/templates/lib/tasks/mobile_workflow_doorkeeper.rake
|
118
119
|
- lib/generators/mobile_workflow/install/templates/seeds.rb.erb
|
119
120
|
- lib/generators/mobile_workflow/install/templates/sessions_controller.rb.erb
|
121
|
+
- lib/generators/mobile_workflow/install/templates/spec/factories/users.rb
|
120
122
|
- lib/generators/mobile_workflow/install/templates/storage.s3.yml
|
121
123
|
- lib/generators/mobile_workflow/install/templates/user.rb.erb
|
122
124
|
- lib/generators/mobile_workflow/model_generator.rb
|