diff --git a/src/generator.license.rb b/src/generator.license.rb index eccc57b..db22961 100755 --- a/src/generator.license.rb +++ b/src/generator.license.rb @@ -6,6 +6,12 @@ license_json_path = nil public_key_path = nil private_key_path = nil features_json_path = nil +license_name="Tim Cook" +license_company="Apple Computer, Inc." +license_email="tcook@apple.com" +license_plan='ultimate' +license_user_count=2147483647 +license_expire_year=2500 require 'optparse' OptionParser.new do |opts| @@ -31,6 +37,30 @@ OptionParser.new do |opts| license_json_path = File.expand_path(v) end + opts.on("--license-name ", "Specify license name (optional) [#{license_name}]") do |v| + license_name = v + end + + opts.on("--license-company ", "Specify license company (optional) [#{license_company}]") do |v| + license_company = v + end + + opts.on("--license-email ", "Specify license email address (optional) [#{license_email}]") do |v| + license_email = v + end + + opts.on("--license-plan ", "Specify license plan (optional) [#{license_plan}(default),premium,starter]") do |v| + license_plan = v + end + + opts.on("--license-user-count ", "Specify license user count (optional) [#{license_user_count}(default)]") do |v| + license_user_count = v.to_i + end + + opts.on("--license-expire-year ", "Specify license expire year (optional) [#{license_expire_year}(default)]") do |v| + license_expire_year = v.to_i + end + opts.on("-h", "--help", "Prints this help") do puts opts exit @@ -44,6 +74,11 @@ if license_file_path.nil? || public_key_path.nil? || private_key_path.nil? exit 1 end +if license_plan != 'ultimate' && license_plan != 'premium' && license_plan != 'starter' && + puts "[!] license plan is set to #{license_plan} which is not one of [ultimate, premium, starter]" + puts "[!] use -h for help" + exit 1 +end # ========== puts "[*] loading keys..." @@ -74,29 +109,29 @@ license = Gitlab::License.new # don't use gitlab inc, search `gl_team_license` in lib for details license.licensee = { - "Name" => "Tim Cook", - "Company" => "Apple Computer, Inc.", - "Email" => "tcook@apple.com" + "Name" => license_name, + "Company" => license_company, + "Email" => license_email } # required of course license.starts_at = Date.new(1976, 4, 1) # required since gem gitlab-license v2.2.1 -license.expires_at = Date.new(2500, 4, 1) +license.expires_at = Date.new(license_expire_year, 4, 1) # prevent gitlab crash at # notification_start_date = trial? ? expires_at - NOTIFICATION_DAYS_BEFORE_TRIAL_EXPIRY : block_changes_at -license.block_changes_at = Date.new(2500, 4, 1) +license.block_changes_at = Date.new(license_expire_year, 4, 1) # required license.restrictions = { - plan: 'ultimate', + plan: license_plan, # STARTER_PLAN = 'starter' # PREMIUM_PLAN = 'premium' # ULTIMATE_PLAN = 'ultimate' - active_user_count: 2147483647, + active_user_count: license_user_count, # required, just dont overflow } @@ -105,7 +140,7 @@ license.restrictions = { # so here by we inject all features into restrictions # see scan.rb for a list of features that we are going to inject for feature in FEATURE_LIST - license.restrictions[feature] = 2147483647 + license.restrictions[feature] = license_user_count end puts "[*] validating license..."