kosmos 0.0.1 → 0.0.2.pre.test2

Sign up to get free protection for your applications and to get access to all the features.
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
+