flame_app_generator 0.1.0
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 +7 -0
- data/CHANGELOG.md +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +106 -0
- data/exe/flame_app_generator +7 -0
- data/lib/flame_app_generator/command/process_files/render_variables.rb +36 -0
- data/lib/flame_app_generator/command/process_files.rb +20 -0
- data/lib/flame_app_generator/command.rb +58 -0
- data/lib/flame_app_generator/version.rb +5 -0
- metadata +90 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d84774abfa166f8a221a8af59ec007a4b3edd2398f9498261c855ea3e9656d90
|
4
|
+
data.tar.gz: 504e40670137ef53eac00efc95d49ebf54980a79fda02f828ad01d225470bf8e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f3dc8ab12f7b9d33fabee02e63f5ad2fdd456692b44dd7f71e6cea6ed0ec0ce0338c9116a3e2ac5c7a9070711ec37602a33ac1ce17270ed8084add5dcc8f8971
|
7
|
+
data.tar.gz: 5e442c6b64d76d2706c67ea7c00737238e9f077f416701d5799ec0a24df17de34974844150df2938d5832c516cfa204829d13940a27754aab5326debf1e9a36d
|
data/CHANGELOG.md
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2020 Alexander Popov
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
# Flame App Generator
|
2
|
+
|
3
|
+
[](https://cirrus-ci.com/github/AlexWayfer/flame_app_generator)
|
4
|
+
[](https://codecov.io/gh/AlexWayfer/flame_app_generator)
|
5
|
+
[](https://codeclimate.com/github/AlexWayfer/flame_app_generator)
|
6
|
+
[](https://depfu.com/repos/github/AlexWayfer/flame_app_generator)
|
7
|
+
[](LICENSE.txt)
|
8
|
+
[](https://rubygems.org/gems/flame_app_generator)
|
9
|
+
|
10
|
+
Gem for new [Flame](https://github.com/AlexWayfer/flame) web applications generation.
|
11
|
+
|
12
|
+
It was created for myself, but you can suggest options for generation to adopt it for your usage.
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Install it globally:
|
17
|
+
|
18
|
+
```shell
|
19
|
+
gem install flame_app_generator
|
20
|
+
```
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
### With local template
|
25
|
+
|
26
|
+
```sh
|
27
|
+
flame_app_generator name_of_a_new_app path/to/template
|
28
|
+
```
|
29
|
+
|
30
|
+
### With GitHub template
|
31
|
+
|
32
|
+
```sh
|
33
|
+
flame_app_generator name_of_a_new_app template_github_org/template_github_repo --git
|
34
|
+
```
|
35
|
+
|
36
|
+
Be aware: `flame_app_generator` uses `template/` directory from the GitHub repo, not the root one.
|
37
|
+
|
38
|
+
### With custom project name
|
39
|
+
|
40
|
+
It can be used instead of camelized app name, for example:
|
41
|
+
|
42
|
+
```sh
|
43
|
+
flame_app_generator foobar path/to/template --project-name=FooBar
|
44
|
+
```
|
45
|
+
|
46
|
+
### With custom domain
|
47
|
+
|
48
|
+
It can be used instead of default `.com` domain, for example:
|
49
|
+
|
50
|
+
```sh
|
51
|
+
flame_app_generator foobar path/to/template --domain=foo-bar.dev
|
52
|
+
```
|
53
|
+
|
54
|
+
## Template creation
|
55
|
+
|
56
|
+
Example of gem template you can see at [AlexWayfer/flame_app_template](https://github.com/AlexWayfer/flame_app_template).
|
57
|
+
|
58
|
+
Available paths:
|
59
|
+
|
60
|
+
| Path part | Example of source | Example of result |
|
61
|
+
| ---------- | ----------------- | ----------------- |
|
62
|
+
| `app_name` | `app_name.rb` | `foo_bar.rb` |
|
63
|
+
|
64
|
+
Any `*.erb` file will be rendered via [ERB](https://ruby-doc.org/stdlib/libdoc/erb/rdoc/ERB.html);
|
65
|
+
if you want an `*.erb` file as result — name it as `*.erb.erb` (even if there are no tags).
|
66
|
+
|
67
|
+
Available variables:
|
68
|
+
|
69
|
+
| Variable | Example of result | Default |
|
70
|
+
| ------------------- | ------------------ | ------------------------------- |
|
71
|
+
| `name`, `app_name` | `foo_bar` | _required_ |
|
72
|
+
| `module_name` | `FooBar` | camelized app name |
|
73
|
+
| `short_module_name` | `FB` | upcased chars from module name |
|
74
|
+
| `domain_name` | `foobar.com` | downcased module name + `.com` |
|
75
|
+
| `indentation` | `tabs` or `spaces` | `tabs` (it's easier to convert) |
|
76
|
+
|
77
|
+
By default indentation is `tabs`, but if a template spaces-indented — option will not affect.
|
78
|
+
So, this option only for tabs-indented templates.
|
79
|
+
|
80
|
+
### Git templates
|
81
|
+
|
82
|
+
You can create public git-templates and then guide users to call
|
83
|
+
`flame_app_generator app_name your_org/your_repo --git`,
|
84
|
+
but be aware that `flame_app_generator` will look for template inside `template/` directory
|
85
|
+
to allow you having out-of-template README, specs (for the template itself), anything else.
|
86
|
+
|
87
|
+
## Development
|
88
|
+
|
89
|
+
After checking out the repo, run `bundle install` to install dependencies.
|
90
|
+
|
91
|
+
Then, run `bundle exec rspec` to run the tests.
|
92
|
+
|
93
|
+
To install this gem onto your local machine, run `toys gem install`.
|
94
|
+
|
95
|
+
To release a new version, run `toys gem release %version%`.
|
96
|
+
See how it works [here](https://github.com/AlexWayfer/gem_toys#release).
|
97
|
+
|
98
|
+
## Contributing
|
99
|
+
|
100
|
+
Bug reports and pull requests are welcome
|
101
|
+
on [GitHub](https://github.com/AlexWayfer/flame_app_generator).
|
102
|
+
|
103
|
+
## License
|
104
|
+
|
105
|
+
The gem is available as open source under the terms of the
|
106
|
+
[MIT License](https://opensource.org/licenses/MIT).
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'gorilla_patch/blank'
|
4
|
+
|
5
|
+
## For internal templates usage
|
6
|
+
require 'date'
|
7
|
+
require 'securerandom'
|
8
|
+
|
9
|
+
module FlameAppGenerator
|
10
|
+
class Command < ProjectGenerator::Command
|
11
|
+
module ProcessFiles
|
12
|
+
## Class for a single object which should be a scope in render
|
13
|
+
class RenderVariables < ProjectGenerator::Command::ProcessFiles::RenderVariables
|
14
|
+
using GorillaPatch::Inflections
|
15
|
+
|
16
|
+
attr_reader :module_name, :domain_name
|
17
|
+
|
18
|
+
alias app_name name
|
19
|
+
|
20
|
+
def initialize(name, project_name, domain, indentation)
|
21
|
+
super name, indentation
|
22
|
+
|
23
|
+
@module_name = project_name || app_name.camelize
|
24
|
+
|
25
|
+
@domain_name = domain || "#{@module_name.downcase}.com"
|
26
|
+
end
|
27
|
+
|
28
|
+
undef_method :path
|
29
|
+
|
30
|
+
memoize def short_module_name
|
31
|
+
module_name.split(/([[:upper:]][[:lower:]]*)/).map! { |s| s[0] }.join
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'process_files/render_variables'
|
4
|
+
|
5
|
+
module FlameAppGenerator
|
6
|
+
class Command < ProjectGenerator::Command
|
7
|
+
## Private instance methods for processing template files (copying, renaming, rendering)
|
8
|
+
module ProcessFiles
|
9
|
+
RENAME_FILES_PLACEHOLDERS = {
|
10
|
+
name: 'app_name'
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def initialize_render_variables
|
16
|
+
self.class::RenderVariables.new name, project_name, domain, indentation
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
require 'project_generator'
|
5
|
+
|
6
|
+
require_relative 'command/process_files'
|
7
|
+
|
8
|
+
## https://github.com/mdub/clamp#allowing-options-after-parameters
|
9
|
+
Clamp.allow_options_after_parameters = true
|
10
|
+
|
11
|
+
module FlameAppGenerator
|
12
|
+
## Main CLI command for Flame App Generator
|
13
|
+
class Command < ProjectGenerator::Command
|
14
|
+
include ProcessFiles
|
15
|
+
|
16
|
+
parameter 'NAME', 'name of a new application'
|
17
|
+
parameter 'TEMPLATE', 'template path of a new app'
|
18
|
+
|
19
|
+
option ['-d', '--domain'], 'NAME', 'domain name for configuration'
|
20
|
+
option ['-p', '--project-name'], 'NAME', 'project name for code and configuration'
|
21
|
+
|
22
|
+
def execute
|
23
|
+
check_target_directory
|
24
|
+
|
25
|
+
refine_template_parameter if git?
|
26
|
+
|
27
|
+
process_files
|
28
|
+
|
29
|
+
clean_dirs
|
30
|
+
|
31
|
+
initialize_git
|
32
|
+
|
33
|
+
setup_project
|
34
|
+
|
35
|
+
FileUtils.rm_r @git_tmp_dir if git?
|
36
|
+
|
37
|
+
done
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def clean_dirs
|
43
|
+
puts 'Clean directories...'
|
44
|
+
|
45
|
+
FileUtils.rm Dir.glob('**/.keep', File::FNM_DOTMATCH)
|
46
|
+
end
|
47
|
+
|
48
|
+
def setup_project
|
49
|
+
puts 'Setup project...'
|
50
|
+
|
51
|
+
Dir.chdir name do
|
52
|
+
Bundler.with_unbundled_env do
|
53
|
+
system 'exe/setup.sh'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flame_app_generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexander Popov
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-11-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gorilla_patch
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: project_generator
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.0
|
41
|
+
description: 'Generator for Flame web applications.
|
42
|
+
|
43
|
+
'
|
44
|
+
email:
|
45
|
+
- alex.wayfer@gmail.com
|
46
|
+
executables:
|
47
|
+
- flame_app_generator
|
48
|
+
extensions: []
|
49
|
+
extra_rdoc_files: []
|
50
|
+
files:
|
51
|
+
- CHANGELOG.md
|
52
|
+
- LICENSE.txt
|
53
|
+
- README.md
|
54
|
+
- exe/flame_app_generator
|
55
|
+
- lib/flame_app_generator/command.rb
|
56
|
+
- lib/flame_app_generator/command/process_files.rb
|
57
|
+
- lib/flame_app_generator/command/process_files/render_variables.rb
|
58
|
+
- lib/flame_app_generator/version.rb
|
59
|
+
homepage: https://github.com/AlexWayfer/flame_app_generator
|
60
|
+
licenses:
|
61
|
+
- MIT
|
62
|
+
metadata:
|
63
|
+
rubygems_mfa_required: 'true'
|
64
|
+
bug_tracker_uri: https://github.com/AlexWayfer/flame_app_generator/issues
|
65
|
+
changelog_uri: https://github.com/AlexWayfer/flame_app_generator/blob/v0.1.0/CHANGELOG.md
|
66
|
+
homepage_uri: https://github.com/AlexWayfer/flame_app_generator
|
67
|
+
source_code_uri: https://github.com/AlexWayfer/flame_app_generator
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '3.0'
|
77
|
+
- - "<"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '4'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubygems_version: 3.4.21
|
87
|
+
signing_key:
|
88
|
+
specification_version: 4
|
89
|
+
summary: Generator for Flame web applications
|
90
|
+
test_files: []
|