Sha256: 250d56985fa5e9d155e6d35dca79a7f6e521a128d8a392064d0e2c9c09556662

Contents?: true

Size: 1.41 KB

Versions: 22

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require 'active_support/core_ext/string/inflections'

module GoNative
  module Plugins
    module IOS
      class Create
        autoload :FileUtils, 'fileutils'

        extend DSL::Serviceable

        TEMPLATE_DIRECTORY_PATH = File.expand_path(File.join(__dir__, '../../../..', 'templates', 'plugins', 'ios'))
        COMMON_TEMPLATES_PATH = File.join(TEMPLATE_DIRECTORY_PATH, 'common')

        LANGUAGES = %w[objc swift].freeze

        attr_reader :plugin_name, :language

        def initialize(plugin_name, language)
          @plugin_name = plugin_name
          @language = language
        end

        def call
          assert_not_exists!
          set_working_dir!
          cp_template_files!
          Utils::TemplateInflator.new(plugin_name: plugin_name, repo_name: repo_name).call
        end

        def assert_not_exists!
          return unless File.directory?(plugin_name)

          raise Error, "Directory #{plugin_name} already exists"
        end

        def set_working_dir!
          FileUtils.mkdir(plugin_name)
          FileUtils.cd(plugin_name)
        end

        def cp_template_files!
          FileUtils.cp_r("#{COMMON_TEMPLATES_PATH}/.", '.')
          system('ditto', File.join(TEMPLATE_DIRECTORY_PATH, 'language-specific', language), '.')
        end

        def repo_name
          plugin_name.underscore.dasherize.prepend 'ios-'
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
gonative-cli-1.4.6 lib/gonative/plugins/ios/create.rb
gonative-cli-1.4.5 lib/gonative/plugins/ios/create.rb
gonative-cli-1.4.4 lib/gonative/plugins/ios/create.rb
gonative-cli-1.4.3 lib/gonative/plugins/ios/create.rb
gonative-cli-1.4.2 lib/gonative/plugins/ios/create.rb
gonative-cli-1.4.1 lib/gonative/plugins/ios/create.rb
gonative-cli-1.4.0 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.9 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.8 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.7 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.6 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.5 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.4 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.3 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.2 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.1 lib/gonative/plugins/ios/create.rb
gonative-cli-1.3.0 lib/gonative/plugins/ios/create.rb
gonative-cli-1.2.4 lib/gonative/plugins/ios/create.rb
gonative-cli-1.2.3 lib/gonative/plugins/ios/create.rb
gonative-cli-1.2.2 lib/gonative/plugins/ios/create.rb