Skip to content

Commit

Permalink
Merge pull request #20 from FMotalleb/patch-2
Browse files Browse the repository at this point in the history
Feat: added more arguments to `generator.license.rb`
  • Loading branch information
Lakr233 authored Oct 30, 2024
2 parents 9dfdf75 + facf458 commit 78f428e
Showing 1 changed file with 58 additions and 10 deletions.
68 changes: 58 additions & 10 deletions src/generator.license.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
public_key_path = nil
private_key_path = nil
features_json_path = nil
license_name="Tim Cook"
license_company="Apple Computer, Inc."
license_email="[email protected]"
license_plan='ultimate'
license_user_count=2147483647
license_expire_year=2500

require 'optparse'
OptionParser.new do |opts|
Expand All @@ -31,6 +37,30 @@
license_json_path = File.expand_path(v)
end

opts.on("--license-name NAME", "Specify license name (optional) [#{license_name}]") do |v|
license_name = v
end

opts.on("--license-company COMPANY", "Specify license company (optional) [#{license_company}]") do |v|
license_company = v
end

opts.on("--license-email EMAIL-ADDRESS", "Specify license email address (optional) [#{license_email}]") do |v|
license_email = v
end

opts.on("--license-plan PLAN", "Specify license plan (optional) [#{license_plan} (default), premium, starter]") do |v|
license_plan = v
end

opts.on("--license-user-count COUNT", "Specify license user count (optional) [#{license_user_count} (default)]") do |v|
license_user_count = v.to_i
end

opts.on("--license-expire-year 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
Expand All @@ -44,6 +74,24 @@
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

if Time.now.year > license_expire_year
puts "[!] license expiry year is set to #{license_expire_year} which is less than current year, this value must be greater than current year"
puts "[!] use -h for help"
exit 1
end

if license_user_count < 1
puts "[!] license user count is set to #{license_user_count} which is less minumum user count possible"
puts "[!] use -h for help"
exit 1
end

# ==========

puts "[*] loading keys..."
Expand All @@ -59,7 +107,7 @@
puts "[*] loading features from #{features_json_path}"
require 'json'
FEATURE_LIST = JSON.parse(File.read(features_json_path))
else
else
FEATURE_LIST = []
end
puts "[*] total features to inject: #{FEATURE_LIST.size}"
Expand All @@ -74,29 +122,29 @@

# don't use gitlab inc, search `gl_team_license` in lib for details
license.licensee = {
"Name" => "Tim Cook",
"Company" => "Apple Computer, Inc.",
"Email" => "[email protected]"
"Name" => license_name,
"Company" => license_company,
"Email" => license_email
}

# required of course
license.starts_at = Date.new(1976, 4, 1)

puts Date.new()
# 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
}

Expand All @@ -105,7 +153,7 @@
# 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..."
Expand Down

0 comments on commit 78f428e

Please sign in to comment.