Sha256: eab72a7dbb65bc667fbb708ed0df9587cbc1475ef535e91d9d2b402bd407a5ed

Contents?: true

Size: 1.93 KB

Versions: 13

Compression:

Stored size: 1.93 KB

Contents

require 'singleton'

require 'singleton'
require 'json'

class SolaraSettingsManager
    include Singleton

    attr_accessor :root, :project_root, :environment

    def initialize
        @environment = SolaraEnvironment::Production
    end

    def platform
        settings['platform']
    end

    def platform=(new_platform)
        json = settings
        json['platform'] = new_platform
        save(json)
    end

    def value(key)
        settings[key]
    end

    def add(key, value)
        json = settings
        json[key] = value
        save(json)
    end

    def is_test_environment
        @environment === 'test'
    end

    private

    def settings
        path = FilePath.solara_settings
        FileManager.create_file_if_not_exist(path)
        JSON.parse(File.read(path))
    rescue JSON::ParserError => e
        {}
    end

    def save(json)
        File.write(FilePath.solara_settings, JSON.pretty_generate(json))
    end
end

module Platform
    Flutter = 'flutter'
    Android = 'android'
    IOS = 'ios'
    Unknown = 'unknown'

    def self.all
        [Flutter, Android, IOS]
    end

    def self.is_ios
        SolaraSettingsManager.instance.platform.downcase == IOS.downcase
    end

    def self.is_android
        SolaraSettingsManager.instance.platform.downcase == Android.downcase
    end

    def self.is_flutter
        SolaraSettingsManager.instance.platform.downcase == Flutter.downcase
    end
end

def init(platform)
    unless Platform.all.include?(platform)
        raise ArgumentError, "Invalid platform. Please use one of: #{Platform.all.join(', ')}"
    end
end

module SolaraEnvironment
    Production = 'production'
    Test = 'test'

    def self.all
        [Production, Test]
    end

    def self.is_production
        SolaraSettingsManager.instance.environment.downcase == Production.downcase
    end

    def self.is_test
        SolaraSettingsManager.instance.environment.downcase == Test.downcase
    end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
solara-0.7.4 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.7.3 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.7.2 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.7.1 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.7.0 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.6.0 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.5.0 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.4.0 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.3.0 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.2.4 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.2.3 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.2.2 solara/lib/core/scripts/solara_settings_manager.rb
solara-0.2.1 solara/lib/core/scripts/solara_settings_manager.rb