Class: Rivulet::CLI::Commands::New

Inherits:
Dry::CLI::Command
  • Object
show all
Defined in:
lib/rivulet/cli/new.rb

Constant Summary collapse

DIRS =
%w[
  app/handlers
  app/handlers/shared
  app/handlers/shared/steps
  app/handlers/shared/utils
  app/services
  app/services/shared
  app/services/shared/steps
  app/services/shared/utils
  app/models
  config
  db/migrations
].freeze

Instance Method Summary collapse

Instance Method Details

#call(name:, with_db: nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rivulet/cli/new.rb', line 25

def call(name:, with_db: nil, **)
  DIRS.each { |d| create_dir "#{name}/#{d}" }

  write name, 'Gemfile',                    gemfile(with_db)
  write name, 'config.ru',                 config_ru
  write name, 'config/application.rb',     application_config(name, with_db)
  write name, 'config/routes.rb',          routes_config
  write name, 'falcon.rb',                   falcon_config
  write name, 'Dockerfile',                  dockerfile(with_db)
  write name, 'docker-compose.yml',          docker_compose(name, with_db)
  write name, 'app/handlers.rb', handlers_container
  write name, 'app/handlers/shared/container.rb', handlers_shared_container
  write name, 'app/handlers/shared/namespace.rb', handlers_shared_namespace
  write name, 'app/services.rb', services_container
  write name, 'app/services/shared/container.rb', services_shared_container
  write name, 'app/services/shared/namespace.rb', services_shared_namespace
  write name, 'app/application_contract.rb', application_contract_template
  copy name, 'AGENTS.md', File.expand_path('../../../docs/AGENTS.md', __dir__)

  puts "\nDone! Next steps:\n  cd #{name}\n  docker compose up"
end