Module: Graphiti::GeneratorMixin
- Included in:
- ApiTestGenerator, InstallGenerator, ResourceGenerator, ResourceTestGenerator
- Defined in:
- lib/generators/graphiti/generator_mixin.rb
Instance Method Summary collapse
- #actions ⇒ Object
- #actions?(*methods) ⇒ Boolean
- #api_namespace ⇒ Object
- #graphiti_config ⇒ Object
- #id_or_rawid ⇒ Object
- #prompt(header: nil, description: nil, default: nil) ⇒ Object
- #resource_setting_groups ⇒ Object
- #resource_setting_hint(setting) ⇒ Object
- #sort_raw_ids ⇒ Object
- #sort_raw_ids_descending ⇒ Object
- #update_config!(attrs) ⇒ Object
Instance Method Details
#actions ⇒ Object
28 29 30 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 28 def actions @options["actions"] || %w[index show create update destroy] end |
#actions?(*methods) ⇒ Boolean
32 33 34 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 32 def actions?(*methods) methods.any? { |m| actions.include?(m) } end |
#api_namespace ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 12 def api_namespace @api_namespace ||= begin ns = graphiti_config["namespace"] if ns.blank? ns = prompt \ header: "What is your API namespace?", description: "This will be used as a route prefix, e.g. if you want the route '/books_api/v1/authors' your namespace would be '/books_api/v1'", default: "/api/v1" update_config!("namespace" => ns) end ns end end |
#graphiti_config ⇒ Object
60 61 62 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 60 def graphiti_config File.exist?(".graphiticfg.yml") ? YAML.load_file(".graphiticfg.yml") : {} end |
#id_or_rawid ⇒ Object
69 70 71 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 69 def id_or_rawid @options["rawid"] ? "rawid" : "id" end |
#prompt(header: nil, description: nil, default: nil) ⇒ Object
3 4 5 6 7 8 9 10 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 3 def prompt(header: nil, description: nil, default: nil) say(set_color("\n#{header}", :magenta, :bold)) if header say("\n#{description}") if description answer = ask(set_color("\n(default: #{default}):", :magenta, :bold)) answer = default if answer.blank? && default != "nil" say(set_color("\nGot it!\n", :white, :bold)) answer end |
#resource_setting_groups ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 36 def resource_setting_groups name_width = Graphiti::Resource::SETTINGS.keys.map(&:length).max assignments = Graphiti::Resource::SETTINGS.to_h do |name, setting| value = setting[:format] || setting[:default].inspect [name, "self.#{name.to_s.ljust(name_width)} = #{value}"] end hint_column = assignments.values.map(&:length).max + 2 Graphiti::Resource::SETTING_GROUPS.transform_values do |settings| settings.map do |name, setting| hint = resource_setting_hint(setting) hint ? "#{assignments[name].ljust(hint_column)}# #{hint}" : assignments[name] end end end |
#resource_setting_hint(setting) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 52 def resource_setting_hint(setting) return setting[:note] if setting[:note] return unless setting[:values] setting[:values].map(&:inspect) .to_sentence(two_words_connector: " or ", last_word_connector: ", or ") end |
#sort_raw_ids ⇒ Object
73 74 75 76 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 73 def sort_raw_ids return unless @options["rawid"] ".sort" end |
#sort_raw_ids_descending ⇒ Object
78 79 80 81 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 78 def sort_raw_ids_descending return unless @options["rawid"] ".sort.reverse" end |
#update_config!(attrs) ⇒ Object
64 65 66 67 |
# File 'lib/generators/graphiti/generator_mixin.rb', line 64 def update_config!(attrs) config = graphiti_config.merge(attrs) File.write(".graphiticfg.yml", config.to_yaml) end |