kosmos 0.0.1 → 0.0.2.pre.test2

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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/README.md +109 -8
  4. data/bin/kosmos +6 -79
  5. data/kosmos.gemspec +4 -1
  6. data/lib/kosmos.rb +18 -4
  7. data/lib/kosmos/download_url.rb +4 -0
  8. data/lib/kosmos/git_adapter.rb +5 -3
  9. data/lib/kosmos/package.rb +41 -57
  10. data/lib/kosmos/package_attrs.rb +79 -0
  11. data/lib/kosmos/package_downloads.rb +80 -0
  12. data/lib/kosmos/packages/achievements.rb +8 -0
  13. data/lib/kosmos/packages/active_texture_management.rb +1 -1
  14. data/lib/kosmos/packages/advanced_animator.rb +9 -0
  15. data/lib/kosmos/packages/advanced_jet_engine.rb +9 -0
  16. data/lib/kosmos/packages/aerojet_kerbodyne.rb +9 -0
  17. data/lib/kosmos/packages/aies_aerospace.rb +9 -0
  18. data/lib/kosmos/packages/ambient_light_adjustment.rb +9 -0
  19. data/lib/kosmos/packages/amok_dynamics.rb +9 -0
  20. data/lib/kosmos/packages/antenna_range.rb +10 -0
  21. data/lib/kosmos/packages/asmis_eclss_mod.rb +9 -0
  22. data/lib/kosmos/packages/astronomers_visual_pack.rb +5 -0
  23. data/lib/kosmos/packages/atmospheric_sound_enhancement.rb +9 -0
  24. data/lib/kosmos/packages/auto_asparagus.rb +9 -0
  25. data/lib/kosmos/packages/aviation_lights.rb +9 -0
  26. data/lib/kosmos/packages/b9_aerospace_pack.rb +11 -0
  27. data/lib/kosmos/packages/b9_cockpit_extended.rb +9 -0
  28. data/lib/kosmos/packages/b9_iva_extension.rb +9 -0
  29. data/lib/kosmos/packages/baha_extraplanetary_parts.rb +9 -0
  30. data/lib/kosmos/packages/better_rove_mates.rb +9 -0
  31. data/lib/kosmos/packages/better_than_starting_manned.rb +9 -0
  32. data/lib/kosmos/packages/bob_catind_soviet_american_packs.rb +10 -0
  33. data/lib/kosmos/packages/bolt_on_mission_probe.rb +9 -0
  34. data/lib/kosmos/packages/cargo_transfer_bagsand_tanks.rb +9 -0
  35. data/lib/kosmos/packages/celestial_body_science_multiplier_editor.rb +9 -0
  36. data/lib/kosmos/packages/celss_greenhouse.rb +9 -0
  37. data/lib/kosmos/packages/chatterer.rb +9 -0
  38. data/lib/kosmos/packages/coffee_industries_modular_airliner.rb +9 -0
  39. data/lib/kosmos/packages/conics_configurator.rb +9 -0
  40. data/lib/kosmos/packages/connected_living_space_api.rb +9 -0
  41. data/lib/kosmos/packages/constellation_essentials.rb +9 -0
  42. data/lib/kosmos/packages/cross_feed_enabler.rb +9 -0
  43. data/lib/kosmos/packages/custom_asteroids.rb +9 -0
  44. data/lib/kosmos/packages/dang_it.rb +9 -0
  45. data/lib/kosmos/packages/dark_multi_player.rb +10 -0
  46. data/lib/kosmos/packages/davon_supply.rb +9 -0
  47. data/lib/kosmos/packages/davon_throttle_controlsystems.rb +9 -0
  48. data/lib/kosmos/packages/dmagic_orbital_science.rb +9 -0
  49. data/lib/kosmos/packages/down_under_aerospace.rb +9 -0
  50. data/lib/kosmos/packages/editor_extensions.rb +9 -0
  51. data/lib/kosmos/packages/editor_part_highlighter.rb +9 -0
  52. data/lib/kosmos/packages/engine_ignitor.rb +9 -0
  53. data/lib/kosmos/packages/fasa.rb +18 -0
  54. data/lib/kosmos/packages/flight_managerfor_reusable_stages.rb +9 -0
  55. data/lib/kosmos/packages/fus_tek_station_parts.rb +9 -0
  56. data/lib/kosmos/packages/fusebox.rb +9 -0
  57. data/lib/kosmos/packages/gimbal_auto_trim.rb +9 -0
  58. data/lib/kosmos/packages/ginger_corp_station_hubs.rb +9 -0
  59. data/lib/kosmos/packages/glow_strips.rb +9 -0
  60. data/lib/kosmos/packages/habitat_pack.rb +9 -0
  61. data/lib/kosmos/packages/hangar_extender.rb +9 -0
  62. data/lib/kosmos/packages/home_grown_rockets.rb +10 -0
  63. data/lib/kosmos/packages/hooligan_labs.rb +26 -0
  64. data/lib/kosmos/packages/hullcam_vds.rb +8 -0
  65. data/lib/kosmos/packages/kerbal_attachment_system.rb +1 -1
  66. data/lib/kosmos/packages/kerbal_engineer_redux.rb +11 -0
  67. data/lib/kosmos/packages/launch_countdown.rb +9 -0
  68. data/lib/kosmos/packages/remote_tech.rb +1 -11
  69. data/lib/kosmos/packages/void.rb +9 -0
  70. data/lib/kosmos/user_interface.rb +120 -0
  71. data/lib/kosmos/util.rb +5 -1
  72. data/lib/kosmos/version.rb +1 -1
  73. data/lib/kosmos/versioner.rb +3 -3
  74. data/lib/kosmos/web/app.rb +36 -0
  75. data/lib/kosmos/web/public/css/main.css +69 -0
  76. data/lib/kosmos/web/public/css/normalize.css +527 -0
  77. data/lib/kosmos/web/public/index.html +107 -0
  78. data/lib/kosmos/web/public/js/main.js +125 -0
  79. data/lib/kosmos/web/public/js/plugins.js +24 -0
  80. data/lib/kosmos/web/public/js/vendor/jquery-1.10.2.min.js +6 -0
  81. data/lib/kosmos/web/public/js/vendor/modernizr-2.6.2.min.js +4 -0
  82. data/lib/kosmos/web/public/js/vendor/underscore.js +5 -0
  83. data/package_generator.rb +197 -0
  84. data/spec/package_spec.rb +32 -1
  85. data/spec/spec_helper.rb +6 -0
  86. data/spec/versioner_spec.rb +2 -21
  87. metadata +113 -6
@@ -0,0 +1,79 @@
1
+ module Kosmos
2
+ module PackageAttrs
3
+ private
4
+
5
+ def self.included(base)
6
+ base.extend(Methods)
7
+ base.send(:include, Methods)
8
+ end
9
+
10
+ module Methods
11
+ def title(title = nil)
12
+ if title
13
+ @title = title
14
+ else
15
+ @title
16
+ end
17
+ end
18
+
19
+ def url(url = nil)
20
+ if url
21
+ @url = url
22
+ else
23
+ @url
24
+ end
25
+ end
26
+
27
+ def aliases(*aliases)
28
+ @aliases ||= []
29
+
30
+ if aliases.any?
31
+ @aliases = aliases
32
+ else
33
+ @aliases
34
+ end
35
+ end
36
+
37
+ def names
38
+ [title, aliases].flatten
39
+ end
40
+
41
+ def prerequisites(*prerequisites)
42
+ @prerequisites ||= []
43
+
44
+ if prerequisites.any?
45
+ @prerequisites = prerequisites
46
+ else
47
+ @prerequisites
48
+ end
49
+ end
50
+
51
+ alias_method :prerequiste, :prerequisites
52
+ alias_method :pre_requisite, :prerequisites
53
+ alias_method :pre_requisites, :prerequisites
54
+
55
+ def postrequisites(*postrequisites)
56
+ @postrequisites ||= []
57
+
58
+ if postrequisites.any?
59
+ @postrequisites = postrequisites
60
+ else
61
+ @postrequisites
62
+ end
63
+ end
64
+
65
+ alias_method :postrequiste, :postrequisites
66
+ alias_method :post_requisite, :postrequisites
67
+ alias_method :post_requisites, :postrequisites
68
+
69
+ def resolve_prerequisites
70
+ prerequisites.map { |package_name| find(package_name) }
71
+ end
72
+
73
+ def resolve_postrequisites
74
+ postrequisites.map { |package_name| find(package_name) }
75
+ end
76
+
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,80 @@
1
+ module Kosmos
2
+ module PackageDownloads
3
+ # Downloads and unzips a package. This will call #download! on its own, and
4
+ # will return the location where the package was downloaded to as a
5
+ # Pathname.
6
+ def self.download_and_unzip_package(package, opts = {})
7
+ download_file = download_package(package, opts)
8
+
9
+ Util.log "Unzipping ..."
10
+
11
+ output_path = Pathname.new(download_file.path).parent.to_s
12
+
13
+ Zip::File.open(download_file.path) do |zip_file|
14
+ zip_file.each do |entry|
15
+ destination = File.join(output_path, entry.name)
16
+ parent_dir = File.expand_path('..', destination)
17
+
18
+ FileUtils.mkdir_p(parent_dir) unless File.exists?(parent_dir)
19
+
20
+ entry.extract(destination)
21
+ end
22
+ end
23
+
24
+ File.delete(File.absolute_path(download_file))
25
+
26
+ output_path
27
+ end
28
+
29
+ # Downloads the zipfile for a package using its URL, unless a cached version
30
+ # is found first. Uses DownloadUrl to intelligently resolve download URLs.
31
+ #
32
+ # Returns the file downloaded, which is created in a temp directory.
33
+ def self.download_package(package, opts = {})
34
+ cached_download = download_from_cache(package)
35
+ downloaded_file = if cached_download
36
+ Util.log "Use a cached version of #{package.title} ..."
37
+ cached_download
38
+ else
39
+ Util.log "The package is found at #{package.url}. "\
40
+ "Finding the download URL ..."
41
+ download_url = DownloadUrl.new(package.url).resolve_download_url
42
+
43
+ Util.log "Found it. Downloading from #{download_url} ..."
44
+ HTTParty.get(download_url)
45
+ end
46
+
47
+ save_to_cache(package, downloaded_file) if opts[:cache_after_download]
48
+
49
+ tmpdir = Dir.mktmpdir
50
+
51
+ download_file = File.new(File.join(tmpdir, 'download'), 'w+')
52
+ download_file.write(downloaded_file)
53
+ download_file.close
54
+
55
+ download_file
56
+ end
57
+
58
+ private
59
+
60
+ def self.download_from_cache(package)
61
+ cache_dir = Kosmos.cache_dir
62
+ if cache_dir
63
+ cached_download = File.join(cache_dir, "#{package.title}.zip")
64
+
65
+ File.read(cached_download) if File.file?(cached_download)
66
+ end
67
+ end
68
+
69
+ def self.save_to_cache(package, downloaded_file)
70
+ Util.log "Saving #{package.title} to cache ..."
71
+
72
+ cache_dir = Kosmos.cache_dir
73
+ if cache_dir
74
+ File.open(File.join(cache_dir, "#{package.title}.zip"), 'w') do |file|
75
+ file.write(downloaded_file)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,8 @@
1
+ class Achievements < Kosmos::Package
2
+ title 'Achievements'
3
+ url 'http://blizzy.de/achievements/Achievements-1.6.0.zip'
4
+
5
+ def install
6
+ merge_directory 'Achievements-1.6.0/GameData'
7
+ end
8
+ end
@@ -1,6 +1,5 @@
1
1
  class ActiveTextureManagementBasic < Kosmos::Package
2
2
  title 'Active Texture Management - Basic'
3
- aliases 'Active Texture Management'
4
3
 
5
4
  url 'https://github.com/rbray89/ActiveTextureManagement/releases/download/3-1-basic/ActiveTextureManagement-Basic-3-1.zip'
6
5
 
@@ -11,6 +10,7 @@ end
11
10
 
12
11
  class ActiveTextureManagementAggressive < Kosmos::Package
13
12
  title 'Active Texture Management - Aggressive'
13
+ aliases 'Active Texture Management'
14
14
 
15
15
  url 'https://github.com/rbray89/ActiveTextureManagement/releases/download/3-1-aggressive/ActiveTextureManagement-3-1.zip'
16
16
 
@@ -0,0 +1,9 @@
1
+ class AdvancedAnimator < Kosmos::Package
2
+ title 'AdvancedAnimator'
3
+ url 'http://www.mediafire.com/download/q5ugt9bf4a9go75/AdvancedAnimator_v1.1.1.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AdvancedJetEngine < Kosmos::Package
2
+ title 'Advanced Jet Engine'
3
+ url 'https://www.dropbox.com/sh/v1funr72y504rz6/AACz3bnk0vM2-mY6IQY04jbfa/AJE_1.3.zip'
4
+
5
+ def install
6
+ merge_directory 'AJE', into: 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AerojetKerbodyne < Kosmos::Package
2
+ title 'Aerojet Kerbodyne'
3
+ url 'https://www.dropbox.com/s/369uwom0bspo1x8/AerojetKerbodyne1.1.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AIESAerospace < Kosmos::Package
2
+ title 'AIES Aerospace'
3
+ url 'http://www.mediafire.com/download/c8efj64k6izx6xc/AIES_Aerospace151.zip'
4
+
5
+ def install
6
+ merge_directory 'AIES_Aerospace', into: 'Parts'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AmbientLightAdjustment < Kosmos::Package
2
+ title 'Ambient Light Adjustment'
3
+ url 'http://blizzy.de/ambient-light/AmbientLightAdjustment-1.1.0.zip'
4
+
5
+ def install
6
+ merge_directory 'AmbientLightAdjustment-1.1.0/GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AMOKDynamicsStuffA < Kosmos::Package
2
+ title 'AMOK Dynamics'
3
+ url 'https://www.dropbox.com/s/ijh3obajqti1h2g/AMOK%20FuelCell%20v0.1.zip'
4
+
5
+ def install
6
+ merge_directory 'AMOK FuelCell v0.1/GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,10 @@
1
+ class AntennaRange < Kosmos::Package
2
+ title 'AntennaRange'
3
+ aliases 'antenna range'
4
+ url 'http://ksp.hawkbats.com/AntennaRange/AntennaRange-1-3.zip'
5
+
6
+ def install
7
+ merge_directory 'GameData'
8
+ end
9
+ end
10
+
@@ -0,0 +1,9 @@
1
+ class AsmisECLSSMod < Kosmos::Package
2
+ title 'Asmi\'s ECLSS Mod'
3
+ url 'https://bitbucket.org/asmi/ksp/downloads/LifeSupportMod.1.0.15.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -2,6 +2,7 @@ class AstronomersVisualPackLow < Kosmos::Package
2
2
  title 'Astronomer\'s Visual Pack - Lower Resolution'
3
3
  aliases 'astronomers visual pack - low res'
4
4
  url 'http://kerbal.curseforge.com/plugins/220335-astronomers-visual-pack-v3-beta'
5
+ prerequisites 'environmental visual enhancements'
5
6
 
6
7
  def install
7
8
  merge_directory "Astronomer's Visual Pack V3 BETA/2nd Step/128 - Lower Resolution/GameData"
@@ -13,6 +14,7 @@ class AstronomersVisualPackDefault < Kosmos::Package
13
14
  title 'Astronomer\'s Visual Pack - Default Resolution'
14
15
  aliases 'astronomers visual pack - default res', 'astronomers visual pack'
15
16
  url 'http://kerbal.curseforge.com/plugins/220335-astronomers-visual-pack-v3-beta'
17
+ prerequisites 'environmental visual enhancements'
16
18
 
17
19
  def install
18
20
  merge_directory "Astronomer's Visual Pack V3 BETA/2nd Step/256 - Default Resolution/GameData"
@@ -24,6 +26,7 @@ class AstronomersVisualPackHigher < Kosmos::Package
24
26
  title 'Astronomer\'s Visual Pack - Higher Resolution'
25
27
  aliases 'astronomers visual pack - higher res'
26
28
  url 'http://kerbal.curseforge.com/plugins/220335-astronomers-visual-pack-v3-beta'
29
+ prerequisites 'environmental visual enhancements'
27
30
 
28
31
  def install
29
32
  merge_directory "Astronomer's Visual Pack V3 BETA/2nd Step/512 - Higher Resolution (recommended)/GameData"
@@ -35,6 +38,7 @@ class AstronomersVisualPackHigh < Kosmos::Package
35
38
  title 'Astronomer\'s Visual Pack - High Resolution'
36
39
  aliases 'astronomers visual pack - high res'
37
40
  url 'http://kerbal.curseforge.com/plugins/220335-astronomers-visual-pack-v3-beta'
41
+ prerequisites 'environmental visual enhancements'
38
42
 
39
43
  def install
40
44
  merge_directory "Astronomer's Visual Pack V3 BETA/2nd Step/1024 - High Resolution/GameData"
@@ -46,6 +50,7 @@ class AstronomersVisualPackPushIt < Kosmos::Package
46
50
  title 'Astronomer\'s Visual Pack - Push It To The Limit Resolution'
47
51
  aliases 'astronomers visual pack - push it to the limit res'
48
52
  url 'http://kerbal.curseforge.com/plugins/220335-astronomers-visual-pack-v3-beta'
53
+ prerequisites 'environmental visual enhancements'
49
54
 
50
55
  def install
51
56
  merge_directory "Astronomer's Visual Pack V3 BETA/2nd Step/1500 - PushItToTheLimit Resolution/GameData"
@@ -0,0 +1,9 @@
1
+ class AtmosphericSoundEnhancement < Kosmos::Package
2
+ title 'Atmospheric Sound Enhancement'
3
+ url 'http://kerbal.curseforge.com/ksp-mods/221011-atmospheric-sound-enhancement'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AutoAsparagus < Kosmos::Package
2
+ title 'AutoAsparagus'
3
+ url 'http://kerbal.curseforge.com/plugins/220452-autoasparagus'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class AviationLights < Kosmos::Package
2
+ title 'Aviation Lights'
3
+ url 'http://www.mediafire.com/download/x1v4wfi6bl2tllu/Aviation_Lights_v3.6.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -1,6 +1,7 @@
1
1
  class B9AerospacePack < Kosmos::Package
2
2
  title 'B9 Aerospace Pack'
3
3
  aliases 'b9', 'b9 aerospace'
4
+ postrequisites 'b9 fix', 'b9 modzero'
4
5
 
5
6
  url 'http://www.mediafire.com/download/o6cbe03iitggj1p/B9+Aerospace+Pack+R4.0c.zip'
6
7
 
@@ -20,3 +21,13 @@ class B9Aerospace0235Fix < Kosmos::Package
20
21
  merge_directory 'B9 KSP 0.23.5/GameData'
21
22
  end
22
23
  end
24
+
25
+ class B9AerospaceModZeroFix < Kosmos::Package
26
+ title 'ModZero B9 Aerospace Fixes'
27
+ aliases 'b9 modzero fixes', 'b9 modzero'
28
+ url 'https://www.dropbox.com/s/peq187l1ajc3mst/ModZeroB9Fixes.zip'
29
+
30
+ def install
31
+ merge_directory 'GameData'
32
+ end
33
+ end
@@ -0,0 +1,9 @@
1
+ class B9S2CockpitExtended2RearSeats < Kosmos::Package
2
+ title 'B9 Cockpit Extended'
3
+ url 'https://www.dropbox.com/s/6mo49zzf0dlryn1/B9S2Extended.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class B9IVAExtension < Kosmos::Package
2
+ title 'B9 IVA Extension'
3
+ url 'http://www.mediafire.com/download/x64zpyd65toepcc/B9_IVA_Extension_0.5.1.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class BahaExtraplanetaryParts < Kosmos::Package
2
+ title 'Baha Extraplanetary Parts'
3
+ url 'http://www.mediafire.com/download/cyn3bnpsy9p0z4g/bahaELpartsv1.2.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class BetterRoveMates < Kosmos::Package
2
+ title 'Better RoveMates'
3
+ url 'http://kerbal.curseforge.com/parts/220209-betterrovemates'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ class BetterThanStartingManned < Kosmos::Package
2
+ title 'Better Than Starting Manned'
3
+ url 'http://www.mediafire.com/download/2u47fyvueaweax3/BTSM1-56.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+
@@ -0,0 +1,10 @@
1
+ class BobCatindSovietAmericanPacks < Kosmos::Package
2
+ title 'BobCat Ind Soviet-American Packs'
3
+ url 'http://www.mediafire.com/?v75377195a0qhhv'
4
+
5
+ def install
6
+ merge_directory 'Soviet Pack ver1.9.1b/GameData'
7
+ merge_directory 'Soviet Pack ver1.9.1b/Ships'
8
+ merge_directory 'Soviet Pack ver1.9.1b/Subassemblies'
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ class BoltOnMissionProbe < Kosmos::Package
2
+ title 'Bolt-On Mission Probe'
3
+ url 'https://github.com/jinks/BOMPs/releases/download/v0.23.5/BOMPs-0.23.5.zip'
4
+
5
+ def install
6
+ merge_directory 'GameData'
7
+ end
8
+ end
9
+