frap 0.0.3 → 0.1.1

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: ef6521f457477ddc6134a27414d21d4b4b5f9b2925e5557c93ebd6f1f6fd03e6
4
- data.tar.gz: 68cfd88891882c2af7de923fb8d7edf170570ef0df2be6b21f027def7758fe77
3
+ metadata.gz: 9c9b0b37bc3db97c0fa4da096081a9172a2a4579eb185ea1b3a3613e2eec9e53
4
+ data.tar.gz: 5c701bc7b28b449fa300f4c3449d07bda9b530983ae2d67637cb3b1891feb8d9
5
5
  SHA512:
6
- metadata.gz: 0fd9d56712b5eed4920c96fbc42e0253ee5ecfdeb161fee387d9bffe5b5aa9c2625acb6a27d6de22dd0526095b34f2e6262f2b3c2543de76e2e8f06af6140c59
7
- data.tar.gz: 53d94d94a6049fe3374d8a4170b17ac7fd5b512e27ea37ef640becbcb36c0d87d1cf4022493050f41e9a0cb297dd090fa944f4e8ac828e2f322c6c414b1d878f
6
+ metadata.gz: 99fcc47f280d953775d23f796ebc76c19196b2c21bdf183860854310f5ff188056e53599bdd4f6c4c239592ebcb5db9a24227c3d7c5500f79adc7b19205beb02
7
+ data.tar.gz: 1407e786731d16af8f5b8d9b2ebb3f9dfcbd182e1b29cfacc4e0d856b2189f766c9433e51b52dac2786dfd9ab067f7aaa02225ad3636f9c5dfdc34023e86321e
data/.gitignore CHANGED
@@ -12,4 +12,7 @@
12
12
 
13
13
  # IDEs
14
14
  .idea
15
- *.gem
15
+
16
+ *.gem
17
+ /test_app/**/*
18
+
@@ -1,12 +1,59 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- frap (0.0.3)
4
+ frap (0.1.1)
5
+ thor (~> 0.20.3)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
10
+ actionpack (5.2.3)
11
+ actionview (= 5.2.3)
12
+ activesupport (= 5.2.3)
13
+ rack (~> 2.0)
14
+ rack-test (>= 0.6.3)
15
+ rails-dom-testing (~> 2.0)
16
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
17
+ actionview (5.2.3)
18
+ activesupport (= 5.2.3)
19
+ builder (~> 3.1)
20
+ erubi (~> 1.4)
21
+ rails-dom-testing (~> 2.0)
22
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
23
+ activesupport (5.2.3)
24
+ concurrent-ruby (~> 1.0, >= 1.0.2)
25
+ i18n (>= 0.7, < 2)
26
+ minitest (~> 5.1)
27
+ tzinfo (~> 1.1)
28
+ builder (3.2.3)
29
+ concurrent-ruby (1.1.5)
30
+ crass (1.0.4)
9
31
  diff-lcs (1.3)
32
+ erubi (1.8.0)
33
+ i18n (1.6.0)
34
+ concurrent-ruby (~> 1.0)
35
+ loofah (2.2.3)
36
+ crass (~> 1.0.2)
37
+ nokogiri (>= 1.5.9)
38
+ method_source (0.9.2)
39
+ mini_portile2 (2.4.0)
40
+ minitest (5.11.3)
41
+ nokogiri (1.10.3)
42
+ mini_portile2 (~> 2.4.0)
43
+ rack (2.0.7)
44
+ rack-test (1.1.0)
45
+ rack (>= 1.0, < 3)
46
+ rails-dom-testing (2.0.3)
47
+ activesupport (>= 4.2.0)
48
+ nokogiri (>= 1.6)
49
+ rails-html-sanitizer (1.0.4)
50
+ loofah (~> 2.2, >= 2.2.2)
51
+ railties (5.2.3)
52
+ actionpack (= 5.2.3)
53
+ activesupport (= 5.2.3)
54
+ method_source
55
+ rake (>= 0.8.7)
56
+ thor (>= 0.19.0, < 2.0)
10
57
  rake (10.5.0)
11
58
  rspec (3.7.0)
12
59
  rspec-core (~> 3.7.0)
@@ -21,6 +68,10 @@ GEM
21
68
  diff-lcs (>= 1.2.0, < 2.0)
22
69
  rspec-support (~> 3.7.0)
23
70
  rspec-support (3.7.1)
71
+ thor (0.20.3)
72
+ thread_safe (0.3.6)
73
+ tzinfo (1.2.5)
74
+ thread_safe (~> 0.1)
24
75
 
25
76
  PLATFORMS
26
77
  ruby
@@ -28,6 +79,7 @@ PLATFORMS
28
79
  DEPENDENCIES
29
80
  bundler (~> 2.0.2)
30
81
  frap!
82
+ railties (~> 5.2.3)
31
83
  rake (~> 10.0)
32
84
  rspec (~> 3.7.0)
33
85
 
data/README.md CHANGED
@@ -1,14 +1,15 @@
1
1
  [![Build Status](https://travis-ci.com/flippakitten/frap.svg?branch=master)](https://travis-ci.com/flippakitten/frap)
2
+ [![Gem Version](https://badge.fury.io/rb/frap.svg)](https://badge.fury.io/rb/frap) [![Join the chat at https://gitter.im/frap-flutter-rails-cli/community](https://badges.gitter.im/frap-flutter-rails-cli/community.svg)](https://gitter.im/frap-flutter-rails-cli/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2
3
  # Frap
3
- CLI interface to quickly prototype Flutter App's using the BLoC pattern with a Rails API server.
4
- **Note:** This is the absolute beginning of the app. **Version 0.1.0 will have the basic app creation**
4
+ CLI interface to quickly prototype Flutter App's using the BLoC pattern with a Rails API server.
5
+
6
+ [changelog](https://github.com/flippakitten/frap/wiki/Change-Log-Published)
7
+ [roadmap](https://github.com/flippakitten/frap/projects/1)
5
8
 
6
9
  ## Prerequisites
7
- While building the CLI, we will be using [slidy](https://pub.dev/packages/slidy) CLI. This will mean initially there will be some limitations, there is a plan to remove the dependancy in later versions.
8
10
 
9
11
  Ensure the following are installed:
10
12
  * [Flutter](https://flutter.dev/docs/get-started/install)
11
- * [Slidy](https://pub.dev/packages/slidy#instalation)
12
13
  * [Ruby 2.6.1](https://rvm.io/rvm/install) (I've used RVM but you can install it anyway)
13
14
  * Rails
14
15
 
data/bin/frap CHANGED
@@ -2,43 +2,4 @@
2
2
  require 'frap'
3
3
  require 'optparse'
4
4
 
5
- options = {}
6
-
7
- opt_parser = OptionParser.new do |opt|
8
- opt.banner = "Usage: frap COMMAND [OPTIONS]"
9
- opt.separator ""
10
- opt.separator "Commands"
11
- opt.separator " new: create a new Flutter and Rails app (requires app name as second argument"
12
- opt.separator " generate: generates a template"
13
- opt.separator ""
14
- opt.separator "Options"
15
-
16
- opt.on("-f","--fields FIELDS","comman separated list of fields with types") do |fields|
17
- options[:fields] = fields
18
- end
19
-
20
- opt.on("-h","--help","help") do
21
- puts opt_parser
22
- end
23
- end
24
-
25
- opt_parser.parse!
26
-
27
- case ARGV[0]
28
- when "new"
29
- unless ARGV[1]
30
- puts "ERROR: Please specify an app path `frap new APP_PATH`"
31
- return
32
- end
33
-
34
- Frap::CreateApp.new(ARGV[1]).build
35
- when 'g'
36
- when "generate"
37
- unless ARGV[1]
38
- puts "ERROR: Please specify a generator function `frap g resource MyResource -f name:string`"
39
- return
40
- end
41
- puts "generate #{ARGV[1]} #{options[:fields]}"
42
- else
43
- puts opt_parser
44
- end
5
+ Frap::CLI.start(ARGV)
@@ -25,14 +25,16 @@ Gem::Specification.new do |spec|
25
25
  # Specify which files should be added to the gem when it is released.
26
26
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
27
27
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
28
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|docs)/}) }
29
29
  end
30
30
  spec.bindir = "bin"
31
31
  spec.executables = ['frap']
32
32
  spec.require_paths = ["lib"]
33
33
  spec.required_ruby_version = '>= 2.6.1'
34
+ spec.add_dependency 'thor', '~> 0.20.3'
34
35
 
35
36
  spec.add_development_dependency "bundler", "~> 2.0.2"
36
37
  spec.add_development_dependency "rake", "~> 10.0"
37
38
  spec.add_development_dependency "rspec", "~> 3.7.0"
39
+ spec.add_development_dependency "railties", "~> 5.2.3"
38
40
  end
@@ -1,5 +1,35 @@
1
1
  require 'frap/version'
2
2
  require 'frap/create_app'
3
+ require 'frap/generators/generate'
4
+ require 'frap/generators/config'
5
+ require 'frap/generators/flutter_config'
6
+ require 'thor'
7
+ require 'yaml'
3
8
 
4
9
  module Frap
10
+ class CLI < Thor
11
+ desc 'version', 'Display MyGem version'
12
+ map %w[-v --version] => :version
13
+ class_option 'verbose', type: :boolean, default: false
14
+
15
+ def version
16
+ say "Frap #{Frap::VERSION}"
17
+ end
18
+
19
+ desc 'new APP_NAME', 'Lower cased underscored app name'
20
+ long_desc <<-LONGDESC
21
+ Using the "app_name", it will create the parent directory and the Rails and Flutter sub directories,
22
+ "app_name_server" and "app_name_ui"
23
+ LONGDESC
24
+ def new(app_name)
25
+ CreateApp.new(app_name).build
26
+ end
27
+
28
+ desc 'generate GENERATOR RESOURCE_NAME', 'Specify the generator and a name'
29
+ long_desc <<-LONGDESC
30
+ Generate all the boiler plate code such as controllers, pages and blocks for Rails and Flutter.
31
+ run `frap g help` to see a list of existing generators
32
+ LONGDESC
33
+ subcommand 'generate', Frap::Generators::Generate
34
+ end
5
35
  end
@@ -1,3 +1,6 @@
1
+ require 'thor'
2
+ require 'frap/generators/config'
3
+
1
4
  module Frap
2
5
  class CreateApp
3
6
  attr_accessor :name
@@ -7,44 +10,82 @@ module Frap
7
10
  end
8
11
 
9
12
  def build
10
- create_parent_app
13
+ setup_parent_directory
11
14
  create_rails_api_server
12
15
  create_flutter_app
13
- setup_bloc_patter
16
+ setup_bloc_pattern
14
17
  show_completed_notes
15
18
  end
16
19
 
17
20
  private
18
21
 
19
- def create_parent_app
20
- puts "1 ================ Create Parent Directory #{name}"
22
+ def setup_parent_directory
23
+ shell.say(shell_text("Create Parent Directory #{name}"), :green)
24
+
25
+ Frap::Generators::Config.new(
26
+ [name],
27
+ options: {
28
+ destination_root: Dir.pwd
29
+ }
30
+ ).invoke(:configure_directories)
21
31
 
22
- system("mkdir #{name}")
23
- Dir.chdir(name)
32
+ Dir.chdir(working_dir)
24
33
  end
25
34
 
26
35
  def create_rails_api_server
27
- puts "2 ================ Rails new #{name}_server --api"
36
+ shell.say(shell_text("Rails new #{server_name} --api -T"), :green)
28
37
 
29
- system("rails new #{name}_server --api -T")
38
+ Kernel.system("rails new #{server_name} --api -T")
30
39
  end
31
40
 
32
41
  def create_flutter_app
33
- puts "3 ================ Flutter create app #{name}_ui"
34
- system("flutter create #{name}_ui")
42
+ shell.say(shell_text("Flutter create app #{ui_name}"), :green)
43
+
44
+ Kernel.system("flutter create #{ui_name}")
35
45
  end
36
46
 
37
- def setup_bloc_patter
38
- puts '4 ================ Setup BLoC pattern using Slidy'
39
- Dir.chdir("#{name}_ui")
40
- system('rm -rf lib/')
41
- system('mkdir lib')
42
- system('slidy start')
47
+ def setup_bloc_pattern
48
+ shell.say(shell_text('Setup BLoC pattern'), :green)
49
+
50
+ Frap::Generators::FlutterConfig.new(
51
+ [name, ui_name],
52
+ options: {
53
+ destination_root: Dir.pwd
54
+ }
55
+ ).invoke(:configure_directories)
56
+
57
+ Dir.chdir("#{working_dir}/#{ui_name}")
58
+ Kernel.system('git init && flutter pub get')
59
+ Dir.chdir(working_dir)
43
60
  end
44
61
 
45
62
  def show_completed_notes
46
- puts '================================= '
47
- puts 'TODO: Install your favourite Rails Testing library'
63
+ shell.say(shell_text('DONE'), :green)
64
+ shell.say('TODO: Install your favourite Rails Testing library', :yellow)
65
+ end
66
+
67
+ def server_name
68
+ "#{name}_server"
69
+ end
70
+
71
+ def ui_name
72
+ "#{name}_ui"
73
+ end
74
+
75
+ def working_dir
76
+ @working_dir ||= "#{Dir.pwd}/#{name}"
77
+ end
78
+
79
+ def shell
80
+ @shell ||= Thor::Shell::Color.new
81
+ end
82
+
83
+ def shell_text(text)
84
+ "#{spacer} #{text} #{spacer}"
85
+ end
86
+
87
+ def spacer
88
+ '================'
48
89
  end
49
90
  end
50
91
  end
@@ -0,0 +1,30 @@
1
+ require 'thor'
2
+ require 'thor/group'
3
+
4
+ module Frap
5
+ module Generators
6
+ class Config < Thor::Group
7
+ include Thor::Actions
8
+
9
+ desc 'Generate a config file'
10
+ argument :name
11
+
12
+ def self.source_root
13
+ File.dirname(__FILE__) + '/templates'
14
+ end
15
+
16
+ def configure_directories
17
+ invoke :create_app_dir
18
+ end
19
+
20
+ def create_app_dir
21
+ empty_directory(name)
22
+ invoke :create_config_file
23
+ end
24
+
25
+ def create_config_file
26
+ template('config.erb', "#{name}/config.yml")
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,61 @@
1
+
2
+ require 'thor'
3
+ require 'thor/group'
4
+
5
+ module Frap
6
+ module Generators
7
+ class FlutterConfig < Thor::Group
8
+ include Thor::Actions
9
+
10
+ desc 'Generate Flutter Config files'
11
+ argument :name
12
+ argument :folder_name
13
+
14
+ def self.source_root
15
+ File.dirname(__FILE__) + '/templates/dart'
16
+ end
17
+
18
+ def configure_directories
19
+ inject_into_file("#{working_directory}/pubspec.yaml", pub_files, after: /^dependencies:.*$/)
20
+ remove_file("#{lib_directory}/main.dart")
21
+ invoke :create_directories
22
+ end
23
+
24
+ def create_directories
25
+ empty_directory("#{lib_directory}/src/home")
26
+ invoke :create_files
27
+ end
28
+
29
+ def create_files
30
+ template('main.dart.erb', "#{lib_directory}/main.dart")
31
+ template('src/app_bloc.dart.erb', "#{src_directory}/app_bloc.dart")
32
+ template('src/app_module.dart.erb', "#{src_directory}/app_module.dart")
33
+ template('src/app_widget.dart.erb', "#{src_directory}/app_widget.dart")
34
+ template('src/home/home_bloc.dart.erb', "#{src_directory}/home/home_bloc.dart")
35
+ template('src/home/home_module.dart.erb', "#{src_directory}/home/home_module.dart")
36
+ template('src/home/home_page.dart.erb', "#{src_directory}/home/home_page.dart")
37
+ end
38
+
39
+ private
40
+
41
+ def working_directory
42
+ "#{destination_root}/#{folder_name}"
43
+ end
44
+
45
+ def lib_directory
46
+ "#{working_directory}/lib"
47
+ end
48
+
49
+ def src_directory
50
+ "#{lib_directory}/src"
51
+ end
52
+
53
+ def pub_files
54
+ %Q(
55
+ dio: ^2.1.13
56
+ rxdart: ^0.22.0
57
+ bloc_pattern: ^2.2.3)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,17 @@
1
+ require 'thor'
2
+ require 'frap/generators/resource'
3
+
4
+ module Frap
5
+ module Generators
6
+ class Generate < Thor
7
+ desc 'resource NAME', 'generate a resource'
8
+ method_option :rails, type: :boolean, aliases: :r, default: true
9
+ method_option :flutter, type: :boolean, aliases: :f, default: true
10
+ method_option :attributes, type: :hash, aliases: :a
11
+
12
+ def resource(name)
13
+ Frap::Generators::Resource.new(name, options).create_resource
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,42 @@
1
+ require 'thor'
2
+
3
+ module Frap
4
+ module Generators
5
+ class Resource
6
+ attr_accessor :name, :attributes, :options
7
+
8
+ def initialize(name, options)
9
+ @name = name
10
+ @options = options
11
+ end
12
+
13
+ def create_resource
14
+ generate_rails_resource if options['rails']
15
+ generate_flutter_resource if options['flutter']
16
+ end
17
+
18
+ private
19
+
20
+ def generate_rails_resource
21
+
22
+
23
+ puts "TODO: rails g resource #{fields}"
24
+ end
25
+
26
+ def generate_flutter_resource
27
+ puts "TODO: frap g flutter resource #{fields}"
28
+ end
29
+
30
+ def fields
31
+ @fields ||= build_fields
32
+ end
33
+
34
+ def build_fields
35
+ fields_string = ''
36
+ options[:attributes].each { |k, v| fields_string << "#{k}:#{v} " }
37
+
38
+ return fields_string
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ app_name: <%= name %>
2
+ rails_app: <%= "#{name}_server" %>
3
+ flutter_app: <%= "#{name}_ui" %>
@@ -0,0 +1,4 @@
1
+ import 'package:flutter/material.dart';
2
+ import 'package:<%= folder_name %>/src/app_module.dart';
3
+
4
+ void main() => runApp(AppModule());
@@ -0,0 +1,9 @@
1
+ import 'package:bloc_pattern/bloc_pattern.dart';
2
+
3
+ class AppBloc extends BlocBase {
4
+ //dispose will be called automatically by closing its streams
5
+ @override
6
+ void dispose() {
7
+ super.dispose();
8
+ }
9
+ }
@@ -0,0 +1,19 @@
1
+ import 'package:bloc_pattern/bloc_pattern.dart';
2
+ import 'package:flutter/material.dart';
3
+ import 'package:<%= folder_name %>/src/app_widget.dart';
4
+ import 'package:<%= folder_name %>/src/app_bloc.dart';
5
+
6
+ class AppModule extends ModuleWidget {
7
+ @override
8
+ List<Bloc> get blocs => [
9
+ Bloc((i) => AppBloc()),
10
+ ];
11
+
12
+ @override
13
+ List<Dependency> get dependencies => [];
14
+
15
+ @override
16
+ Widget get view => AppWidget();
17
+
18
+ static Inject get to => Inject<AppModule>.of();
19
+ }
@@ -0,0 +1,15 @@
1
+ import 'package:flutter/material.dart';
2
+ import 'package:<%= folder_name %>/src/home/home_module.dart';
3
+
4
+ class AppWidget extends StatelessWidget {
5
+ @override
6
+ Widget build(BuildContext context) {
7
+ return MaterialApp(
8
+ title: '<%= name.split(/ |\_|\-/).map(&:capitalize).join(' ') %> App',
9
+ theme: ThemeData(
10
+ primarySwatch: Colors.blue,
11
+ ),
12
+ home: HomeModule(),
13
+ );
14
+ }
15
+ }
@@ -0,0 +1,9 @@
1
+ import 'package:bloc_pattern/bloc_pattern.dart';
2
+
3
+ class HomeBloc extends BlocBase {
4
+ //dispose will be called automatically by closing its streams
5
+ @override
6
+ void dispose() {
7
+ super.dispose();
8
+ }
9
+ }
@@ -0,0 +1,19 @@
1
+ import 'package:<%= folder_name %>/src/home/home_bloc.dart';
2
+ import 'package:bloc_pattern/bloc_pattern.dart';
3
+ import 'package:flutter/material.dart';
4
+ import 'package:<%= folder_name %>/src/home/home_page.dart';
5
+
6
+ class HomeModule extends ModuleWidget {
7
+ @override
8
+ List<Bloc> get blocs => [
9
+ Bloc((i) => HomeBloc()),
10
+ ];
11
+
12
+ @override
13
+ List<Dependency> get dependencies => [];
14
+
15
+ @override
16
+ Widget get view => HomePage();
17
+
18
+ static Inject get to => Inject<HomeModule>.of();
19
+ }
@@ -0,0 +1,20 @@
1
+ import 'package:flutter/material.dart';
2
+
3
+ class HomePage extends StatefulWidget {
4
+ @override
5
+ _HomePageState createState() => _HomePageState();
6
+ }
7
+
8
+ class _HomePageState extends State<HomePage> {
9
+ @override
10
+ Widget build(BuildContext context) {
11
+ return Scaffold(
12
+ appBar: AppBar(
13
+ title: Text("Home"),
14
+ ),
15
+ body: Center(
16
+ child: Text('<%= folder_name %> Home'),
17
+ ),
18
+ );
19
+ }
20
+ }
@@ -1,3 +1,3 @@
1
1
  module Frap
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Gascoigne - Taylor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-18 00:00:00.000000000 Z
11
+ date: 2019-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.20.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.20.3
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: 3.7.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: railties
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 5.2.3
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 5.2.3
55
83
  description: CLI to create a Flutter App backed with a Rails server for quick app
56
84
  protoyping
57
85
  email:
@@ -77,6 +105,18 @@ files:
77
105
  - frap.gemspec
78
106
  - lib/frap.rb
79
107
  - lib/frap/create_app.rb
108
+ - lib/frap/generators/config.rb
109
+ - lib/frap/generators/flutter_config.rb
110
+ - lib/frap/generators/generate.rb
111
+ - lib/frap/generators/resource.rb
112
+ - lib/frap/generators/templates/config.erb
113
+ - lib/frap/generators/templates/dart/main.dart.erb
114
+ - lib/frap/generators/templates/dart/src/app_bloc.dart.erb
115
+ - lib/frap/generators/templates/dart/src/app_module.dart.erb
116
+ - lib/frap/generators/templates/dart/src/app_widget.dart.erb
117
+ - lib/frap/generators/templates/dart/src/home/home_bloc.dart.erb
118
+ - lib/frap/generators/templates/dart/src/home/home_module.dart.erb
119
+ - lib/frap/generators/templates/dart/src/home/home_page.dart.erb
80
120
  - lib/frap/version.rb
81
121
  homepage: https://github.com/flippakitten/frap
82
122
  licenses: